Deep&Wide实践——读“深度学习在美团点评推荐平台排序中的运用”

线上场景

首页推荐

场景特点:

业务形态多样、消费场景多样;推荐系统,需要准确捕获用户的兴趣点或用户的实时意图。而且我们推荐的场景也会随着用户兴趣、地点、环境、时间等变化而变化。

美团场景:于地理位置息息相关;日志比资讯少;

相比于资讯类推荐:资讯类推荐用户行为日志更多,用户注意力更分散。

相比于搜索排序:有明确的query 输入,个性化需求相对较少。

相对于购物类推荐:用户注意力 短期集中,介于 搜索与咨询中间。

总体架构:

召回层;排序层。

1. 召回层:我们通过用户行为、场景等进行实时判断,通过多个召回策略召回不同候选集。再对召回的候选集进行融合。候选集融合和过滤层有两个功能,一是提高推荐策略的覆盖度和精度;另外还要承担一定的过滤职责,从产品、运营的角度制定一些人工规则,过滤掉不符合条件的Item。召回策略主要有:

1)协同过滤型: N个相似用户对item的召回;历史item 对item 的召回;直接将user 和item 向量化的召回。

2)Query意图:Query中包含的实时信息(如地理位置信息、WiFi到店、关键词搜索、导航搜索等)对用户的意图进行抽象,从而触发的策略。

3)地理位置:根据用户的实时地理位置、工作地、居住地等地理位置触发相应的策略。

扫描二维码关注公众号,回复: 5204788 查看本文章

2. 排序层:

1)离线计算层:离线计算层主要包含了算法集合、算法引擎,负责数据的整合、特征的提取、模型的训练、以及线下的评估。

2)近线实时数据流:主要是对不同的用户流实施订阅、行为预测,并利用各种数据处理工具对原始日志进行清洗,处理成格式化的数据,落地到不同类型的存储系统中,供下游的算法和模型使用。

3)在线实时打分:根据用户所处的场景,提取出相对应的特征,并利用多种机器学习算法,对多策略召回的结果进行融合和打分重排。

历史迭代:

点评推荐排序系统尝试了多种线性、非线性、混合模型等机器学习方法,如逻辑回归、GBDT、GBDT+LR等。通过线上实验发现,相较于线性模型,传统的非线性模型如GBDT,并不一定能在线上AB测试环节对CTR预估有比较明显的提高。而线性模型如逻辑回归,因为自身非线性表现能力比较弱,无法对真实生活中的非线性场景进行区分,会经常对历史数据中出现过的数据过度记忆。系统在非常靠前的位置推荐了一些远距离的商户,因为这些商户曾经被用户点过,其本身点击率较高,那么就很容易被系统再次推荐出来。但这种推荐并没有结合当前场景给用户推荐出一些有新颖性的Item。为了解决这个问题,就需要考虑更多、更复杂的特征,比如组合特征来替代简单的“距离”特征。怎么去定义、组合特征,这个过程成本很高,并且更多地依赖于人工经验

而深度神经网络,可以通过低维密集的特征,学习到以前没出现过的一些Item和特征之间的关系,并且相比于线性模型大幅降低了对于特征工程的需求。

实践:

1. 数据角度

1)样本:在训练时对于购买过的样本进行一定程度的加权;为了防止过拟合/欠拟合,我们将正负样本的比例控制在10%;训练样本清洗,去除掉Noise样本(特征值近似或相同的情况下,分别对应正负两种样本)。

2)特征:

用户画像:性别、常驻地、价格偏好、Item偏好等。

Item画像:包含了商户、外卖、团单等多种Item。其中商户特征包括:商户价格、商户好评数、商户地理位置等。外卖特征包括:外卖平均价格、外卖配送时间、外卖销量等。团单特征包括:团单适用人数、团单访购率等。

场景画像:用户当前所在地、时间、定位附近商圈、基于用户的上下文场景信息等。

2)特征预处理:特征组合;归一化。

3)模型角度:Optimizer 选择 Adam。 损失函数 选择 交叉熵。

在离线阶段,我们采用基于Theano、Tensorflow的Keras作为模型引擎。在训练时,我们分别对样本数据进行清洗和提权。在特征方面,对于连续特征,我们用Min-Max方法做归一化。在交叉特征方面,我们结合业务需求,提炼出多个在业务场景意义比较重大的交叉特征。在模型方面我们用Adam做为优化器,用Cross Entropy做为损失函数。在训练期间,与Wide & Deep Learning论文中不同之处在于,我们将组合特征作为输入层分别输入到对应的Deep组件和Wide组件中。然后在Deep部分将全部输入数据送到3个ReLU层,在最后通过Sigmoid层进行打分。我们的Wide&Deep模型在超过7000万个训练数据中进行了训练,并用超过3000万的测试数据进行线下模型预估。我们的Batch-Size设为50000,Epoch设为20。随着隐藏层宽度的增加,线下训练的效果也会随着逐步的提升。但考虑到线上实时预测的性能问题,我们目前采用256->128->64的框架结构。

从线上效果来看,宽深度学习模型一定程度上解决了历史点击过的团单在远距离会被召回的问题。同时,宽深度模型也会根据当前的场景推荐一些有新颖性的Item。

宽深度模型中的宽线性部分可以利用交叉特征去有效地记忆稀疏特征之间的相互作用,而深层神经网络可以通过挖掘特征之间的相互作用,提升模型之间的泛化能力。在线实验结果表明,宽深度模型对CTR有比较明显的提高。同时,我们也在尝试将模型进行一系列的演化:将RNN融入到现有框架。现有的Deep & Wide模型只是将DNN与线性模型做融合,并没有对时间序列上的变化进行建模。样本出现的时间顺序对于推荐排序同样重要,比如当一个用户按照时间分别浏览了一些异地酒店、景点时,用户再次再请求该异地城市,就应该推出该景点周围的美食。引入强化学习,让模型可以根据用户所处的场景,动态地推荐内容。

地址:https://www.mtyun.com/library/dl

猜你喜欢

转载自blog.csdn.net/weixin_34163553/article/details/86903294
今日推荐