[神盾推荐系统]在手Q动漫Feeds流推荐实现PRFM算法

作者:徐匆,黄俊|腾讯社交网络运营部高级研究员

腾讯神盾开放通用推荐系统一般将推荐问题转化为分类问题,而对于列表推荐场景,推荐问题更近似于排序问题。本文将介绍排序学习技术与推荐算法结合的Pairwise方法及其具体实现 – Pairwise Ranking Factorization Machines (PRFM) 算法,并分享PRFM算法在手Q动漫Feeds流推荐场景的应用,供想在其他场景应用此算法的同学参考。

1. 概述

目前神盾推荐中的算法一般将推荐问题形式化为二元分类问题:以动漫推荐为例,如下图所示,对于用户与他所曝光的物品集合,把点击看作正样本 (标签=1),未点击看作负样本 (标签=0),可以构造由<用户,物品>与标签构成的训练样本,用于训练一个二分类模型

这种方法称为Pointwise方法,即模型在参数训练阶段只考虑对每个<用户,物品>独立的打分,目标是使得所有正样本的打分高于负样本的打分。如上图的例子所示,Pointwise方法的训练目标是:模型给<小蓝,狐妖小红>,<小蓝,浪客剑心>,<小黄,龙珠>的打分都高于<小蓝,妖神记>,<小黄,名侦探柯南>。

 仔细思考不难发现Pointwise方法的缺点,比如对小黄来说,只需要模型给<小黄,龙珠>的打分高于<小黄,名侦探柯南>即可,至于<小黄,龙珠>的打分是不是高于<小蓝,妖神记>并不重要。抽象来说就是:Pointwise方法没有考虑对同一个用户而言物品与物品之间的排序关系。

本文介绍的Pairwise方法对Pairwise方法的不足做了改进,训练样本由<用户,物品1,物品2>三元组构成,其中物品1为此用户点击了的物品,物品2为此用户未点击的物品。Pairwise方法侧重于判断物品对<物品1,物品2>是否满足顺序关系 (即<用户,物品1>的打分是否高于<用户,物品2>)。如下图所示,Pairwise方法在模型训练阶段的目标是:<小蓝,狐妖小红娘>打分高于<小蓝,妖神记>,<小蓝,浪客剑心>打分高于<小蓝,妖神记>,<小黄,龙珠>打分高于<小黄,名侦探柯南>。

另一方面,在Pointwise方法的样本构造中,我们简单地将点击看作正样本、未点击看作负样本,等于给Pointwise方法加了一个假设:用户点击的物品是用户明确喜欢的,未点击的物品是用户明确不喜欢的。事实上,点击行为属于隐式反馈,这个假设显得过于强烈。而Pairwise方法的假设更符合实际:相对于用户未点击的物品,用户更喜欢那些他点击了的物品。

Pairwise方法作为排序学习 (learning to rank) 技术与推荐系统算法的结合,近年来得到了学术界与工业界的密切关注与研究。本文介绍的Pairwise Ranking Factorization Machines (PRFM) 算法是Pairwise方法的一种具体实现,我们在神盾推荐中实现了PRFM算法,并应用在手Q动漫首页Feeds流推荐场景。与Pointwise FM算法对比,使用同样的特征,PRFM算法在uv点击率上获得了大约5%的相对提升

注:BlackWidow: PRFM算法,Feeds素材级联_900: Pointwise FM算法

2. Pairwise Ranking Factorization Machines (PRFM) 算法细节

与Pointwise方法一样,Pairwise方法可以选择不同的模型给<用户,物品>打分,如LR、FM等。由于FM模型能节省LR模型在特征工程上的人力消耗,且实践证明FM使用原始特征能比人工调优后的LR取得更好的线上效果 (参见Pointwise FM算法),因此我们选取FM模型为打分公式。在样本构造方面,对每个用户可以构造许多物品对<物品1,物品2>从而得到<用户,物品1,物品2>的样本实例。如果考虑所有的样本实例,会导致样本过大无法训练,为此我们采取的策略是: 对每个用户随机选取100个物品对。

上述的样本构造与打分模型构成了Pairwise Ranking Factorization Machines (PRFM) 算法。下面介绍关于PRFM算法的一些数学细节,不感兴趣的同学可以跳过这部分。

为由用户特征、物品特征、上下文特征等组成的特征向量)

其中

为需要训练的参数。参数训练中用到的损失函数定义为:

3. 排序算法离线评价指标与参数调优

与分类问题使用AUC作为评价指标不同,用于衡量排序性能的常用评价指标主要有Precision at k, MAP (mean average precision), 与NDCG (normalized discounted cumulative gain) at k。下面我们通过一个例子简单介绍这几个指标的定义与计算方法 (如下图所示的曝光物品列表中,绿色代表用户有点击的物品,灰色代表用户未点击的物品)。

Precision at k: (Prec@k)

