主要內容:
1、距離度量
2、皮爾遜關係係數
3、cosine相似度
4、方法的選擇
距離度量是最簡單的衡量相似度的方法,公式如下:
當r=1時,為曼哈頓距離(manhattan distance);
當r=2時,為歐幾里得距離(euclidean distance);
優點:簡單
缺點:當資料某些屬性或特徵缺失時,該度量結果不準確
**:
def有時候,每個人的判斷標準不一樣,例如在給物品打分(1-5)時,有的人的打分範圍為4-5,而有的人為1-5,而他們其實的評價結果是一樣的。minskowski(rating1,rating2,r):
distance=0
commonratings=flase
for key in
rating1:
for key in
rating2:
distance+=pow(abs(rating1[key]-rating2[key]),r)
commonratings=true
ifcommonratings:
return pow(distance,1/r)
else
:
return 0 #
indicates no ratings in common
但如果通過上述的距離度量的話,那麼這兩個人的相似度則會相差甚遠,因此需要一種類似歸一化的方法來解決。
公式如下:
r範圍為-1~1
在實際**實現中,也可以寫成下面的形式,這樣子就只需要遍歷一遍資料即可。
在距離度量中提到,特徵空間往往都是稀疏的,如果通過距離去度量相似性的話,會出現不準確的結果。
因此,cosine相似度計算可以解決這個問題,因為它會忽略0值的計算,公式如下:
如果資料是密集dense,那麼可以用距離度量;
如果資料是稀疏的sparse,那麼可以用cosine度量;
如果資料尺度不一致,那麼可以用pearson度量;
BM25相似度與余弦相似度的對比
在進一步討論相關度和評分之前,我們會以乙個更高階的話題結束本章節的內容 可插拔的相似度演算法 pluggable similarity algorithms elasticsearch 將 實用評分演算法 作為預設相似度演算法,它也能夠支援其他的一些演算法,這些演算法可以參考 相似度模組 文件。能與...
初學hadoop之一 相似度計算(余弦距離)
一 問題 老師給我們留的作業就是求乙個或多個txt檔案中任意兩行的距離 余弦 jacard 歐式距離都行 txt檔案中每一行是中文英文還是數字都不限。下面 的我做測試用的資料格式是這樣的 1,前面的1為行號,後面 裡的內容為真正要計算距離的某一行至,每個值之間用空格隔開。二 余弦距離 網上關於余弦距...
48 相似度為 K 的字串
題目描述 如果可以通過將 a 中的兩個小寫字母精確地交換位置 k 次得到與 b 相等的字串,我們稱字串 a 和 b 的相似度為 k k 為非負整數 給定兩個字母異位詞 a 和 b 返回 a 和 b 的相似度 k 的最小值。示例 1 輸入 a ab b ba 輸出 1 示例 2 輸入 a abc b ...