1. 程式人生 > >【推薦系統】協同過濾

【推薦系統】協同過濾

一、協同過濾:找到與某使用者有相同偏好的其它使用者,具體步驟:

1 收集使用者偏好(比如電影推薦時,某使用者對某電影的的打分,評論、轉發等)

2 找到相似的使用者或者物品

3 計算推薦

基於使用者的協同過濾:計算使用者之間的相似度

使用者A與使用者C很相似,但是A沒有買物品D,所以給A推薦物品D

存在問題:

1 對於一個新使用者,很難找到與他相近的使用者

2 對於一個物品(本來想推薦給A的),所有最近的鄰居很少在上打分,導致物品A不會推薦給A

3 稀疏問題,維護的表(行為使用者,列是所有物品),那這個表非常稀疏,因為可能有100W個物品,使用者只買其中幾個,所以維護這個表不方便

4 當用戶數量非常大時,比較使用者的計算量也特別大,因為每2個使用者都要算相似度

5 使用者的喜好容易改變

基於物品的協同過濾(更常用):計算物品之間的相似度

物品A與C更相似,使用者C買了A,故把物品C推薦給使用者C

注意:這裡的物體之間的相似度不是看物體本身的相似度,是看物體與使用者聯絡的相似度

相比基於使用者的協同過濾,優勢:

1 計算效能高,通常使用者數量遠大於物品數量

2 可預先計算保留,物品不善變

例項:

目標:求出第5個使用者對電影1的評分,根據某一閾值,得出要不要給5使用者推薦電影1,具體方法如下:

第一步:想要預測某一使用者對某一電影的評分,首先要找到與這一電影相似的電影,根據如下的相似度計算得出,結果是上圖右邊綠色字型,這裡用的是皮爾遜相關係數。

如何找相似的使用者呢?通過相似度計算

在推薦系統中常用的是第二種:

第二步:根據皮爾遜相關係數的某一閾值,這裡假設是0.4,篩選出與電影1最相近的2個電影,這裡是電影3和6,根據此使用者對3、6電影的評分,算出得分值,這裡是r_51=2.6,最後根據某一閾值,比如是4,若超出閾值則給此使用者推薦,明顯這個例子並沒有超出閾值,所以不推薦

協同過濾總結