核心思想
給使用者推薦那些和他們之前喜歡的物品相似的物品。
不同於基於內容的推薦,基於物品的協同過濾中的相似主要是利用使用者行為的集體智慧型。
相似度的計算
計算相似度的實現方式是多種多樣的對物品的喜愛程度並不能單純的使用二值屬性來評價,很多資料集包含了使用者對物品的詳細評分資料,將評分資料進一步引入到相似度計算中,公式如下:
w ij
=ni⋅
nj∣n
i∣∗∣
nj∣=
∑k=1
len(
nki×
nkj)
∑k=1
lenn
ki2×
∑k=1
lenn
kj
2w_ = \frac = \frac^ (n_ \times n_) }^n_^2 \times \sqrt^ n_^2 }}}
wij=∣
ni∣
∗∣nj
∣ni
⋅nj
=∑
k=1l
enn
ki2
×∑k=
1len
nkj
2
∑k=1
len
(nki
×nk
j)
當物品i
被更多的使用者喜歡時,分子中的 n(i
)⋂n(
j)
n(i) \bigcap n(j)
n(i)⋂n
(j) 和分母中的n(i)
都會增長。對於熱門物品,分子 n(i
)⋂n(
j)
n(i) \bigcap n(j)
n(i)⋂n
(j) 的增長速度普遍會高於分母中n(i)
的增長速度,就容易使得物品i
和很多物品的相似度都偏高,出現itemcf中的物品熱門問題。
為解決該問題,對於熱門物品i
進行懲罰,如下:
w ij
=∣ni
⋂nj∣
∣ni∣
α∗∣n
j∣1−
αw_ = \frac}
wij=∣
ni∣
α∗∣n
j∣1
−α∣n
i⋂n
j∣
其中當 α∈(
0,
0.5)
\alpha \in (0, 0.5)
α∈(0,0
.5) 時,n(i)
越小,懲罰越厲害,從而使得熱門物品相關性分數下降。
計算**評分
使用如下公式進行評分的**:
p ui
=∑nu
⋂sj,
kwji
scor
eu
ip_ = \sum_} w_ score_
pui=n
u⋂s
j,k
∑wj
isc
oreu
i其中 sjk
s_sj
k是物品j
相似物品的集合,一般取相似分數最高的k
個物品。sco
reui
score_
scoreu
i是使用者u
對物品i
的評分,如果沒有評分資料,則取1。通過使用該方法計算得到使用者物品的評分**,可取其中top-n個,作為推薦候選。
基於使用者的協同過濾的原理和基於物品的協同過濾的原理是類似的。**例項:
基於物品的協同過濾演算法
輸入 輸入 物品使用者行為矩陣,行為矩陣中的元素只有0和1,0代表行為的負類,1代表行為的正類。比如不喜歡與喜歡 不點贊與點讚 不收藏與收藏。輸出 輸出1 根據輸入可計算得到物品相似度矩陣 前言 基於物品的協同過濾演算法適用於物品數明顯小於使用者數的場景,適用於長尾物品豐富,使用者個性化需求強烈的領...
基於物品的協同過濾演算法 ItemCF
余弦相似度公式 其中 共現矩陣,記錄了同時愛好 i 和 j 的數量 根據余弦相似度公式計算相似度 初始化使用者評分資料 def inituserscore self user score dict b c d return user score dict 計算item之間的相似度 def items...
推薦演算法 基於物品的協同過濾演算法
itemcf itemcollaborationfilter,基於物品的協同過濾 比如,使用者a之前買過 資料探勘導論 該演算法會根據此行為給你推薦 機器學習 但是itemcf演算法並不利用物品的內容屬性計算物品之間的相似度,它主要通過分析使用者的行為記錄計算物品之間的相似度。該演算法認為,物品a和...