本文内容来自《推荐系统与深度学习》——黄昕 王本友 吕慧敏 杨敏 清华大学出版社 第四章
推荐系统的算法中,应用最广泛的是基于内容的推荐和基于领域的推荐。
基于邻域的算法又分为两大类:基于用户的协同过滤,基于物品的协同过滤。
基于用户:找出与用户 兴趣 相似的其他用户。
基于物品:找出与用户 之前喜欢的物品 相似的物品。
1 基于内容
- 提取特征(内容)
提取待推荐物品的特征(也就是内容属性),有结构化特征、非结构化特征。- 结构化特征,例如分类标签。
- 非结构化特征,须转化为结构化特征,例如文本,常使用词频统计法,会引入TF-IDF(词频—逆文档频率)。
- 用户偏好计算
计算不同特征的偏好分数:利用显示评分或操作记录进行计算。- 利用评分:统计特征。用户A在科幻下的分数为(5+4+5)/3=4.7。也可以乘上时间因子。
- 内容召回(物品池)
根据每个待推荐物品的特征,以及用户偏好,取出用户最可能喜欢的物品。
例如:用户最喜欢的电影是科幻类,那就取出科幻类的电影构成物品池。 - 物品排序
将物品池中的物品按得分排序。
2 基于邻域
2.1 基于物品的协同过滤(Item CF)
- 计算物品
i
i
i、
j
j
j的相似度
依据:喜欢物品 i i i、 j j j的人们。
(1)分子:同时喜欢物品 i i i、 j j j的用户——喜欢某物品的用户
w
i
j
=
∣
N
(
i
)
⋂
N
(
j
)
∣
∣
N
(
i
)
∗
N
(
j
)
∣
w_{ij} = \frac{|N(i) \bigcap N(j)|}{\sqrt{|N(i)*N(j)|}}
wij=∣N(i)∗N(j)∣∣N(i)⋂N(j)∣
N
(
i
)
N(i)
N(i)是喜欢物品
i
i
i的人数。分母对热门物品做了惩罚。
(2)不仅喜欢,还有对物品的评分:余弦相似度
w
i
j
=
N
i
⋅
N
j
∣
∣
N
i
∣
∣
∣
∣
N
j
∣
w_{ij} = \frac{N_i \cdot N_j }{ || N_i |||| N_j|}
wij=∣∣Ni∣∣∣∣Nj∣Ni⋅Nj
N
i
N_i
Ni是同时喜欢物品
i
i
i、
j
j
j的用户对物品
i
i
i的评分。
- 预测用户
u
u
u对物品
j
j
j的评分
p u i = ∑ i ∈ N ( u ) ⋂ S ( j , k ) w j i s c o r e u i p_{ui}=\sum_{i \in N(u) \bigcap{S(j,k)}}w_{ji} score_{ui} pui=i∈N(u)⋂S(j,k)∑wjiscoreui
<1>: p u i p_{ui} pui是预测的用户 u u u对物品 i i i的评分。
<2>: N ( u ) N(u) N(u)是用户 u u u喜欢的物品集合; S ( j , k ) S(j,k) S(j,k)是与物品 j j j相似的 k k k个物品; N ( u ) ⋂ S ( j , k ) N(u) \bigcap{S(j,k)} N(u)⋂S(j,k)是用户喜欢的物品中与j最相似的 k k k个。
<3>: w j i w_{ji} wji是物品 j j j、 i i i的相似度。
<4>: s c o r e u i score_{ui} scoreui是用户 u u u对已购买物品 i i i的评分。
核心:用户 u u u 喜欢的物品中,与物品 j j j相似的。
其中参数k需要根据准确率和召回率不断尝试。
2.2 基于用户的协同过滤(User CF)
-
计算用户的相似度
分子:用户都喜欢的物品——用户喜欢的物品
w a b = ∣ N ( a ) ⋂ N ( b ) ∣ ∣ N ( a ) ∗ N ( b ) ∣ w_{ab} = \frac{|N(a) \bigcap N(b)|}{\sqrt{|N(a)*N(b)|}} wab=∣N(a)∗N(b)∣∣N(a)⋂N(b)∣ -
预测用户 u u u对物品 j j j的评分
p u i = ∑ v ∈ N ( i ) ⋂ S ( u , k ) w v u s c o r e v i p_{ui}=\sum_{v \in N(i) \bigcap{S(u,k)}}w_{vu} score_{vi} pui=v∈N(i)⋂S(u,k)∑wvuscorevi
<1> N ( i ) N(i) N(i)是喜欢物品 i i i的用户的集合, S ( u , k ) S(u,k) S(u,k)是与用户u最相似的 k k k个用户。
<2> w v u w_{vu} wvu是用户之间的相似度。
<3> score_{vi}是用户 u u u对物品 i i i的评分。
2.3 基于用户协同和基于物品协同的区别
(1)使用场景
根据内容更新速度,慢的用ItemCF,快的用 UserCF。
根据是否是社交网络,社交网络用UserCF,非社交网络用ItemCF。这样可解释性更强。
经典场景:
新闻类网站——UserCF。
图书、电子商务、电影——ItemCF。
(2)多样性
多样性包括系统多样性(也叫覆盖率),个人多样性。
系统多样性关注是否能够将长尾物品推荐给用户,ItemCF效果好。
个人多样性关注是否能够将不同领域(主题) 的物品推荐给用户,UserCF效果好。
(3)用户特点
使用UserCF的前提:用户的邻居较多。
使用ItemCF的前提:用户喜欢的物品,它们的自相似度大。