目錄
1. 基於用戶的協同過濾
協同過濾算法通常是對一大羣人進行搜索,並從中找出與我們品味想近的一小羣人。算法會對這些人所偏愛對其他內容進行考查,並將他們組合起來構造出一個經過排名的推薦列表。
1.1 相似度評價值
既然要找到品味方面的相似度,就需要將個體與其他人進行比較,並計算他們的相似度評價值;
1.1.1 歐幾里得距離:
這個比較簡單,採用歐幾里得度量方法即可:
1.1.2 皮爾遜相關度:
該相關係統是判斷兩組數據與某一直線的擬合程度的一種度量。公式較複雜,皮爾遜相關度修正了誇大分值,它在數據不是很規範的情況下會傾向於給出更好的結果,如:影評者對影評的評價總是相對於平均水平偏離很大。
皮爾遜相關度評價算法首先會找出兩位評論者都曾評價過的物品,然後計算兩者的評分總和與平方和,並求得評分的成績和。最後算法利用這些計算結果計算出皮爾遜相關係數。
皮爾遜的相關性係數可以看爲協方差與標準差的商。
1.1.3 曼哈頓距離算法
就是用曼哈頓距離(出租車距離)來度量兩者的相似性。
1.1.4 Jaccard係數
用於比較有限樣本集之間的相似性與差異性。Jaccard係數值越大,樣本相似度越高。
還可以用於文本相似性、序列相似性,非常適合數據集只有0、1兩組取值的數據集。另外可以瞭解下Tanimoto係數,又稱谷本系數。
1.1.5 餘弦相似度
通過測量兩個向量的夾角的餘弦值來度量它們之間的相似性。餘弦相似度通常用於正空間,因此給出的值爲0到1之間,值越大相似性越大。
1.2 推薦物品
只單單通過相似度最高的人來推薦太隨意了,有時可能會出問題,所以我們採用加權的方法進行打分,比如下表中的(S.影片名)則表示加權後的評分。同時爲了防止個別影片評論人數過多導致加權評價值綜合過高,我們採用總值除以Sim.Sum(與被推薦人的相似度和)來修正這個問題。即通過加權取平均的方式進行打分:
評論者 | 相似度 | 肖生克 | S.肖生克 | 復聯3 | S.復聯3 | 頭號玩家 | S.頭號玩家 |
---|---|---|---|---|---|---|---|
小白 | 0.90 | 8.70 | 7.83 | 9.10 | 8.19 | 9.20 | 8.28 |
小蘭 | 0.50 | 6.70 | 3.35 | 8.00 | 4.00 | 7.40 | 4.20 |
小綠 | 0.60 | 7.20 | 4.32 | 9.20 | 5.52 | ||
小黑 | 0.30 | 8.30 | 2.49 | 6.10 | 1.83 | ||
總計 | 17.99 | 14.02 | 18 | ||||
Sim.Sum | 2.3 | 1.7 | 2.0 | ||||
總計/Sim.Sum | 7.82 | 8.24 | 9 |
2. 基於物品的協同過濾
在擁有大規模數據的情況下,基於物品的協同過濾能夠更好得到結論,而且它允許我們將大量計算任務預先執行,從而使需要給予推薦的用戶能夠更快地得到他們所要的結果。
總體思路:
- 爲每件物品預先計算好最爲相近的其他物品
- 查看用戶的歷史評分物品,並從中選出排名靠前者(綜合各方面進行排名)
- 構造加權列表,包含與選中物品最爲相近的其他物品
物品間的比較不會想用戶間的比較那麼頻繁變化。
3. 兩種協同過濾比較
- 基於物品進行過濾速度更快;
- 基於用戶進行過濾更容易實現;
- 對於稀疏數據集,基於物品通常優於基於用戶的過濾方法;
- 對於密集型,兩者效果幾乎一樣。