Abstract
这篇论文介绍了google news推荐系统的实现。在用户量很大的前提下,原有的推荐算法适用性较差,需要对其进行改进,例如使用mapreduce,bigtable等技术提高运算速度,综合考虑多种推荐算法等等。
google news的特点
处理google news的一些难点
- scalability:google news访客较多,新闻数据也较多
- item churn:物品(新闻)会动态变化,模型需要不断重建,这是一个非常费时的任务,对于google news来说,每分钟都会产生很多新闻,模型超过一段时间后效果会变差
google news的一些假设
这里假设用户点击某一条新闻即表示对该新闻感兴趣,之所以可以这样假设,因为google news前端页面已经显示了文章的摘要,用户能够了解这篇文章的大概信息,如果点击该新闻即可证明对此新闻感兴趣。
问题表述
对于N个用户,u={u1,u2,...uN}和M个物品(文章)S={s1,s2...sm},给定一个用户的浏览记录集合Cu,{s1,s2...si|cu|},推荐K个用户感兴趣的文章。 同时要求服务器的响应时间要短,服务器要做的事情如下:对新闻聚类;针对HTTP请求返回HTML内容;推荐系统产生推荐列表
相关工作
基于内存的算法
根据用户过去的评价进行推荐,为此需要计算用户之间的相关性,w(ui,uj)
矩阵衡量的就是任意两个用户的联系性,对于一个用户u_a
,他对于文章s_k
的评分如下: $r_{u_a,s_k} = \sum_{i\neqa} I_{(u_i, s_k)}w(u_a, u_i)$
I(ui,sk)
为1表明用户u_i
点击过s_k
。当计算得到的评分超过一定阈值后就可以假定用户u_a
喜欢文章s_k
。但是这个方法最大的问题就是可拓展性较差,由于所有数据要放入内存,当数据量较大值无法使用此方法。
基于模型的算法
此方法依据用户之前的评分为该用户建立模型,使用模型预测那些未被评价过的物品(协同过滤就是这种方法)。这种方法的缺陷是把每一个用户划分到一个指定的类别中,实际情况是用户对于不同的主题可能有不同的喜好,无法划分到一个指定的类别。
模型
本文中涉及的模型是一个混合模型,将上述两种模型进行线性加权结合。 I(u_i,s_k)
is 1 if the user u_i
clicked on the story s_k
and 0 otherwise.话说将来可以使用SVM算法学习不同algorithm之间的比重。
MinHash
PLSI
PLSI was introduced in [3], where Hofmann developed probabilistic latent semantic models for performing collaborative filtering.The relationship between users and items is learned by