用户有点击的物品在列表的前k个物品中的比例,值越大表示推荐质量越高。如上图的例子中,列表(a)的Prec@5 = 2 / 5 = 0.4,列表(b)的Prec@5 = 1 / 5 = 0.2。对每个用户可以计算一个Precision at k,对所有用户取平均即得到用户集合的Precision at k。

MAP (mean average precision):

可以看成Precision at k的加强版,把用户有点击的物品在列表中出现的位置加入指标的计算中,值越大表示推荐质量越高。AP (average precision) 指在每个用户有点击的物品所在位置k求一次Precision at k,然后求平均。如列表(a)的AP=(1/2+2/4)/2=0.5,列表(b)的AP=(1/4+2/7)/2=0.268,由此可见,从Precision at 10的角度看,列表(a)与(b)没有优劣之分,但从AP的角度看,列表(a)优于列表(b)。同样地对每个用户可以计算一个AP,对所有用户取平均即得到用户集合的MAP。

NDCG (Normalized Discounted Cumulative Gain) at k: (NDCG@k)

NDCG at k的计算较为复杂,不在这里详细介绍,感兴趣的同学可以参考NDCG的计算。简单来说,在NDCG的计算中,用户有点击的物品在列表中出现得越靠前被认为越有价值,与MAP的思路一致。

了解算法的离线评价指标后,我们可以对其进行参数调优。与Pointwise FM算法相同,PRFM算法可以调优的参数有:模型参数初始化时使用的正态分布标准差(init_std)、正则化系数(reg)、隐向量维度(factor)。下图展示了在手Q动漫Feeds流上的调优示例,根据调优结果我们决定使用的参数为:init_std=0.005,reg=0.0001,factor=100。

注:橙色框表示调整的参数,绿色框表示各指标的最大值

4. 算法改进计划

上文中提到,PRFM算法的样本构造方法是对每个用户随机选取100个<物品1,物品2>的物品对,但有研究表明,使用不同的抽样策略可以提升模型效果 (见参考资料1)。例如:对每个用户,将物品对<物品1,物品2>按物品1与物品2在曝光列表中出现的位置之差从大到小排序,取排在前面的100个。此抽样策略的思路是:物品1与物品2在曝光列表中出现的位置之差越大,表示在这个物品对中,相对用户未点击的物品,用户有点击的物品排得越靠后,即<物品1,物品2>的在列表中顺序关系错误,模型更需要在这些物品对上进行训练。后续我们将在神盾推荐中尝试各种不同的抽样策略,再把经验分享给大家,欢迎感兴趣的同学与我们一起探索!

参考资料

  1. PRFM论文 (http://wnzhang.net/papers/lambdafm.pdf)
  2. 排序评价指标 (https://spark.apache.org/docs/2.2.0/mllib-evaluation-metrics.html#ranking-systems)

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏窗户

Conway生命游戏

  1970年,英国数学家Conway发明了生命游戏。抛开元胞自动机的复杂概念,我们只是去感受一下二维的生命游戏,这其实是元胞自动机的一个特例。

2661
来自专栏机器之心

入门 | 神经网络词嵌入:如何将《战争与和平》表示成一个向量?

项目地址:https://github.com/WillKoehrsen/wikipedia-data-science/blob/master/notebook...

922
来自专栏CSDN技术头条

各种编程语言的深度学习库整理

‍Python 1. Theano是一个python类库,用数组向量来定义和计算数学表达式。它使得在Python环境下编写深度学习算法变得简单。在它基础之上还...

2348
来自专栏人工智能

从零开始学人工智能-Python·决策树(四)·树

作者:射命丸咲Python 与 机器学习 爱好者 知乎专栏:https://zhuanlan.zhihu.com/carefree0910-pyml 个人网站:...

2779
来自专栏java一日一条

基于 10 大编程语言的 30 个深度学习库

本文介绍了包括 Python、Java、Haskell等在内的一系列编程语言的深度学习库。

1211
来自专栏数据结构与算法

HDU4405 Aeroplane chess(期望dp)

抄袭自https://www.cnblogs.com/Paul-Guderian/p/7624039.html

1022
来自专栏QQ大数据团队的专栏

在手Q动漫Feeds流推荐实现PRFM算法

2743
来自专栏一心无二用,本人只专注于基础图像算法的实现与优化。

一年去雾算法研究的总结。

  从最开始的Crimm Imageshop中最简单的去雾功能开始,到前不久为止研究的诸多去雾算法,再到近日和一些朋友的关于去雾经验的交流,感觉自己对这个方面的...

38710
来自专栏AI研习社

从零开始用 TensorFlow 分析情绪,硅谷网红带你飞

Siraj Raval 作为深度学习领域的自媒体人在欧美可以说是无人不知、无人不晓。 凭借在 Youtube 上的指导视频,Siraj Raval 在全世界吸...

3986
来自专栏智能算法

基于 10 大编程语言的 30 个深度学习库

本文介绍了包括 Python、Java、Haskell等在内的一系列编程语言的深度学习库。 Python Theano 是一种用于使用数列来定义和评估数学表达的...

3855

扫码关注云+社区

领取腾讯云代金券