(資料探勘 入門 2)相似度衡量的方法

2021-09-07 02:49:27 字數 2663 閱讀 4141

主要內容:

1、距離度量

2、皮爾遜關係係數

3、cosine相似度

4、方法的選擇

距離度量是最簡單的衡量相似度的方法,公式如下:

當r=1時,為曼哈頓距離(manhattan distance);

當r=2時,為歐幾里得距離(euclidean distance);

優點:簡單

缺點:當資料某些屬性或特徵缺失時,該度量結果不準確

**:

def

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

有時候,每個人的判斷標準不一樣,例如在給物品打分(1-5)時,有的人的打分範圍為4-5,而有的人為1-5,而他們其實的評價結果是一樣的。

但如果通過上述的距離度量的話,那麼這兩個人的相似度則會相差甚遠,因此需要一種類似歸一化的方法來解決。

公式如下:

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 ...