推薦系統中相似度計算可以說是基礎中的基礎了,因為基本所有的推薦演算法都是在計算相似度,使用者相似度或者物品相似度,這裡羅列一下各種相似度計算方法和適用點
similarity
=cos(θ
)=a⋅
b∥a∥
∥b∥=
∑i=1
nai×
bi∑i
=1n(
ai)2
−−−−
−−−√
×∑i=
1n(b
i)2−
−−−−
−−√
這個基本上是最常用的,最初用在計算文字相似度效果很好,一般像tf-idf一下然後計算,推薦中在協同過濾以及很多演算法中都比其他相似度效果理想。
由於余弦相似度表示方向上的差異,對距離不敏感,所以有時候也關心距離上的差異會先對每個值都減去乙個均值,這樣稱為調整余弦相似度d(
x,y)
:=(x1
−y1)
2+(x
2−y2
)2+⋯
+(xn
−yn)
2−−−
−−−−
−−−−
−−−−
−−−−
−−−−
−−−−
−−−−
−√=∑
i=1n
(xi−
yi)2
−−−−
−−−−
−−√
基本上就是兩個點的空間距離,下面這個圖就能很明顯的說明他和余弦相似度區別,歐式距離更多考慮的是空間中兩條直線的距離,而余弦相似度關心的是空間夾角。所以
歐氏距離能夠體現個體數值特徵的絕對差異,所以更多的用於需要從維度的數值大小中體現差異的分析,如使用使用者行為指標分析使用者價值的相似度或差異。余弦距離更多的是從方向上區分差異,而對絕對的數值不敏感,更多的用於使用使用者對內容評分來區分興趣的相似度和差異,同時修正了使用者間可能存在的度量標準不統一的問題(因為余弦距離對絕對數值不敏感)。
√ 其實這個就是前面講的調整的余弦相似度,因為在推薦系統中均值分為使用者的均值和物品的均值,這裡相當於是物品的均值。這個也是比較常用的。
斯皮爾曼相關係數(spearman rank correlation)被定義成 等級變數之間的皮爾遜相關係數。[1] 對於樣本容量為 n的樣本, n個 原始資料 xi
,yi 被轉換成等級資料 xi
,yi , 相關係數ρ為ρ=
∑i(x
i−x¯
)(yi
−y¯)
∑i(x
i−x¯
)2∑i
(yi−
y¯)2
−−−−
−−−−
−−−−
−−−−
−−−√
實際應用中, 變數間的鏈結是無關緊要的, 於是可以通過簡單的步驟計算 ρ.[1][2] 被觀測的兩個變數的等級的差值 di
=xi−
yi, 則 ρ 為ρ=
1−6∑
d2in
(n2−
1)看乙個維基百科的例子:
智商, xi
每週花在電視上的小時數, yi
等級 xi
等級yi
did2
i 860
1100
972026
-416
992838
-525
1002747
-3910150510
-525
1032969
-39106773
4161101785
39112692
74911312104
636根據 d2
i 計算 ∑d
2i=194
。 樣本容量n為 10。 將這些值帶入方程ρ=
1−6×
19410(10
2−1)
得 ρ = −0.175757575…
這個值很小表明上述兩個變數的關係很小。 原始資料不能用於此方程中,相應的, 應使用皮爾遜相關係數計算等級。
我們發現這個思路是不考慮資料本身,只考慮變數間的排名順序,理論上src可以避免對rating進行標準化的問題
計算兩個使用者在打分中均方差,表現比pc差,因為它沒有考慮到使用者偏好或產品的被欣賞程度之間的負相關。
有**比較過pc的mae 要優於 msd 和srcj(
x,y)
=|x∩
y||x
|u|y
| 意思是兩個集合的交集除以並集,比如文字相似度可以用出現相同詞個數進行計算。
相似度計算方法
pearson 相關係數是用協方差除以兩個變數的標準差得到的,雖然協方差能反映兩個隨機變數的相關程度 協方差大於0的時候表示兩者正相關,小於0的時候表示兩者負相關 但其數值上受量綱的影響很大,不能簡單地從協方差的數值大小給出變數相關程度的判斷。為了消除這種量綱的影響,於是就有了相關係數的概念。由上圖...
相似度計算方法
1.余弦相似度 在平面系 a向量與b向量的夾角越小,說明相似度越大,余弦值越接近1,就表明夾角越接近0度,也就是兩個向量越相似,這就叫 余弦相似性 在三維也是乙個道理 x,y,z 確定的一點與點 a,b,c 一點的夾角 高中學過向量a與向量b的乘積定義為 所以兩者的夾角為 cos a b a b 分...
mysql資料相似度演算法 相似度計算方法
相似度就是比較兩個事物的相似性。一般通過計算事物的特徵之間的距離,如果距離小,那麼相似度大 如果距離大,那麼相似度小。問題定義 有兩個物件x,y,都包含n維特徵,x x1,x2,x3,xn y y1,y2,y3,yn 計算x和y的相似性。閔可夫斯基距離 minkowski distance 曼哈頓距...