集體智慧編程——協同過濾

 

目錄

1. 基於用戶的協同過濾

1.1 相似度評價值

1.1.1 歐幾里得距離:

1.1.2 皮爾遜相關度:

1.1.3 曼哈頓距離算法

1.1.4 Jaccard係數

1.1.5 餘弦相似度

1.2 推薦物品

2. 基於物品的協同過濾

3. 兩種協同過濾比較


1. 基於用戶的協同過濾

協同過濾算法通常是對一大羣人進行搜索,並從中找出與我們品味想近的一小羣人。算法會對這些人所偏愛對其他內容進行考查,並將他們組合起來構造出一個經過排名的推薦列表。 

1.1 相似度評價值

既然要找到品味方面的相似度,就需要將個體與其他人進行比較,並計算他們的相似度評價值;

1.1.1 歐幾里得距離:

這個比較簡單,採用歐幾里得度量方法即可:

d(x,y):={\sqrt  {(x_{1}-y_{1})^{2}+(x_{2}-y_{2})^{2}+\cdots +(x_{n}-y_{n})^{2}}}={\sqrt  {\sum _{{i=1}}^{n}(x_{i}-y_{i})^{2}}}

1.1.2 皮爾遜相關度:

該相關係統是判斷兩組數據與某一直線的擬合程度的一種度量。公式較複雜,皮爾遜相關度修正了誇大分值,它在數據不是很規範的情況下會傾向於給出更好的結果,如:影評者對影評的評價總是相對於平均水平偏離很大。

皮爾遜相關度評價算法首先會找出兩位評論者都曾評價過的物品,然後計算兩者的評分總和與平方和,並求得評分的成績和。最後算法利用這些計算結果計算出皮爾遜相關係數。

{\displaystyle r={\frac {\sum \limits _{i=1}^{n}(X_{i}-{\overline {X}})(Y_{i}-{\overline {Y}})}{{\sqrt {\sum \limits _{i=1}^{n}(X_{i}-{\overline {X}})^{2}}}{\sqrt {\sum \limits _{i=1}^{n}(Y_{i}-{\overline {Y}})^{2}}}}}}

皮爾遜的相關性係數可以看爲協方差與標準差的商。

1.1.3 曼哈頓距離算法

就是用曼哈頓距離(出租車距離)來度量兩者的相似性。

1.1.4 Jaccard係數

用於比較有限樣本集之間的相似性與差異性。Jaccard係數值越大,樣本相似度越高。

還可以用於文本相似性、序列相似性,非常適合數據集只有0、1兩組取值的數據集。另外可以瞭解下Tanimoto係數,又稱谷本系數。

1.1.5 餘弦相似度

通過測量兩個向量的夾角的餘弦值來度量它們之間的相似性。餘弦相似度通常用於正空間,因此給出的值爲0到1之間,值越大相似性越大。

{\text{similarity}}=\cos(\theta )={A\cdot B \over \|A\|\|B\|}={\frac  {\sum \limits _{{i=1}}^{{n}}{A_{i}\times B_{i}}}{{\sqrt  {\sum \limits _{{i=1}}^{{n}}{(A_{i})^{2}}}}\times {\sqrt  {\sum \limits _{{i=1}}^{{n}}{(B_{i})^{2}}}}}}

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. 基於物品的協同過濾

在擁有大規模數據的情況下,基於物品的協同過濾能夠更好得到結論,而且它允許我們將大量計算任務預先執行,從而使需要給予推薦的用戶能夠更快地得到他們所要的結果。

總體思路:

  1. 爲每件物品預先計算好最爲相近的其他物品
  2. 查看用戶的歷史評分物品,並從中選出排名靠前者(綜合各方面進行排名)
  3. 構造加權列表,包含與選中物品最爲相近的其他物品

物品間的比較不會想用戶間的比較那麼頻繁變化。

 

3. 兩種協同過濾比較

  • 基於物品進行過濾速度更快;
  • 基於用戶進行過濾更容易實現;
  • 對於稀疏數據集,基於物品通常優於基於用戶的過濾方法;
  • 對於密集型,兩者效果幾乎一樣。

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章