通過計算使用者之間的相似度。這裡的相似度指的是兩個使用者的興趣相似度。
假設對於使用者u
uu和v
vv,n(u
)n(u)
n(u)
指的是使用者u
uu喜歡的物品集合,n(v
)n(v)
n(v)
指的是使用者v
vv
uu和v
vv的相似度:
w uv
=∣n(
u)∣⋂
∣n(v
)∣∣n
(u)∣
⋃∣n(
v)
∣w_ = \frac
wuv=∣
n(u)
∣⋃∣n
(v)∣
∣n(u
)∣⋂∣
n(v)
∣或者通過余弦相似度來計算:
w uv
=∣n(
u)∣⋂
∣n(v
)∣∣n
(u)∣
∣n(v
)∣
w_ = \frac }
wuv=∣
n(u)
∣∣n(
v)∣
∣n(u
)∣⋂∣
n(v)
∣這種方法需要計算兩兩使用者之間的相似度,複雜度為o(∣
u∣2)
o(|u|^2)
o(∣u∣2
),這種方法非常耗時,特別是大量的使用者之間沒有相關性時,即∣n(
u)∣⋂
∣n(v
)∣
|n(u)|\bigcap|n(v)|
∣n(u)∣
⋂∣n(
v)∣為0,對這些使用者的計算是完全不需要的。因此,只需先判斷∣n(
u)∣⋂
∣n(v
)∣
|n(u)|\bigcap|n(v)|
∣n(u)∣
⋂∣n(
v)∣是否為0,為0的使用者之間計算相似度即可。
a ab
dbac
fcac
ddbd
\begin a & a & b & d\\ b & a & c & f\\ c & a & c & d\\ d & b & d \end
abcda
aab
bccd
dfd
對於矩陣1.1,首先建立從物品到使用者的二維倒排表,每乙個物品都在表中佔據一行。對於表的每一行,首個元素是乙個物品,如果某使用者u對該物品產生過行為,則將u加入到該行中。對於每一行的使用者列表,裡面的使用者兩兩之間都存在著相似性。
a ab
cbad
cbcd
ac
d\begin a & a & b & c\\ b & a & d\\ c & b & c\\ d & a & c & d \end
abcda
aba
bdcc
cd
然後,建立|u| x |u|的稀疏矩陣c,首先,初始化c的各個元素為0,ab
cda0
000b
0000
c000
0d00
00如果使用者u和使用者v同時在倒排表的k行**現過,那麼說明u和v共同對這k個物品產生過行為,遍歷二維倒排表的每一行中的使用者列表,對於其中的任意兩個使用者u和v,將c[u][v]和c[v][u]加1。這樣,遍歷完成之後,c[u][v]的值就等於:ab
cda0
122b
1020
c220
1d20
10可知,上述矩陣是乙個對稱矩陣。
在計算出了所有使用者兩兩之間的相似度後,usercf演算法會向使用者推薦與它興趣相近的k個使用者最喜歡的物品,如下公式度量了使用者u對物品i的感興趣程度:
p (u
,i)=
∑v∈s
(u,k
)⋂n(
i)wu
vrvi
p(u, i) = \sum_ w_r_
p(u,i)
=v∈s
(u,k
)⋂n(
i)∑
wuv
rvi
其中,s(u
,k
)s(u, k)
s(u,k)
包含與使用者u興趣最相近的k個使用者列表,n(i
)n(i)
n(i)
是對物品i有過行為的使用者列表,wuv
w_wu
v是使用者u與使用者v的興趣相似度,rvi
r_rv
i代表使用者v對物品i的喜歡程度(由於這裡使用的是單一行為的隱反饋資料,因此所有的=1)。
覆蓋率:k越大,流行度就越大,而覆蓋率會相應地越小。
僅為筆記記錄使用,侵刪。
推薦召回 基於使用者的協同過濾UserCF
目錄6.總結 協同過濾的思想在推薦系統中,可謂是開山鼻祖般的存在。從推薦系統最初至今,幾十年的歷程中,協同過濾一直都閃爍著迷人的光芒。要說為何協同過濾這麼重要,就得說說它的優點 模型通用性強,不需要太多的領域知識 工程實現簡單,可以方便的應用到產品中,而且效果還不錯 接下來我們來說說,協同過濾的思想...
推薦系統 01 UserCF和ItemCF
推薦系統可能涉及的常見演算法 協同過濾的基本思想 協同過濾一般指在海量的使用者中發掘出一小部分和你品味比較類似的。實現協同過濾步驟 收集使用者偏好方法相似度 把資料看成空間中的向量 降噪,歸一化 基於距離計算相似度 計算歐幾里得空間中兩個點的距離 基於相關係數計算相似度 皮爾遜相關係數一般用於計算兩...
推薦系統 召回 冷啟動
冷啟動問題主要分為兩類 這裡主要分享兩個演算法,乙個是利用使用者的註冊資訊進行冷啟動,乙個是利用物品本身資訊進行冷啟動。這裡主要利用使用者註冊時填寫的人口統計學資訊,如年齡 性別 職業 民族 學歷和居住地 獲取使用者的註冊資訊 根據註冊資訊對使用者進行分類 給使用者推薦他所屬那個分類中使用者喜歡的物...