Google和Youtube的个性化推荐论文

Google的个性化:

讲的就是长期执互联网牛耳的google,在新闻的个性化推荐上的工作:

总体思路就是在说google是怎么在工程上使用CF的,潜意思就是说之前用CF的都是战5渣:你们够large么?你们是dynamic的么?你们是实时的么?你们有能力来处理足够large和dynamic的训练和更新么?你们直到怎么把训练更新的过程分解成并行么?

抛开Google自负的炫耀自己的工程能力的过程(我是Google死忠粉),只大概说一下算法本身的思想。

google所用的是纯基于用户点击行为的,与新闻内容完全无关的CF,即传统意义上的user-based CF,和你类似的人也点了什么

OK,那么怎么定义“和你类似”呢?

具体做的时候,两种思路:

1.minhash,大家在之前58举行的编程比赛上应该都有用过这个吧。不像传统的hash(md5)那样差之毫厘,谬以千里,本身相似的两个东西在经过minhash后依然相似。这里就是对两个用户的点击记录进行minhash,计算相似度

2.plsi。语言模型的一种。近几年几种流行的语言模型(lsa, plsa, lda)的共同点是都引入了一个潜在隐藏层,这3个单词里面的l都表示latent。这个隐藏层描述了一种分布关系。加入plsa之后,原本的user层-item层这种二级关系(用户点击了什么网页)变成了三级关系,这多出来的一级你可以理解为用户的聚类(这群类似的用户点了什么网页),或者网页的聚类(什么用户点击了这群类似的网页),这里为了下文的叙述方便,就说成是用户的聚类吧

ok,既然通过plsi得到了“用户的聚类”这样一层关系,后面的推荐也就很好理解了:看看一个用户都属于哪些cluster,对每一个cluster都看一下这个cluster里面的所有用户点击网页s的总次数 / 这个cluster所用用户点击所有网页的次数,把这些总次数都加起来就是得分了。

举个简单例子,一个用户(dongdong)在经过google的plsi系统处理后,属于3个cluster,这3个cluster分别是体育,IT,政治

然后有2个网页A和B,A的title是“科比代言联想手机”,B的title是“奥巴马在白宫会见热火队全体成员”

它们的点击数如下

体育                        IT                        政治

A 50/500=0.1 150/300=0.5 5/400=0.0125

B 200/500=0.4 10/300=0.03 80/400=0.2

这里A在体育这栏下的50/500表示,在体育这个cluster里的所有用户一共点击了500次,其中点击A网页50次.其他同理

那么A的得分就是0.1+0.5+0.0125<B的得分0.4+0.03+0.2,所以应该推荐B

上面两段我用了很多废话描述定义“和你类似”的方式,有了相似度定义后就是Google逆天的工程能力支持下的排序了。

通过CF的启发,同时看一下linkedin在计算企业相似度,用户相似度,职位相似度等方法,是否58的企业可以这样来计算相似度?

1.两个企业首先要满足在一个城市local下

2.通过某段时间内,两个企业在招聘/简历类目下的query list来计算相似度

3.通过两个企业下载过的简历,抽取简历的相关特征来计算相似度

有了相似度后,可以参考一些推荐的方法来进行排序,如“和你相似的企业下载了简历A,就把A排到前面来”。不知道如何评估这种的实现成本。。

Youtube的个性化: 《The YouTube Video Recommendation System》里面提到Youtube进行个性化推荐时的需求和挑战:推荐的视频既要满足用户兴趣,又要具有多样性。 总的来说,Youtube的个性化推荐仅用于登陆用户, 不像Netflix(电影)和Amazon(商品),Youtube上推荐的item没有那么好的结构化,视频的metadata很多是不完整甚至是错误的。Youtube使用的数据来源: 视频本身的metadata User维度的行为(包括收藏,加入播放列表,打分等等) 需求: 为user提供TopN个推荐视频 时效性 recent&fresh 相关性 relevance 多样性 diverse 可解释性

输入数据: 视频本身:stream & metadata noisy,metadata可能缺失/不完整/过期/错误 user数据: explicit:收藏/打分/加入列表/分享 implicate:对某视频看了比较长的时间 隐式的可能不完整,缺乏说明性

Youtube的方式是, 通过User维度的行为生成seeds,通过seeds拿到推荐的候选集,用各种参数对候选集排序

1.怎么生成seeds 定义关联视频:用户在看完一个视频后,接下来去看的视频.或者说2个视频的co-visit-count比较高 方式:关联规则&统计co-visit-count,threshold,排序

2.通过seeds生成推荐候选集 方式1:候选集是seeds里面直接关联的视频集合.缺点:不能反映多样性 方式2:候选集是seeds里面的视频,通过若干次关联,能关联到的视频.这种方式是1的推广,实验证明也取得了较好的效果.即使seeds很小,经过几次关联后也能扩充到很大.

3.排序 1.视频本身的质量:观看数/评分/评论/分享次数/上传时间等 2.用户维度:对符合用户偏好的视频加权 3.多样性:候选推荐集里,彼此很相似的视频会被删掉一个.一种简易的方式是限制来自同一个视频的推荐结果数或者同一个上传者得结果数,其他可以用聚类的方式等

4.展示方面的 缩略图 摘要:这是为了用户体验的 对推荐的解释

5.实现方面: 采用批处理,离线计算系统.优点是可以充分计算,缺点是时效性.所以每天会计算好几次 用BigTable存储用户数据 用MapReduce直接处理BigTable计算

结果方面: ctr是单纯采用热门推荐的2倍以上

一些启发: 数据噪音大,就尽量回避这部分