zl程序教程

您现在的位置是:首页 >  后端

当前栏目

协同过滤推荐算法:基于用户的最近邻推荐

算法 基于 用户 推荐 过滤 协同 最近
2023-09-27 14:20:17 时间

基于用户的最近邻推荐

如何判断用户喜欢什么东西?我们可以利用与该用户相似的人群,看看他们喜欢什么商品,然后推荐给该用户。

1.计算用户相似度:Pearson相关系数

下面表格给出了一个用户-物品评分矩阵。

表1 协同推荐的评分数据库

物品1物品2物品3物品4物品5
Alice5344?
用户131233
用户243435
用户333154
用户415521

约定:用户集合 U = { u 1 , . . . , u n } U=\{u_1,...,u_n\} U={u1,...,un},产品集合 P = { p 1 , . . . , p m } P=\{p_1,...,p_m\} P={p1,...,pm},评分矩阵 R = { r i , j ∣ 1 ≤ i ≤ n , 1 ≤ j ≤ m } R= \{ r_{i,j}|1\le i\le n,1\le j\le m\} R={ri,j1in,1jm}

Pearson相关系数定义如下:

(1) s i m ( a , b ) = ∑ p ∈ P ( r a , p − r ˉ a ) ( r b , p − r ˉ b ) ∑ p ∈ P ( r a , p − r ˉ a ) 2 ∑ p ∈ P ( r b , p − r ˉ b ) 2 sim(a,b)=\frac{\sum_{p\in P}(r_{a,p}-\bar r_a)(r_{b,p}-\bar r_b)}{\sqrt{\sum_{p\in P}(r_{a,p}-\bar r_a)^2}\sqrt{\sum_{p\in P}(r_{b,p}-\bar r_b)^2}}\tag1 sim(a,b)=pP(ra,prˉa)2 pP(rb,prˉb)2 pP(ra,prˉa)(rb,prˉb)(1)

Perason相关系数从+1(强正相关)到-1(强负相关)。Alice 和用户1、用户2、用户3、用户4的相关系数分别为0.85、0.70、0.00、-0.79。

注意:Pearson相关系数中,数据是基于每个用户给产品评分的平均数计算的,也就是排除了有些用户喜欢高分,有些用户喜欢低分的偏好习惯。

2.预测用户偏好

Alice 会对物品5评多少分?

我们有理由选择用户1、用户2作为 Alice 的邻近用户。把用户1、用户2对物品5评分的偏差做一个加权平均,其中权重是用户1、用户2和 Alice 的相关系数。于是我们可以得到用户 a a a 对物品 p p p 的评分预测:
(2) p r e d ( a , p ) = r ˉ a + ∑ b ∈ N s i m ( a , b ) ( r b , p − r ˉ b ) ∑ b ∈ N s i m ( a , b ) pred(a,p)=\bar r_a+\frac{\sum_{b\in N}sim(a,b)(r_{b,p}-\bar r_b)}{\sum_{b\in N}sim(a,b)}\tag2 pred(a,p)=rˉa+bNsim(a,b)bNsim(a,b)(rb,prˉb)(2)
在这个例子中,基于近邻用户1和用户2的评分预测Alice对物品5的评分为:
4 + 0.85 ∗ ( 3 − 2.4 ) + 0.7 ∗ ( 5 − 3.8 ) 0.85 + 0.7 = 4.87 4+\frac{0.85*(3-2.4)+0.7*(5-3.8)}{0.85+0.7}=4.87 4+0.85+0.70.85(32.4)+0.7(53.8)=4.87

3.小结

Pearson 相关系数在基于用户的的最近邻推荐算法中一般来讲由于其他相关系数计算方法
提供了不错的思路,是一种最基本的推荐算法。事实上还存在一些需要解决的问题。例如,有些产品普遍得到用户的好评,另外有些产品的用户评价则参差不齐,对前者评价的预测和对后者评价的预测的意义肯定大不相同。另外实际应用中的用户-产品评价矩阵往往是稀疏的,这也导致一些改进技术陆续登场。