本文的核心是将CF转化为一种支持大规模计算的方法。
原理也很简单:提前把用户分成组,然后做用户的时候就变成(user)-了。这样工程实现就简化了很多,只需要在网上记录每一组用户喜欢什么(实际做法是使用基于内存的密钥系统,这里的密钥是信息ID,是信息对用户组的各种统计值)。用户来了之后,先找到对应的群,然后推荐这个群喜欢的信息。离线时,使用两种聚类算法,地图和PLSI,定期在线推送最新的聚类结果。
为什么先选择协同过滤算法?CF算法除了在其他场景中的成功应用外,还有一个重要的特点:CF是一种依赖用户行为数据工作的算法,与其他基于内容推荐的算法不同,它对NLP能力的要求很高。如果选择CF,就会绕过NLP(有经验的人都知道,NLP是一个长期的积累过程,一开始很难达到更好的水平)。通过这篇文章,不难发现解决行业实际问题时的一个基本套路:再做一个模型的时候,我们会选择最经典的实现,然后快速上线解决一大半的问题。
结合以上总结的信息推荐面临的挑战,可以看出该算法主要解决的是可扩展性问题。不难发现,这种基于用户聚类的算法也有一些明显的缺点:1)由于没有行为数据支持CF操作,无法解决新用户和新信息的冷启动问题;2)推荐准确率不够高,没有真正的个性化。这是由基于聚类的dCF算法本身的特点决定的。3)实时性不够。用户聚类无法快速更新,导致不能及时掌握用户最新兴趣的风险。谷歌新闻的另一篇论文已经解决了这些问题。
GoogleNews于www2010发布《PersonalizedNewsRecommendationBasedonClickBehavior》。本文重点解决推荐准确率和新信息冷启动问题,文章思路也很简单自然,主要是基于贝叶斯理论进行建模。他们假设用户的兴趣有两个方面:个人不断变化的兴趣和当前的新闻热点。在具体建模之前,作者根据历史数据进行了统计分析,验证了他们的假设,并得出以下基本结论:用户兴趣随着时间,而变化,新闻热点也随着时间而变化。另一个有趣的结论是,不同地区和同一时间的新闻热点是不同的。下图是不同地区不同时间的体育新闻阅读比例。
这个数字的纵轴是该地区体育新闻阅读量占新闻阅读总量的比例。数字越高,该地区越多的用户喜欢看体育新闻。横轴是时间点,用黑线标出的三个时间点从右到左分别对应奥运会、欧洲杯、职业棒球大联盟。图中用不同颜色标注的三条线分别代表西班牙、美国和英国。不难发现,这张图不仅揭示了同地区用户对体育新闻的兴趣程度随着时间,的变化而变化,也揭示了西班牙、英国等国家更喜欢看体育新闻。
该方法主要对用户对当前新闻的兴趣程度进行建模,这取决于两个方面:用户对此类新闻的兴趣程度和当前新闻的受欢迎程度。通过贝叶斯理论,这两个方面可以通过下面的公式直接联系起来:
其中分子左半部分
表示用户当前对某类新闻感兴趣的概率,通过汇总用户近期在不同时间版块的兴趣度来计算,而用户在某个时间版块的兴趣度通过以下公式计算。
这个公式乍一看很复杂,但它的实际含义其实很简单,可以理解为简单地计算某一类型的新闻阅读量占用户在时间版块的所有新闻阅读量的比例。而分子右半部分
它表示当前某个新闻在该地区的受欢迎程度(这类新闻被该地区点击的概率),这实际上是通过计算短时间中用户点击这类新闻的比例而获得的
总的来说,算法非常简洁自然,很好的解决了CF留下的问题:1)引入新闻类别,解决了新新闻的冷启动;2)引入用户兴趣,解决了个性化和推荐准确性的问题。但是新用户冷启动还是有优化空间的,因为按照这个方法,同一个地区的不同新用户推荐该地区最热门的内容。
YahooToday
YahooToday团队于2009年在WWW上发布了《PersonalizedRecommendationonDynamicContentUsingPredictiveBilinearModels》,重点解决信息推荐中的冷启动问题。与以往的谷歌新闻不同,本文试图同时解决新用户和新信息的冷启动问题。本文的基本假设是用户画像可以刻画用户的阅读兴趣,新闻画像也可以表达新闻的点击率,而用户对新闻的喜欢程度取决于静态预测和动态预测,采用基于特征的学习方法对用户对信息的兴趣程度进行建模。具体而言,用户xi对信息zj的兴趣分数计算如下。
所谓bilinearmodel的含义当你省略一个自变量时,另一个自变量与因变量成线性关系。比如下式中不考虑Z时,S与X线性相关;不考虑x,s,z也是线性的。此外,如果将用户和信息的特征分为静态和动态类别,则上述公式可以写成:
最后一个方程后面的第一项是静态预测得分,第二项是动态预测得分。
因此,当新用户到来时,第二个特征是no,相当于只用用户的人像等静态特征来解决新用户的预测问题。说到新信息也是如此。静态特征,如收集到的用户的年龄、性别、地域等基本属性,以及从其他途径获得的历史信息,如在同类产品和其他场景上的行为,以及信息的类别、主题等。和动态特征,如YahooToday上用户的各种阅读、点击和评分,以及时间段某条信息和某类信息的各种统计值等。有了预测分数s,我们就可以通过与真实标签的比较(比如用户是否点击了一条消息r(i,j))得到机器学习训练的反馈信息。本文的优化目标是基于贝叶斯理论的最大后验概率,同时采用了众所周知的梯度下降法。
2010年,雅虎发表了更有效的文章《AContextual-BanditApproachtoPersonalizedNewsArticleRecommendation》解决冷启动。本文基于传统的探索开发(EE)例程。你可能很熟悉为一个新项目随机展示一部分流量并获得一些反馈。只有这样,模型才能有更好的建模能力。这是最幼稚的EE策略。
稍高的方法是上限(UCB)策略3。3360假设有k件新物品,没有任何先验知识,并且每件物品的归还是完全未知的。每个项目的回归均值都有一个置信区间,随着试验次数的增加,置信区间会变窄,对应的最大置信边界接近均值。如果我们每次推出都选择置信区间上限最大的,那就是UCB策略。这个策略的原理也很好理解。说白了,它达到了两个想要的效果:
评论(0)