推荐系统导论笔记(六)

从Non-Personalize Recommendation到User-User Collaborative Filtering

考虑这样一个最简单的问题:向一个用户 u 推荐商品i,并给出预测评分 ru,i 。一个最直观的考虑是算出所有其他用户评分平均数作为预测结果,即:

ru,i=Σkurk,iN
其中, N 为用户总数。显然,这个模型太过简单,为此,可从以下两个地方加以改进:

  • 考虑评分用户与目标用户的相似度
  • 考虑用户的评分习惯

对于第一个问题,我们建立一个通用的模型,即:

ru,i=Σkurk,isim(k,u)Σkusim(k,u)
其中, sim(k,u) 为用户 k 与用户u间相似度的度量。这样,我们就可以将原来的简单平均数转化成为对用户相似度的一个加权平均。其意义也是显而易见的,即和用户 u 越相似的用户,其评分对预测结果的影响就越大。
用户间的相似度sim(k,u)可以用多种手段计算,如余弦相似度、Pearson相关系数、Spearman相关系数等。下面重点讨论Pearson 相关系数。Pearson相关系数的定义如下:
sim(k,u)=Σi(rk,irk¯)(ru,iru¯)σkσu
该相关系数描述了两个变量之间的线性关系。即若 sim(k,u)=1 ,则用户 k 和用户u的评分具有正的线性关系;若 sim(k,u)=0 ,则用户 k u间没有线性关系( 但不代表不存在其他非线性关系);若 sim(k,u)=1 ,则 k u间为负相关关系。
事实上,Pearson系数就是余弦系数去中心化的结果,因此,可以视作余弦相似度的一个 特殊情况。
若用户 u 与用户k共同投票的Item较少时,可能使得上述方法失效。考虑极端情况:现用户 u 与用户k只有一个共同投票的Item,显然,此时 sim(u,k)=1 。即用户 u 和用户k相似度极高,在这种情况下,我们是没法确保上述结论的准确性。为此,我们可以在分母的位置加上一个常数项 c ,对这种情况进行惩罚。
第二个问题主要是由于用户评分习惯不同导致的。有些用户习惯打高分,评分均值较高,而有些用户习惯打低分,评分均值较低。为了避免这一情况对预测结果的影响,我们可以用所谓的去中心化来解决。即用评分值减去用户评分均值得出评分偏移代替原评分进行计算,即:
ru,i=ru¯+Σku(rk,irk¯)sim(k,u)Σkusim(k,u)
这其实就是所谓的User-User Collaborative Filtering。

User-User CF使用注意事项及其缺点

加权邻居个数的选择

在User User CF算法中,邻居用户是用来计算加权评分的。一般邻居用户的选择方法有如下几种:

  • 所有邻居
  • 相似度(或者距离)超出某一阈值的邻居
  • 随机选择的邻居
  • Top N的邻居

从理论上来说,邻居越多,预测结果越精确,但在实际中,不相似的用户可能会带来大量的噪声,使得预测的精确度变低,因此一般选择25~30个邻居用户较为合适。

评分正则化

正如上文所述,用户评分习惯的不同,导致了用户评分分布的不同,而这种不同会对我们最终的预测结果造成较大的影响。除了上文提到的去中心化这一方法之外,还可以使用Z score进行正则化,z score的定义如下:

z(k,i)=rk,irk¯σk

缺点分析

User User CF算法的一个最主要的缺点是计算复杂度。假设现在有 m 个用户,n件商品,相应的计算复杂度如下表:

计算项目时间复杂度
计算两个用户的相似度 O(n)
计算一个用户与所有用户间的相似度 O(mn)
计算所有用户间的相似度 O(m2n)
进行推荐 O(mn)

尽管可以通过缓存或者减少邻居个来尽可能减少计算量,性能问题仍然是User User CF的一个瓶颈。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值