白話總結《餘弦相似度vs歐式距離&缺陷》
之前相似度計算很模糊,趁著休息總結一下,以便使用時更針對業務需要。
餘弦相似度
公式中p和q是兩個向量。
餘弦相似度需要對兩個向量的長度做歸一化,然後度量兩個向量的方向,與向量的長度無關。也就是說,兩個向量只要方向一致,無論長度、程度如何,都視作“相似”。即“餘弦相似度對具體數值的絕對值大小不敏感”
這會產生一個問題,如果A使用者對兩個商品打分是1,2,B是4,5。由於餘弦相似度只關注方向的差異,忽略具體數值的大小,故他們兩個的餘弦相似度達到0.98,這和實際的情況不符,使用者A明顯不喜歡這兩個商品。即,傳統的餘弦相似度對行為矩陣判別比較好,但是對打分矩陣經常有不好的效果。
可以使用:
調整的餘弦相似度(Adjusted Cosine Similarity)。調整的方法很簡單,就是先計算向量每個維度上的均值,然後每個向量在各個維度上都減去均值後,再計算餘弦相似度。
前面這個小例子,用調整的餘弦相似度計算得到的相似度是 -0.1,呈現出兩個使用者口味相反,
和直覺相符。
歐式距離:
只關注具體數值特徵的絕對差異,從個體向量不同維度的數值大小中體現差異。如使用使用者行為指標分析使用者價值的相似度或差異。
舉個例子:
歌手大賽,三個評委給三個歌手打分,第一個評委的打分(10,8,9), 第二個評委的打分(4,2,3),第三個評委的打分(8,10,9),如果採用餘弦相似度來看每個評委的差異,雖然每個評委對同一個選手的評分不一樣,但第一、第二兩個評委對這三位歌手實力的排序是一樣的,只是第二個評委對滿分有更高的評判標準,說明第一、第二個評委對音樂的品味上是一致的。
因此,如果只考慮相對大小的排序,那麼用餘弦相似度來看,第一、第二個評委為一類人,第三個評委為另外一類。
如果採用歐氏距離, 第一和第三個評委的歐氏距離更近,就分成一類人了,但其實不太合理,因為他們對於三位選手的排名都是完全顛倒的。
如果考慮具體數值的大小,那麼第二個評委打分都很低,其實反應的是對三個歌手都不喜歡,那麼就要用修正的餘弦相似度。
故:具體的業務場景具體分析。