根据用户对item的点击次数来判据用户对物品的打分情况
基本流程:
- 特征(内容)提取
提取每个待推荐物品的特征(内容属性),比如说是不同物品的分类标签等。 - 用户偏好计算
利用用户过去的显式评分或者隐式操作记录,计算用户不同特征(内容属性)上的偏好分数。 - 内容召回:将待推荐物品的特征与用户偏好得分匹配,取出用户最可能喜欢的物品池。
- 物品排序:按照用户偏好召回物品池,可能一次性挑选出很多内容,此时,可以根据这些物品的平均得分等,再继续进行排序。
优点:
- 物品没有冷启动问题,因为物品的内容特征不依赖于用户数据;同时,推荐出的物品不会存在过于热门的问题。
- 能为具有特殊兴趣爱好的用户进行推荐。
- 原理简单,易于发现定位问题。
特征提取:
- 结构化的特征。取值限定在某个范围之内,比如固定的标签等。
- 非结构化的特征。内容无固定格式,最常见的非结构化特征就是文章。
结果计算
每个物品的内容特征向量,可如下表示:
d j = ( w 1 j , w 2 j , ⋯   , w n j ) d_j = (w_{1j}, w_{2j}, \cdots, w_{nj}) dj=(w1j,w2j,⋯,wnj)
每个物品可以用一个n
维向量表示。其中
w
n
j
w_{nj}
wnj 表示每一维的特征权重。每一维代表了一个标签或者是一个单词等基础要素。
假如用户喜欢物品{1, 3, 7}
,则该用户的特征向量可以表示为:
U
k
=
(
d
k
1
+
d
k
2
+
d
k
3
)
/
3
=
(
u
1
k
,
u
2
k
,
⋯
 
,
u
n
k
)
U_k = (d_{k1} + d_{k2} + d_{k3})/3 = (u_{1k}, u_{2k}, \cdots, u_{nk})
Uk=(dk1+dk2+dk3)/3=(u1k,u2k,⋯,unk)
那么用户k
在文章t
上的得分可以使用余弦公式计算得到:
s
c
o
r
e
=
cos
θ
=
∑
i
=
1
n
(
u
i
k
×
w
i
t
)
∑
i
=
1
n
u
i
k
2
×
∑
i
=
1
n
w
i
t
2
score = \cos\theta = \frac{\sum_{i=1}^n (u_{ik} \times w_{it})}{ \sqrt{\sum_{i=1}^n u_{ik}^2} \times \sqrt{\sum_{i=1}^n w_{it}^2} }
score=cosθ=∑i=1nuik2×∑i=1nwit2∑i=1n(uik×wit)