赞
踩
协同过滤推荐分为三种类型。
from sklearn.metrics.pairwise import cosine_similarity
a = [1, 0, 0, 0]
b = [1, 0.5, 0.5, 0]
cosine_similarity([a, b])
from scipy.stats import pearsonr
i = [1, 0, 0, 0]
j = [1, 0.5, 0.5, 0]
pearsonr(i, j)
基于用户的协同过滤,简要来说就是臭味相投。判断“用户”相似主要通过对用户过去的行为轨迹进行计算而得。
主要的算法过程使用图1数据。
两个步骤:
第一个步骤,可由上面的相似性计算方法而得。
最终结果的预测
A. 常用的方式之一是利用用户相似度和相似用户的评价加权平均获得用户的评价预测, 用下面式子表示:
R
u
,
p
=
∑
s
∈
S
(
w
u
,
s
⋅
R
s
,
p
)
∑
s
∈
S
w
u
,
s
R_{\mathrm{u}, \mathrm{p}}=\frac{\sum_{\mathrm{s} \in S}\left(w_{\mathrm{u}, \mathrm{s}} \cdot R_{\mathrm{s}, \mathrm{p}}\right)}{\sum_{\mathrm{s} \in S} w_{\mathrm{u}, \mathrm{s}}}
Ru,p=∑s∈Swu,s∑s∈S(wu,s⋅Rs,p)
权重
w
u
,
s
w_{u,s}
wu,s是用户
u
u
u和用户
s
s
s的相似度,
R
s
,
p
R_{s,p}
Rs,p是用户
s
s
s对物品
p
p
p的评分。
B. 不单纯的是其他用户对物品的评分, 而是该物品的评分与此用户的所有评分的差值进行加权平均, 这时候考虑到了有的用户内心的评分标准不一的情况, 即有的用户喜欢打高分, 有的用户喜欢打低分的情况。
P
i
,
j
=
R
ˉ
i
+
∑
k
=
1
n
(
S
i
,
k
(
R
k
,
j
−
R
ˉ
k
)
)
∑
k
=
1
n
S
j
,
k
P_{i, j}=\bar{R}{i}+\frac{\sum{k=1}^{n}\left(S_{i, k}\left(R_{k, j}-\bar{R}{k}\right)\right)}{\sum{k=1}^{n} S_{j, k}}
Pi,j=Rˉi+∑k=1nSj,k∑k=1n(Si,k(Rk,j−Rˉk))
详细计算如下:
同样方式可以计算与其他用户的相似度(此处使用numpy):
数据如图1所示。
计算如图5所示:
根据皮尔逊相关系数, 可以找到与物品5最相似的2个物品是item1和item4(n=2), 下面基于上面的公式计算最终得分:
P
A
l
i
c
e
,
物
品
5
=
R
ˉ
物
品
5
+
∑
k
=
1
2
(
S
物
品
5
,
物
品
k
(
R
A
l
i
c
e
,
物
品
k
−
R
ˉ
物
品
k
)
)
∑
k
=
1
2
S
物
品
k
,
物
品
5
=
13
4
+
0.97
∗
(
5
−
3.2
)
+
0.58
∗
(
4
−
3.4
)
0.97
+
0.58
=
4.6
P_{Alice, 物品5}=\bar{R}{物品5}+\frac{\sum{k=1}^{2}\left(S_{物品5,物品 k}\left(R_{Alice, 物品k}-\bar{R}{物品k}\right)\right)}{\sum{k=1}^{2} S_{物品k, 物品5}}=\frac{13}{4}+\frac{0.97*(5-3.2)+0.58*(4-3.4)}{0.97+0.58}=4.6
PAlice,物品5=Rˉ物品5+∑k=12S物品k,物品5∑k=12(S物品5,物品k(RAlice,物品k−Rˉ物品k))=413+0.97+0.580.97∗(5−3.2)+0.58∗(4−3.4)=4.6
参考:
1.协同过滤
2.人工智能推荐算法(一) - 协同过滤算法介绍
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。