相似度演算法主要任務是衡量物件之間的相似程度,是資訊檢索、推薦系統、資料探勘等的乙個基礎性計算。下面重點介紹幾種比較常用的相似度演算法。
向量表示
通常假設物件x和y都具有n維的特徵,即
x=(x_1,x_2,…x_n) y=(y_1,y_2,…y_n)
item1=(0,1,1) item2=(1,0,1)
歐式距離相似度演算法需要保證各個維度指標在相同的刻度級別,比如對身高、體重兩個單位不同的指標使用歐氏距離可能使結果失效。
並且,歐氏距離適合比較稠密的矩陣。
增量計算說明:
•【在計算增量時候,|x|+|y|必然會增大】
•當|x*y|都出現時候,|x|+|y|至少增加了2,兩項抵消,最多是相等,否則分母變大,值會變小
•當|x*y|只出現其中乙個,|x+y|至少增加 1,依然是分母變大,值變小。
•規律,隨著增量的增加,該公式一定會讓出現的相似度減小。相反,沒有再出現的物品,x,y,反倒相似度維持不變
資料稀疏性強,就考慮用夾角余弦相似度演算法
缺點:余弦相似度受到向量的平移影響,上式如果將x平移到x+1,余弦值就會改變【即當各個物件的評分指標不一致的時候,余弦相似度不能穩定刻畫其相似,這種情況下使用皮爾遜相似度會更好】
計算相對比較複雜,只能應用於帶評分的場景,對不同刻度的評分(如乙個物件評分集中在
4分,另乙個集中在
3分)衡量相似度時具有良好的效果。
在計算相似度時採用了這種方法,近似的可以把最後乙個帶
n的去掉(預設
n很大,作為分母幾乎趨近於
0)。出現一次的計為
1,出現多次的統一計為
2.應用於元素值為1或者0的向量。
當計算與a相似物件的相似值的時候, 如a與x,y之間的相似,則計算公式為
計算結果不是特別準,適用於資料量非常龐大,對若干物件的近似估計
對比前面的余弦相似,余弦相似也可以表示為
這裡即為對每乙個值的累加時考慮了使用者的因素。
樣本資料
測試結果
召回率 = 推薦被購買的商品總數 / 測試集商品數
當**商品足夠多時,相似度演算法已經成為傳說~~恩 對,只是傳說而已。
然而在博主實際專案使用中發現,可以根據相似度矩陣的稀疏程度,對k取閾值,多種相似度演算法協同使用~~~在此基礎之上後 續可以考慮增加商業因子進行二次排序~~空間很大,看你能觸控到多少~
推薦系統中相似度演算法介紹及效果測試
相似度演算法主要任務是衡量物件之間的相似程度,是資訊檢索 推薦系統 資料探勘等的乙個基礎性計算。下面重點介紹幾種比較常用的相似度演算法。向量表示 通常假設物件x和y都具有n維的特徵,即 x x 1,x 2,x n y y 1,y 2,y n item1 0,1,1 item2 1,0,1 歐式距離相...
推薦演算法中的 相似度計算
對使用者的行為進行分析得到使用者的偏好後,可以根據使用者的偏好計算相似使用者和物品,然後可以基於相似使用者或物品進行推薦。這就是協同過濾中的兩個分支了,即基於使用者的協同過濾和基於物品的協同過濾。關於相似度的計算,現有的幾種方法都是基於向量 vector 的,其實也就是計算兩個向量的距離,距離越近相...
文字相似度演算法介紹
levenshteindistance spacysimilarity jaccardsimilarity levenshtein distance是表徵或度量兩段字串的差異度的概念,以單詞kitten和sitting為例,定義 替換 substitution 插入 insert 和刪除 delet...