个性化推荐技术与实践(技术开放日一期内容)

作者/分享人:中国互联网技术联盟

中国技术开放日:美团O2O领域推荐系统的设计思路和实现方法 作者: 马沛

中国互联网技术联盟的第一期技术开放日的主题是《数据驱动的个性化推荐技术与实践》,本文根据美团高级技术专家曹浩在联盟技术开放日上的精彩分享整理,希望对正在做个性化推荐的研发团队能有所借鉴。

2015年年初时,美团移动端就已经贡献了90%以上的交易额。因此移动端场景下的精准推荐变得更加重要,首先看一下美团推荐系统的全景图。 Alt text 接下来详细介绍的是美团推荐核心技术中的实时推荐、排序学习和推荐模型。

一、实时推荐

实时推荐带来的第一个挑战就是应对十亿级别的推荐服务的调用。美团如何做到在很短的响应时间内,给用户需要的推荐结果?曹浩做了详细的介绍:首先要做的是负载均衡,当流量快速上涨的时候,通过扩容来负载更多的用户,扩展系统服务能力。

其次,为了满足响应时间的要求,所有的过程都是并发处理,包括侯选级的召回、特征抽取、在线分速的预测等等都是并发处理。另外还引入了实时的流数据处理,来实时处理用户的各种行为,并实时反馈在推荐系统中。

Alt text 这是美团的实时推荐数据流,可以看到当某一个用户请求推荐系统,这个时候会首先做一个召回,召回一系列侯选的商家或者团购,然后同时去抽取他们的特征。最后用模型去预测,对每个团购商家打一个分数,根据这个预测的分数线结构排序,最后推荐给用户,这是一个在线的过程。

现在美团用户每次的请求,除了抽取特征用于算分之外,还会同时搜集到离线的日志。进行用户的合并,包括展现、点击、下单等等行为。我们得到一个训练数据,同时训练出来一个离线模型,通过离线评估之后我们可以上线做小容量实验,这是一个离线的过程。

用户的实时反馈,比如他的搜索点击行为,商家展现后是否有点击的动作等等,这些实时反馈的结果会到离线数据中,也会到在线的实时数据流当中。

美团通过Kafka进行实时流处理,对于进行了实时统计和实时数据挖掘之后更新的数据,也同时更新为线上的用户数据、场景数据。为用户做下一次推荐和为下一位用户做推荐的时候,这些更新的用户数据和场景数据就会实时应用在推荐中。 Alt text 解决了基于用户画像,用户场景信息的推荐之后,怎样融合推荐结果?哪些结果放在前面?哪些结果放在后面?接下来就介绍美团使用的排序方法。

二、排序学习

要做排序学习,首先需要做序列数据。曹浩介绍说,我们使用机器学习的方法,训练出来一个学习的模型,这个学习的模型可能是一个非线性模型也可能是一个线性模型。

以竖模型为例,推送人推送形态是当距离用户小于一公里,销量大于八千的时候,这个用户会下单。当距离大于一公里,销量小于一百的时候,用户不会点击也不会购买。

我们学习到这样一个模型,目标是使支付行为排下单行为前面,下单行为排在点击行为前面,点击行为排在展现位置的前面。 Alt text

这样当一个新的用户过来的时候,如果获取到他跟团购单的距离,我们获取到这个单子的销量,这个时候我们可以用这个模型预测出来这个用户可能的行为。

Alt text

美团的排序模型,经历了三个阶段。第一个阶段是人工规则的排序,第二个阶段是线性模型的排序,第三个阶段是分析模型的排序。从效果来看应该是非线性优于线性优于人工规则的,但是他们每个排序的方法,其实都有各自的优缺点。 Alt text 比如说人工规则排序,大家知道我们机器学习在一个大数据集之上,才能得到一个好的结果。特别是在特征越多的时候结果越准确。但是当你还没有积累到一定量级的数据的时候,就只能选择人工规则来进行。

设定当距离小于多少或者销量大于多少的时候,给用户推荐。这样的推荐方法会有误差大和迭代慢的问题。当新加入一个特征时,很难判定这个特征因素的权重应该是多少。

如果用线性模型解决这个问题,就会从历史数据的挖掘和学习中,得出最优的参数值,准确度和速度都会比较好,但问题就是要做出一个好的线性模型,需要非常优秀的算法工程师,经过比较长时间的优化才可以做到,这也是很多研发团队的门槛。

三、推荐模型

对于非线性模型,首先他可以自动做一些特征。比如以竖模型为例,他可以自动确立一个分解点,还有自动的学习一些特征的组合交叉,用于多组融合。但他的缺点就是可能在处理的数据量上要小于线性模型。

目前美团经过不断的迭代优化,效果最好的模型应该是一个组合型模型:底层是用竖模型做深度学习,就是应用特征处理这块的优点。同时在线的更新,我们上层在深度学习的基础上我们做LR模型它可以在线实时更新,因为它的序列速度非常快,而且可以增量的更新,所以我们用LR去做在线学习。

推荐系统的效果优化是一个长期的过程,它需要我们工程师长期跟踪优化和迭代推荐效果。美团优化迭代的流程分为四个部分,首先是调研,调研阶段就是我们通过数据分析或者是通过分析具体的配置,得到调研结果。

之后用调研的数据和历史数据做离线评估,如果离线评估通过,接下来我们做在线小容量实现。小容量实现其实也是大家比较熟悉的ABtest,就是我会把一大群的用户,均分成两等分的用户。

其中一半的用户用机械的策略去实现,另外一半的用户用新的策略去实现。对比看这两个用户群,哪个效果表现更好一些,由此来最终决定是哪个策略胜出。

通过在线小容量实现我们观察新的策略对于用户的影响,比如说对用户点击率的影响,下单率的影响,包括整体交易额的影响等,如果结论都是正向的,这个时候小容量接下来可以在线实现全量上线。 Alt text ABtest在个性化的场景下,有一个问题就是他需要比较大的数据量才能得到一个稳定结果。因为从统计学上来说,对半的两部分数据从群体数量到群体属性都需要相对的公平。雅虎针对这个问题,提出了一个解决方法叫InterLeaving,它是在同一个用户身上同时架构两种排序方法,然后同时生成两个结果并混合在一起展现给用户。根据用户的反馈,来决策哪个策略更好。

所以在个性化场景中,在一个用户身上做实验。而且这个用户此时此刻的场景是不可复现的,在这个场景上同时操作两个策略,得出的结果会更有针对性,实现的效率也会更高。

这个方法已经被雅虎论证,比ABtest的实现效率高10~100倍。美团经过实践的测试,也确认InterLeaving能够在很短的时间内得到非常稳定的结果,而且大部分的情况下和通过ABtest得到的结论是一致的,这里也推荐给大家去尝试。 Alt text

美团的推荐团队从2013年成立到现在,时间并不长,但是做了很多尝试,经历了不同的阶段。首先做了经典算法的改进,包括在传统的用户协同和Item协同上做一些改进优化,调整相似度算法等。同时也利用一些场景信息,引入了LTR。也进行了实时化,包括特征偏好,算法的实时化等。

Alt text 针对曹浩分享的内容,在QA环节,大家也非常感兴趣之前提到的能提高效率的InterLeaving方法,互联网技术联盟也希望在后续的技术开放日上,能够针对这个内容做一些针对性的实践案例分享,敬请大家期待!

微信扫描登录