Pinterest主页的机器学习#
Pinterest拥有超过300亿(正在增长)附有背景和视觉信息的“pin”。1000W用户每天通过浏览器、搜索、pin以及通过点击外部网站访问交互。主页收集用户发布的pins,公布到boards并按兴趣划分,同时为用户挑选推荐,因此主页成为最重要的用户参与服务,并贡献相当大比例的repins。越来越多的用户pin,人们可以获取更好的Pinterest,我们处于一个独特的位置为探索持续不断的提供灵感。
主页是发现新事物的关键,对用户来讲最有价值的部分,但是面临一个挑战性的问题。鉴于从各种渠道不断增加的Pins,我们如何挖掘最个性化、最相关的pins?我们的答案是Pinnability!
Pinnability是我们帮助用户在其主页发现最好内容的机器学习模型总称。她是智能主页技术的一部分,去年八月,我们推出、估计用户与之交互的pin的相关度。有了准确预测,我们优先考虑具有高相关度的pins,并展示在主页的最顶端。
Pinnability 所带来的好处##
在推出Pinnability几个月之前,所有主页都是按照时间顺序排列的,没有考虑哪个pins是用户最感兴趣的。换句话讲,来至同一源的新pin,在旧pin之前总是出现的。这个简单的规则是易于理解和实现的,但是它缺少有效帮助用户发现他们真正感兴趣的pin的能力。因为,一个低相关度的pin可能恰好出现在高相关度pin之前。
<center>图 1 在Pinnability之前的主页,颜色代表相关度</center>
随着在Pinnability的启动,主页使用Pinnability模型对候选pin评分。评分代表用户和候选pin之间个性化的相关程度。主页中的pin按相似度评分排序。如图2所示:
<center>图 1 在Pinnability之后的主页,pin按个性化相似度评分排序</center>
强大的Pinnability与机器学习##
如何准确预测用户与其交互的Pin的相关程度,使用最先进的机器学习模型,包括Logistic回归、支持向量机、梯度提升决策树(GBDT)和卷积神经网络(CNN)。提取测试对于准确预测相关性评分有用的成千上万个文本和图像特征。在我们推出一个在线的A/B实验模型前,我们完全根据历史数据评估其离线性能。
图3概括了Pinnability流的三个主要部件,分别为训练实例生成、Pinnability模型生成和主页服务。
<center>
<center>图 3 Pinnability过程概览</center>
训练实例生成##
Pinnability训练数据的基础是用户与主页pin交互的历史数据。例如,在主页查看了一个pin之后,用户有可能选择喜欢、repin、单击pin关闭、点击率、评论、隐藏或者什么也不做。记录一些“positive actions”和“negative actions”作为训练实例。很明显,pin被查看的次数通常大于用户做出positive actions数量,因此,以不同的比例对正例和负例进行采样。有了这些定义,我们测试成千上万的信息特征,提高Pinnability预测精度。
其独特的数据包含丰富的人力策划内容,以便对pin,board和用户动态提供大量Pinnability准确预测的信息特征。这些特征可以分为三大类:pin特征,用户特征和交互特征:
- Pin特征捕获一个Pin的固有性质,例如历史流行度,Pin新鲜度和“垃圾”似然性。CNN中的视觉特征也包括在内。
- 用户特征关于用户的细节,例如pin的活跃程度、性别和board的状态。
- 交互特征代表用户与相似类型Pin的过去交互信息。
一些特征受转化(transformation)和标准化(normalization)影响。例如,对数变换应用于许多“计数特征”,如用户拥有的Pin的数量具有友好的回归分布。
在开发一个健壮的训练数据生成过程面临的主要挑战是如何应对大数据的规模。使用Mapreduce生成训练实例,每个代表用户/pin的交互。一个训练实例包含三部分信息: - 当我们想训练、分析训练实例子集的Pinnability模型,会对原始数据(Pin ID ,用户ID,交互信息,时间戳等等)分组。如为你挑选(PFY)模型。
- 目标变量表示用户在查看pin是否做出positive action。我们和训练独立模型,优化不同positive actions,如repin和点击率。
- 特征向量包含信息信号的交互预测。
Pinnability模型生成##
在训练Pinnability模型中,使用AUC、R^2和RMSE作为离线模型的评估指标。优化AUC,不仅因为其广泛应用于类似预测系统中,而且由于观察到离线测试下的AUC增益和在线A/B实验中用户参与的增长具有强正相关性。Pinnability模型实现AUC得分均值为90%左右。
我们尝试多种机器学习模型,包括LR、GBDT、SVM和CNN,在10-折交叉验证和90/10切分训练-测试数据集设置下,使用AUC得分评估模型参数。观察得出,对于给定的固定特征集合,Pinnability的最优模型总是趋于LR或GBDT。对于在线A/B实验,基于离线AUC得分优先模型。
向训练实例加入了上千种特征,选择的特征能够显著增强作为在线A/B实验候选人的离线AUC指标。由于有大量特征,通常在小组中测试新特征,如新旧程度、Pin所有者的性质和分类匹配特征。A/B实验比较用户参与在生产特征和使用新实验特征的小组。如果结果为正,我们评估额外的数据大小和添加新特征到生产环境Pinnability模型的延时影响。通过健壮的训练实例生成、模型训练和评估快速迭代。为了持续监控模型性能,保留小部分没有暴露给Pinnability模型的截留用户小组。比较截留组和启用组之间差异,为Pinnability 长久表现提供宝贵见解。
现在,使用离线批处理数据训练模型。这将造成一个潜在的问题,我们不利用最新数据去动态调整服务中模型的参数。另一方面,在训练由数天切分数据的不同批次是,测试并确认模型参数基本不变。因此,在线模型调整收益于进一步评估。
同时探索实时情况下在线训练的方法,提升离线训练过程,所以在收集主页活动数据后,模型立即被校准。在线训练带来机器学习过程算法和主页服务框架新的挑战。
主页服务##
主页是由内部的智能主页基础构架提供的。当一个新的Pin被repin时,智能主页worker为repin的pin和所有关注repin用户和board发送相关性评分的请求到Pinnability服务器。
当一个用户登录或刷新主页,智能主页内容生成器在各个池遵循相关性评分同时,从各种池中物化新的内容,智能主页服务呈现按相关性评分优先的用户主页。
Pinnability成果##
将继续完善Pinnability并发布一些最新的改进。随着每次循环,发现用户参与显著提升,包括以超过20%速率增长的主页repin计数。同样也观察到其他指标包括repin总数和点击率的显著受益。
鉴于主页的重要性和用户参与的提升,Pinnability继续作为构建发现引擎的核心项目。同时扩大使用Pinnability模型帮助提高主页以外的其他产品。
我们一直在寻找聪明的工程师加入Pinterest,帮助解决类似Pinnability影响力的问题。
云松郭是关于推荐团队软件工程师。
致谢:Pinnability是与Mukund Narasimhan, Chris Pinchak, Yuchen Liu, Dmitry Chechik and Hui Xu合作开发的一项长期战略工程。这个团队,以及整个公司的人,以他们的技术见解和宝贵的反馈意见帮助这个项目实现。
对于Pinterest工程的新闻和更新,关注我们的Pinterest,Facebook and Twitter。有兴趣加入这个团队?请看我们的招聘网站。