推荐系统算法(一)
1. 基于近邻的协同过滤算法的形式
(1)预测用户-物品组合的评分
预测用户 u u u对于物品 j j j的评分 r u j r_{uj} ruj。因此,称用户和物品构成的矩阵为评分矩阵,矩阵中已知的数据成为训练数据,未知的部分称为测试数据。
(2)确定前k件物品或前k个用户
传统推荐系统中的“top-k”问题,即找到前k件物品而非前k个用户的过程。
(3)Pearson相关系数的定义
Pearson相关系数可以用来衡量用户 u u u和用户 v v v之间评分向量的相似程度 S i m ( u , v ) Sim(u,v) Sim(u,v)。 I u ∩ I v I_{u}\cap I_{v} Iu∩Iv代表了用户 u u u和用户 v v v均做出评分的物品序号集合,仅在这个集合中的物品上计算相关系数。首先,对于每个用户 u u u的评分计算每位用户的平均评分 μ u \mu_{u} μu:
μ u = ∑ k ∈ I u r u k ∣ I u ∣ \mu_{u}=\frac{\sum_{k\in I_u}r_{uk}}{|I_u|} μu=∣Iu∣∑k∈Iuruk, ∀ u ∈ { 1 , . . . , m } {\forall}u\in\{1,...,m\} ∀u∈{1,...,m}
用户 u u u和用户 v v v之间的Pearson相关系数定义如下:
S i m ( u , v ) = P e a r s o n ( u , v ) = ∑ k ∈ I u ∩ I v ( r u k − μ v ) ( r v k − μ v ) ∑ k ∈ I u ∩ I v ( r u k − μ v ) 2 ∑ k ∈ I u ∩ I v ( r v k − μ v ) 2 Sim(u,v)=Pearson(u,v)=\frac{\sum_{k\in I_u\cap I_v}(r_{uk}-\mu_v)(r_{vk}-\mu_v)}{\sqrt{\sum_{k\in I_u\cap I_v}(r_{uk}-\mu_v)^2}\sqrt{\sum_{k\in I_u\cap I_v}(r_{vk}-\mu_v)^2}} Sim(u,v)=Pearson(u,v)=∑k∈Iu∩Iv(ruk−μv)2∑k∈Iu∩Iv(rvk−μv)2∑k∈Iu∩Iv(ruk−μv)(rvk−μv)
定义基于近邻的预测函数表示如下:
r
^
u
j
=
μ
u
+
∑
v
∈
P
u
(
j
)
S
i
m
(
u
,
v
)
(
r
v
j
−
μ
v
)
∑
v
∈
P
u
(
j
)
∣
S
i
m
(
u
,
v
)
∣
\hat{r}_{uj}=\mu_u+\frac{\sum_{v\in P_u(j)}Sim(u,v)(r_{vj}-\mu_v)}{\sum_{v}\in P_u(j)|Sim(u,v)|}
r^uj=μu+∑v∈Pu(j)∣Sim(u,v)∣∑v∈Pu(j)Sim(u,v)(rvj−μv)
2. 基于用户的协同过滤
该类型中,把与目标用户A相似的评分用来为A进行推荐。这些“同组群体”对每件物品的评分的加权平均值将用来计算A的预计评分。
下表显示了5个用户对6件物品的评分。
1 | 2 | 3 | 4 | 5 | 6 | 平均评分 | Cosine(i,3) | Pearson(i,3) | |
---|---|---|---|---|---|---|---|---|---|
1 | 7 | 6 | 7 | 4 | 5 | 4 | 5.5 | 0.956 | 0.894 |
2 | 6 | 7 | 4 | 3 | 4 | 4.8 | 0.981 | 0.939 | |
3 | 3 | 3 | 1 | 1 | 2 | 1.0 | 1.0 | ||
4 | 1 | 2 | 2 | 3 | 3 | 4 | 2.5 | 0.789 | -1.0 |
5 | 1 | 1 | 2 | 3 | 3 | 2 | 0.645 | -0.817 |
以用户3对物品1的预测评分为例,解释一下计算过程:
C o s i n e ( 1 , 3 ) = 6 × 3 + 7 × 3 + 4 × 1 + 5 × 1 6 2 + 7 2 + 4 2 + 5 2 3 2 + 3 2 + 1 2 + 1 2 = 0.956 Cosine(1,3)=\frac{6\times3+7\times3+4\times1+5\times1}{\sqrt{6^2+7^2+4^2+5^2}\sqrt{3^2+3^2+1^2+1^2}}=0.956 Cosine(1,3)=62+72+42+5232+32+12+126×3+7×3+4×1+5×1=0.956
P e a r s o n ( 1 , 3 ) = ( 6 − 5.5 ) × ( 3 − 2 ) + ( 7 − 5.5 ) × ( 3 − 2 ) + ( 4 − 5.5 ) × ( 1 − 2 ) + ( 5 − 5.5 ) × ( 1 − 2 ) s q r t ( 6 − 5.5 ) 2 + ( 7 − 5.5 ) 2 + ( 4 − 5.5 ) 2 + ( 5 − 5.5 ) 2 ( 3 − 2 ) 2 + ( 3 − 2 ) 2 + ( 1 − 2 ) 2 + ( 1 − 2 ) 2 = 0.894 Pearson(1,3)=\frac{(6-5.5)\times(3-2)+(7-5.5)\times(3-2)+(4-5.5)\times(1-2)+(5-5.5)\times(1-2)}{sqrt{(6-5.5)^2+(7-5.5)^2+(4-5.5)^2+(5-5.5)^2}\sqrt{(3-2)^2+(3-2)^2+(1-2)^2+(1-2)^2}}=0.894 Pearson(1,3)=sqrt(6−5.5)2+(7−5.5)2+(4−5.5)2+(5−5.5)2(3−2)2+(3−2)2+(1−2)2+(1−2)2(6−5.5)×(3−2)+(7−5.5)×(3−2)+(4−5.5)×(1−2)+(5−5.5)×(1−2)=0.894
因此,均值中心化的预测公式为:
r ^ 31 = 2 + ( 7 − 5.5 ) × 0.894 + ( 6 − 4.8 ) × 0.939 0.894 + 0.939 ≈ 3.35 \hat{r}_{31}=2+\frac{(7-5.5)\times0.894+(6-4.8)\times0.939}{0.894+0.939}\approx3.35 r^31=2+0.894+0.939(7−5.5)×0.894+(6−4.8)×0.939≈3.35
同理, r ^ 36 ≈ 0.86 \hat{r}_{36}\approx0.86 r^36≈0.86.。
于是,均值中心化的预测结果仍然认为物品1应该优先于物品6被推荐给用户3.然而,一个与之前的推荐至关重要的不同是,在这种情况下,物品6的预测评分只有0.86,低于用户3评价过的任何物品。这与之前物品6的预测评分高于所有已知评分的情况有天壤之别。直接观察上表,显然,用户3理应给予物品6很低的评分,因此,与他相近的用户(用户1和2)对物品6的评分都比他们对其他物品的评分低。由此可见,均值中心化能够就已知的评分提供更好的相对预测。
3. 基于物品的协同过滤
为了推荐目标物品B,首先确定一个物品集合S,使S中的物品与B相似度最高。然后,为了预测任意一个用户A对B的评分,需要确定A对集合S中物品的评分。这些评分的加权值将用来计算用户A对物品B的预计评分。
在计算列之间的相似度之前,每行的评分被以均值为零点中心化。如下表所示:
1 | 2 | 3 | 4 | 5 | 6 | |
---|---|---|---|---|---|---|
1 | 1.5 | 0.5 | 1.5 | -1.5 | -0.5 | -1.5 |
2 | 1.2 | 2.2 | -0.8 | -1.8 | -0.8 | |
3 | 1 | 1 | -1 | -1 | ||
4 | -1.5 | -0.5 | -0.5 | 0.5 | 0.5 | 1.5 |
5 | -1 | -1 | 0 | 1 | 1 | |
Cosine(1,j) | 1 | 0.735 | 0.912 | -0.848 | -0.813 | -0.990 |
Cosine(6,j) | -0.990 | -0.622 | -0.912 | 0.829 | 0.730 | 1 |
中心化评分:
s
u
j
=
r
u
j
−
μ
u
s_{uj}=r_{uj}-\mu_u
suj=ruj−μu,
∀
u
∈
{
1
,
.
.
.
,
m
}
{\forall}u\in\{1,...,m\}
∀u∈{1,...,m}.
令
U
i
U_i
Ui表示已对物品i做出评价的用户集合。因此,如果第一、第三、第四位用户对物品i的评价已知,有
U
i
=
{
1
,
3
,
4
}
U_i=\{1,3,4\}
Ui={1,3,4}.
于是,物品i和物品j的调整余弦相似度定义如下:
A d j u s t e d C o s i n e ( i , j ) = ∑ u ∈ U i ∩ U j s u i ⋅ s u j ∑ u ∈ U i ∩ U j s u i 2 ∑ u ∈ U i ∩ U j s u j 2 AdjustedCosine(i,j)=\frac{\sum_{u\in U_i\cap U_j}s_{ui}\cdot s_{uj}}{\sqrt{\sum_{u\in U_i\cap U_j}s_{ui}^2}\sqrt{\sum_{u\in U_i\cap U_j}s_{uj}^2}} AdjustedCosine(i,j)=∑u∈Ui∩Ujsui2∑u∈Ui∩Ujsuj2∑u∈Ui∩Ujsui⋅suj.
因为,调整过后的余弦相似度往往可以产生更好的效果,所以这里不需要再使用Pearson相似性度量。
假设我们需要确定用户 u u u对物品 t t t的评分。第一步是通过之前提到的调整余弦相似度确定与物品t最相似的k件物品,用 Q t ( u ) Q_t(u) Qt(u)表示用户 u u u已评价且与 t t t最相似的 k k k件物品。这些评分的加权平均值即是预测结果。物品 j j j与目标物品 t t t的调整余弦相似度即为权重。因此,用户 u u u对目标物品 t t t的预测评分表示如下:
r ^ u t = ∑ j ∈ Q t ( u ) A d j u s t e d C o s i n e ( j , t ) r u j ∑ j ∈ Q t ( u ) ∣ A d j u s t e d C o s i n e ( j , t ) ∣ \hat{r}_{ut}=\frac{\sum_{j\in Q_t(u)}AdjustedCosine(j,t)r_{uj}}{\sum_{j\in Q_t(u)}|AdjustedCosine(j,t)|} r^ut=∑j∈Qt(u)∣AdjustedCosine(j,t)∣∑j∈Qt(u)AdjustedCosine(j,t)ruj
基本思想是在最终预测阶段中利用用户自己对相似物品的评价。
显然,物品2和物品3与物品1最为相似,物品4和物品5与物品6最相似。因此,用户3对物品2和物品3的原始评分的加权平均值被用来预测他对物品1的评分 r ^ 31 \hat{r}_{31} r^31;同理,他对物品4和物品5的原始评分的加权平均值被用来预测他对物品6的评分 r ^ 36 \hat{r}_{36} r^36。
r ^ 31 = 3 × 0.735 + 3 × 0.912 0.735 + 0.912 \hat{r}_{31}=\frac{3\times 0.735+3\times 0.912}{0.735+0.912} r^31=0.735+0.9123×0.735+3×0.912
r ^ 36 = 1 × 0.829 + 1 × 0.730 0.829 + 0.730 \hat{r}_{36}=\frac{1\times0.829+1\times0.730}{0.829+0.730} r^36=0.829+0.7301×0.829+1×0.730
可见,基于物品的方法也表明,用户3可能更倾向于选择物品1而不是物品6。然而由于此次预测利用用户3自己的评分,所以预测的结果与该用户对其他物品的评分有较高的一致性。基于物品的方法的主要优势在于它具有更高的预测准确度。在某些情况下,基于物品的方法和基于用户的方法,虽然它们的推荐列表大致会相同,但可能会产生不同的前k个推荐物品。
4. 基于近邻方法的比较和优劣势
(1)比较
方法 | 解释 |
---|---|
基于物品的方法 | 常常产生更相关的推荐结果,因为它使用了自己的评分来做推荐。该方法通过识别与目标相似的物品,再利用用户对这些相似物品的评分,从而判断目标物品的评分 |
基于用户的方法 | 在基于用户的方法中,用来推测评分的其他用户的兴趣和目标用户的兴趣可能有相同点,但并不完全相同。因此,基于物品的方法可能会更好。 |
(2)优劣势
基于近邻的方法简单直观,可解释性强,并且容易实现和调试。但是,其在离线阶段的大规模数据上变的无法实现,以及评分矩阵过分稀疏导致的覆盖度不足。
参考文献:
Charu C. Aggarwal 著, 推荐系统原理与实践