当前位置:主页 > 财经 >

【深度解密】今日头条个性化资讯推荐技术(2)

发布时间: 2017-12-03 04:07 来源:网络整理

这里的动态性主要体现为用户兴趣随时间改变、当前热点随时间改变。用户在一天里的不同时刻、不同地点、不同上下文里的阅读兴趣都有所差别,动态在变化。

个性化推荐算法

围绕上面这几个挑战,业界各大资讯类产品在做推荐时想出了各种招儿来解决,接下来,我们就梳理下业界经典的做法。这里以产品为主线,以具体要解决的问题为辅线来进行梳理,会集中介绍下Google News、Yahoo Today、今日头条等产品的推荐算法,并着重介绍下深度学习在这个领域的最新进展。

● Google News

Google News是一款经典的资讯推荐产品,也是后来者竞相模仿的对象。2007年,Google News在www上首次发表论文《Google News Personalization: Scalable Online Collaborative Filtering》公开资讯推荐技术。该论文的做法非常自然、简洁,从论文题目就能看出是CF的落地上线。Google是这样想的:鉴于大家都觉得CF是推荐领域公认的有效算法,那将其直接用在产品上效果自然也不会太差。

但经典的CF有个巨大的问题,无论是user-based还是item-based,当你要算任意两个user或者两个item之间相似度的时候,计算量会非常巨大。因为CF的计算量直接取决于特征维数和user、item pairs的数目,而资讯类产品这两个数目都非常巨大:

每个user、item的特征因为大多是曝光、点击等行为类特征,而资讯类产品这些行为发生的cost很小几乎可以忽略不计,导致维度往往比较高;

资讯类产品的user数目和item数目都很大,这和一般领域往往只有一方比较大是不同的。

Google这篇论文的核心就是将CF改造为支持大规模计算的方法。

其原理也很简单:将用户事先分成群,再做user-based CF时实际变成了(user) cluster-based CF。这样在工程实现上就简化了很多,线上只需要记录每群用户喜欢什么(实际做法是用到了基于的内存key-value系统,key为资讯ID,而value则是资讯在用户群上的各种统计值)。一个用户来了之后,先找到其对应的群,再推荐这个群喜欢的资讯就好。而线下则借助Map-Reduce实现了MinHash、PLSI两种聚类分群算法,定时把最新分群结果推到线上。

为什么Google News会先选择协同过滤算法呢?除了CF算法在其他场景有成功的应用之外,还有一个重要的特点:CF是一个依赖用户行为数据就可以work的算法,它不像其他基于内容推荐的算法对NLP能力要求很高。选择CF,则绕过了NLP这个拦路虎(有经验的人都知道,NLP是一个长期积累的过程,很难一开始就做到比较出色的程度)。透过这篇文章,我们也不难发现工业界解决实际问题时的一个基本套路:重头做一个模型时,会选择最经典的一个实现,然后快速上线解决一大半问题。

结合前面总结的资讯推荐的挑战,可以看到该算法主要解决了可扩展性问题。我们也不难发现这个user cluster-based的算法也有一些明显的缺点:1)它不能解决新用户、新资讯的冷启动,因为没有行为数据来支撑CF运转;2)推荐精度不够高,没有做到真正的个性化。这是cluster-based CF算法本身的特点决定的;3)实时性不够。用户聚类不能做到快速更新,这导致了对用户最新兴趣把握有不及时的风险。这些问题在Google News的另一篇论文中得到了解决。

Google News在www 2010上放出了《Personalized News Recommendation Based on Click Behavior》。这篇文章重点解决推荐精准性和新资讯的冷启动问题,文章想法也很朴素自然,主要是基于贝叶斯理论进行建模。他们假设用户兴趣有两个方面:个人不断变化的兴趣以及当前新闻热点。在具体建模之前,作者先基于历史数据进行了统计分析,验证了他们的假设,得到如下基本结论:用户的兴趣是随时间变化的,新闻热点也是随时间变化的。还有一个比较比较有趣的结论是不同地区同一时间的新闻热点是不一样的。下图是不同地区不同时刻体育类新闻的阅读占比。

这幅图纵轴是体育新闻阅读量在该地区总新闻阅读量的占比,越高表示该地区的用户越喜欢看体育新闻。横轴则是时间点,用黑线标示出的三个时间点从右到左则分别对应奥运会、欧洲杯以及美国职业棒球大联盟进行时。而图中的三条不同(颜色)标示的线则代表西班牙、美国、英国三个地区。不难发现,这副图不仅揭示了同一地区用户对体育新闻的感兴趣程度是随时间变化的,更揭示出西班牙、英国等国家更爱看体育新闻。





搜索