推薦演算法 協同過濾詳解

2021-10-13 19:15:49 字數 2683 閱讀 7803

問題解決(對應上面問題)

python ** + 詳細注釋

通過其他使用者(已對兩樣物品都評分)的評分來計算兩個物品相似度

一般有如下三種計算方法:

分別計算該物品該使用者已評分的每個物品的相似度,並以該使用者的評分作為權重相乘,之後加權相似度求和,最後歸一化,轉化為評分

from numpy import

*from numpy import linalg as la #有關矩陣計算

# 三種計算物品 a,b 相似度的方法

defeuclidsim

(a, b)

:#歐氏距離

return

1.0/

(1.0

+ la.norm(a - b)

)def

pearssim

(a, b)

:#相關係數

iflen

(a)<3:

#評分人數太少,不具有效應

return

1.0return

0.5+

0.5*corrcoef(a, b, rowvar=0)

[0][

1]defcossim

(a, b)

:#余弦相似度

num =

float

(a.t * b)

#分子 denom = la.norm(a)

* la.norm(b)

#分母return

0.5+

0.5*

(num/denom)

def

standest

(datamat, user, simmeas, item)

:'''傳入評分矩陣 datamat

用 simmeas 方法計算兩種物品的相似度

估計使用者 user 對 items 的評分'''

n = shape(datamat)[1

]#評分矩陣中的物品數

simtotal =

0.0; ratsimtotal =

0.0#相似度求和,加權相似度求和

for j in

range

(n):

#遍歷每個物品

userrating = datamat[user, j]

#切片獲得使用者 user 對物品 j 的評分

if userrating ==0:

#使用者未對該物品評分,暫時不用管

continue

overlap = nonzero(logical_and(datamat[

:, item]

.a >0,

datamat[

:, j]

.a >0)

)[0]

#尋找兩個物品都評分的使用者列表

iflen

(overlap)==0

:#不存在對這兩個物品都評過分的使用者

similarity =

0#物品相似度

similarity = simmeas(datamat[overlap, item]

, datamat[overlap, j]

) simtotal += similarity #物品相似度求和

ratsimtotal += similarity * userrating #加權相似度求和

if simtotal ==0:

#不相似

return

0else

:return ratsimtotal/simtotal #歸一化,作為評分

def

recommend

(datamat, user, n=

10, simmeas=cossim, estmethod=standest)

:'''傳入評分矩陣 datamat

計算相似度方法 simmeas

評分方法 estmethod

給使用者 user 推薦 n 個物品'''

unrateditems = nonzero(datamat[user,:]

.a ==0)

[1]#未評分物品列表

iflen

(unrateditems)==0

:#沒有未評分物品

return

'no object'

itemscores =

#記錄估計的評分,list 方便排序

for item in unrateditems:

estimatedscore = estmethod(datamat, user, simmeas, item)

#執行上面的方法得到評分

(item, estimatedscore)

)#新增評分到估計評分列表

return

sorted

(itemscores,

key=

lambda jj: jj[1]

, reverse=

true)[

:n]#評分由大到小排序,取前 n 個物品

協同過濾推薦演算法 協同過濾推薦演算法總結

推薦演算法具有非常多的應用場景和商業價值,因此對推薦演算法值得好好研究。推薦演算法種類很多,但是目前應用最廣泛的應該是協同過濾類別的推薦演算法,本文就對協同過濾類別的推薦演算法做乙個概括總結,後續也會對一些典型的協同過濾推薦演算法做原理總結。推薦演算法概述 1 基於內容的推薦 這一類一般依賴於自然語...

協同過濾推薦演算法 推薦演算法 基於協同過濾CF

前邊我們已經介紹了推薦演算法裡的基於內容的推薦演算法cb,今天我們來介紹一下基於協同的推薦演算法collaboration filtering cf 協同過濾是乙個利用群體智慧型的乙個演算法,舉乙個簡單的例子,如果放假了你想去北京玩幾天,但是不知道北京都有哪些好玩的,你會怎麼做?你可能會上網查一下的...

協同過濾推薦演算法

協同過濾推薦演算法 分為基於使用者的協同過濾推薦usercf和基於物品的協同過濾推薦itemcf。介紹見 協同過濾的實現步驟 1 指導思想 這種過濾演算法的有效性基礎在於 1 使用者偏好具有相似性,即使用者可分類。這種分類的特徵越明顯,推薦準確率越高 2 物品之間具有相似性,即偏好某物品的人,都很可...