首页 > 代码库 > 谷歌新闻个性化推荐

谷歌新闻个性化推荐

    (未编辑完) 

    谷歌新闻有数百万的用户,聚合了>4500个新闻源的新闻数据,并把类似的新闻聚合在一起,个性化的展示给用户,假设用户点击一篇文章表明他对这文章感兴趣,(其实未点击一篇文章也不能说明他不对这样的文章感兴趣),由于用户众多,不同用户点击次数差异很大,有的仅仅点击了几篇,而有的点击数百数千文章。新的文章分秒不断的加入也是新闻推荐不同于其他推荐的特点。

     新闻推荐的问题描述:给定N个用户,M篇文章,和每个用户的点击历史C,给每个用户推荐K篇他可能喜欢的文章。系统也需要通过用户的点击即刻反映出用户兴趣的变化。而且产生推荐时间限制很短,百毫秒之内需产生推荐列表。

    基于用户聚类的推荐

     

w(ua, ci) 是用户a对类别Ci的相关度,后项I为类别Ci内用户点击Sk的数量和。

根据用户聚类推荐的过程:

     Fetch the clusters  that this user belongs to, for each cluster lookup how many times (discounted by age) did members of this cluster  click on the story s (normalized by the total number of clicks  made by members of this cluster), finally add these numbers to compute the recommendation score. The recommendation scores thus obtained are normalized (by simple scaling) so that they all lie between 0 and 1.

对用户的聚类采用minHash 和PLsa方法。

minHash: http://my.oschina.net/pathenon/blog/65210

PLSA:http://blog.csdn.net/yangliuy/article/details/8330640

点击了该文章的用户还点击的文章推荐:

        把文章看做无向图,边看做同时访问的次数,用户访问了Sk, 遍历用户访问history,更新文章Sk与history中文章同时出现的次数。详细推荐过程

We fetch  the user’s recent click history Cui , limited to past few hours or days8. For every item si in the user’s click history, we lookup the entry for the pair si, s in the adjacency list for si stored in the Bigtable. To the recommendation score we add the value stored in this entry normalized by the sum of all entries for si. Finally, all the covisitation scores are normalized to a value between 0 and 1 by linear scaling.

联合所有方法,算出最后文章的得分。

系统分为离线和在线部分,离线部分对用户根据点击历史记录聚类,在线部分统计用户点击事件和产生推荐列表。

两个表 UT 统计用户点击数量和记录用户-类别关系,ST记录文章之间的点击数和记录文章-类别关系,