幾種距離的集中比較

提到檢索的方法,比如KNN算法,這些都需要用到“距離”這個尺度去度量兩者的近似程度。但是,距離也有很多種,除了我們熟悉的歐氏距離之外,其實還有很多。。。

餘弦距離:

是一種衡量兩個向量相關程度的尺度。利用兩個向量的餘弦值,由於在0到90度之間,的值爲減函數,所以當cos(theta)值越大,theta值越小。體現的是兩個向量方向上的差異。對數值絕對值不敏感。








對於向量x=(x1,x2,x3,...,xn)和向量y=(y1,y2,y3,...yn)之間的夾角:




其更注重兩個向量方向的夾角之間的距離,而不是歐氏距離裏的直接距離。





歐氏距離與餘弦距離:

歐氏距離能夠體現個體數值特徵的絕對差異,所以更多的用於需要從維度的數值大小中體現差異的分析,如使用用戶行爲指標分析用戶價值的相似度或差異;而餘弦相似度更多的是從方向上區分差異,而對絕對的數值不敏感,更多的用於使用用戶對內容評分來區分用戶興趣的相似度和差異,同時修正了用戶間可能存在的度量標準不統一的問題(因爲餘弦相似度對絕對數值不敏感)。

明可夫斯基距離(Minkowski Distance)

明氏距離是歐氏距離的推廣,是對多個距離度量公式的概括性的表述。公式如下:

p可以取任意正整數。

 



皮爾森相關係數(Pearson Correlation Coefficient):

即相關分析中的相關係數r,分別對X和Y基於自身總體標準化後計算空間向量的餘弦夾角。公式如下:





Jaccard相似係數(Jaccard Coefficient)

Jaccard係數主要用於計算符號度量或布爾值度量的個體間的相似度,因爲個體的特徵屬性都是由符號度量或者布爾值標識,因此無法衡量差異具體值的大小,只能獲得“是否相同”這個結果,所以Jaccard係數只關心個體間共同具有的特徵是否一致這個問題。如果比較X與Y的Jaccard相似係數,只比較xn和yn中相同的個數,公式如下:






針對餘弦相似度對數值大小的不敏感,出現了修正餘弦相似度(Adjusted cosine similaarity):每個數值都減去一個自己的均值,這樣歸一化後,可以使得向量夾角的距離變得符合現實。

雖然餘弦相似度對個體間存在的偏見可以進行一定的修正,但是因爲只能分辨個體在維之間的差異,沒法衡量每個維數值的差異,會導致這樣一個情況:比如用戶對內容評分,5分制,X和Y兩個用戶對兩個內容的評分分別爲(1,2)和(4,5),使用餘弦相似度得出的結果是0.98,兩者極爲相似,但從評分上看X似乎不喜歡這2個內容,而Y比較喜歡,餘弦相似度對數值的不敏感導致了結果的誤差,需要修正這種不合理性,就出現了調整餘弦相似度,即所有維度上的數值都減去一個均值,比如X和Y的評分均值都是3,那麼調整後爲(-2,-1)和(1,2),再用餘弦相似度計算,得到-0.8,相似度爲負值並且差異不小,但顯然更加符合現實。

哈明距離(漢明距離)

漢明距離是使用在數據傳輸差錯控制編碼裏面的,漢明距離是一個概念,它表示兩個(相同長度)字對應位不同的數量,我們以d(x,y)表示兩個字x,y之間的漢明距離。對兩個字符串進行異或運算,並統計結果爲1的個數,那麼這個數就是漢明距離。

比如:

1011101 與 1001001 之間的漢明距離是 2。

2143896 與 2233796 之間的漢明距離是 3。

"toned" 與 "roses" 之間的漢明距離是 3。

這種方法往往可以進行一定的模板匹配,計算與模板的接近程度。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章