AI產(chǎn)品經(jīng)理必修——揭開算法的面紗(余弦定理)
余弦定理作為初中課本就學(xué)過的知識(shí),AI產(chǎn)品經(jīng)理將會(huì)把它運(yùn)用到相似度計(jì)算當(dāng)中。
世界上有些事物的聯(lián)系常常超出人們的想象。
在數(shù)據(jù)采集及大數(shù)據(jù)處理的時(shí)候,數(shù)據(jù)排重、相似度計(jì)算是很重要的一個(gè)環(huán)節(jié),由此引入相似度計(jì)算算法。
但你知道我們在初中課本中學(xué)過的余弦定理是如何完成相似度計(jì)算的嗎?
要揭開謎底,我們先來“三步走”。
一、TF-IDF單文本詞匯頻率/逆文本頻率值
1. 單文本詞匯頻率(TF: Term Frequency,是詞頻一詞的英文縮寫)
即一個(gè)詞在文中出現(xiàn)的次數(shù)。具體地講,如果一個(gè)查詢包含n個(gè)關(guān)鍵詞,它們在一個(gè)特定網(wǎng)頁中的詞頻分別是: TF1……TFn。
那么,這個(gè)查詢和該網(wǎng)頁的相關(guān)性(即相似度)就是:T1+T2+…+Tn。
2. 逆文本頻率指數(shù)(Inverse Document Frequency,縮寫為IDF)
在詞頻的基礎(chǔ)上,要對每個(gè)詞分配一個(gè)“重要性”權(quán)重。
最常見的詞(“的”、“是”、“在”)給予最小的權(quán)重,較常見的詞(“中國”“北京”)給予較小的權(quán)重,較少見的詞(可能就是文章的主題詞)給予較大的權(quán)重。
這個(gè)權(quán)重叫做“逆文本頻率”,它的大小與一個(gè)詞的常見程度成反比。
概括地講,假定一個(gè)關(guān)鍵詞w在Dw個(gè)網(wǎng)頁中出現(xiàn)過,那么Dw越大,w的權(quán)重越小,反之亦然。它的公式為logD/Dw,其中D是全部網(wǎng)頁數(shù)。
二、特征向量
先看一下特征向量的嚴(yán)格定義吧:
特征向量是數(shù)學(xué)學(xué)科中的一個(gè)專業(yè)名詞,即線性變換的特征向量(本征向量)是一個(gè)非退化的向量。其方向在該變換下不變,該向量在此變換下縮放的比例稱為其特征值(本征值)。
一個(gè)線性變換通??梢杂善涮卣髦岛吞卣飨蛄客耆枋?,相同特征值的特征向量集合稱之為特征空間。
嗯,這段話看看就好了。我們知道特征向量是有方向的就好了。
接下來我們看看如何把一篇文章或一段話或一句話轉(zhuǎn)換成特征向量。
首先,我們需要有一個(gè)詞匯表,比如是這樣的64000個(gè)詞:
其次,我們需要把輸入的文章或是段落或是語句進(jìn)行分詞。目前市面常用的分詞器有很多,比如結(jié)巴分詞器、hanlp分詞器等,每種分詞器都有自己的優(yōu)缺點(diǎn),我們知道可以利用第三方的分詞工具幫助我們分詞就好了。
然后,就是最重要的一步,結(jié)合分詞結(jié)果,得到一個(gè)64000維的向量,比如是這樣的:
好了,現(xiàn)在對于每一個(gè)輸入,無論這篇文章多長,我們都能得到這樣一個(gè)向量。
例如向量1:[0,0.0034,0,0.00052,0…,0.034,…0.075]。
至此,我們已經(jīng)完成了最重要的一步,把一篇篇文章變成一串串?dāng)?shù)字。是不是很有意思?
三、余弦定理:向量距離的度量
好了,回顧一下余弦定理。
只看夾角A。
如果把三角形的兩邊b和c看成是兩個(gè)以A為起點(diǎn)的向量,那么上述公式等價(jià)于:
現(xiàn)在以兩篇文章為例,說明是如何進(jìn)行計(jì)算的。
加入文章1和文章1對應(yīng)的向量分別是x1,x2,…,x64000和y1,y2,…,y64000。
那么他們夾角的余弦等于:
計(jì)算所得的余弦取值在0和1之間,也就是說夾角在0度到90度之間。
現(xiàn)在,結(jié)論閃亮登場:
- 當(dāng)兩篇文章向量夾角的余弦等于1時(shí),這兩個(gè)向量的夾角為零,兩篇文章完全相同;
- 當(dāng)夾角的余弦接近于1時(shí)兩篇文章相似,從而可以歸成一類;
- 夾角的余弦越小,夾角越大,兩篇文章越不相關(guān);
- 當(dāng)兩個(gè)向量正交時(shí)(90度),夾角的余弦為零,說明兩篇文章根本沒有相同的主題詞,它們毫不相關(guān)。
四、余弦定理總結(jié)
余弦定理:通過對兩個(gè)文本分詞,TF-IDF算法向量化,對比兩者的余弦夾角,夾角越小相似度越高,但由于有可能一個(gè)文章的特征向量詞特別多導(dǎo)致整個(gè)向量維度很高,使得計(jì)算的代價(jià)太大不適合大數(shù)據(jù)量的計(jì)算。
余弦定理的應(yīng)用非常廣泛,我們在做智能問答系統(tǒng)中就用到余弦定理做問題的相似度計(jì)算。
大概原理是這樣:用戶輸入問題1,系統(tǒng)對語料庫中的問題進(jìn)行相似度計(jì)算,找出相似度最高的問題2,然后輸出問題2的答案。
可以看看下面的例子:
情況1:完全相同
情況2:相似
情況3:不相關(guān)
本文由@CARRIE 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于CC0協(xié)議
有意思
作為一個(gè)技術(shù)小白,可太喜歡這類文章了,太有趣了,抽象成數(shù)學(xué)問題,通過簡單的指標(biāo)進(jìn)行判斷,amazing!!
是的呀,完全是打開了另一扇門!