终其一生,我们只不过在寻找自己

0%

【分析整理】 58同城多业务融合推荐实践与思考

平衡业务策略与模型之间的关系。策略能力有限,模型也“没有银弹”。

最近刚好在研究策略和多样性的关系,就帮DataFunTalk社区又整理了一篇稿子,策略本身很乏味,但是策略可以解决很多模型解决不了的问题。
为什么会这样呢?主要还是模型太笨了,由于模型不能完全动态的掌握用户的心理变化,兴趣变化,所以一般的推荐模型都是对于用户的基于历史的点击率CTR预估,可以简化为分类或者回归模型。可是实际上,远远没有这么简单。我觉得最接近”智能化的推荐“的算法就应该是强化学习,算法推出一个item就是一次尝试,用户的行为会及时让系统收到反馈,无论是”多样性“,”准确性“,”兴趣偏好“,”负反馈“,统统都会被融合到Agent的激励里。之后有空了希望进一步调研强化学习在推荐的瓶颈。
以下为分享内容。


5.《多业务融合推荐实践与思考》——58同城推荐分享.王炜.可发布版本.20200426(1)_page-0001.jpg
本文主要介绍了58同城在推荐场景的重排优化部分,主要通过“用户兴趣优化&重排”,“业务流量分配机制”,“动态刷新机制”三个方面,实现了重排的策略。最终的业务指标有明显提升。

  • 推荐系统整体架构
  • 场景介绍
  • 重排优化
    • 用户兴趣优化&重排
    • 业务流量分配机制
    • 动态刷新机制
  • 总结与后续规划 Q&A

推荐系统整体架构

5.《多业务融合推荐实践与思考》——58同城推荐分享.王炜.可发布版本.20200426_1__page-0005.jpg

  • 最上面是系统的对外接口层,包括到58的各个业务的推荐接口的输出,以及负反馈的输入。
  • 中间是业务逻辑层,包括兴趣服务,召回服务,排序服务,解释服务,abtest服务等。
  • 底层是算法层,包括业务数据,日志数据,召回逻辑,排序逻辑,算法平台等。

场景介绍

5.《多业务融合推荐实践与思考》——58同城推荐分享.王炜.可发布版本.20200426_1__page-0007.jpg
本文主要优化的是58同城的首页信息流,这个业务场景的特点有:

  1. 强兴趣:大部分用户都是带着自己的需求进入app;不同的兴趣周期有所差异,比如租房周期短,买房周期长。
  2. 多业务:首页的访问量较大(千万级别pv),如何把流量分配给不同的业务就很关键。
  3. 推荐感知:虽然用户的目标单一,但是如何做到推荐结果的多样性就需要对其优化。

5.《多业务融合推荐实践与思考》——58同城推荐分享.王炜.可发布版本.20200426_1__page-0008.jpg
58现有的召回和排序逻辑与业内同行保持一致,所以本次分享主要结合业务策略在重排层的实验结果。虽然看起来不高大上,但是简单实用。希望能给同行带来启发,减少试错成本。


58app首页推荐业务(多品类推荐)主要面临的挑战在于:

  1. 如何满足用户对于不同品类的兴趣?(用户兴趣问题)
  2. 推荐的业务比例如何和平台的业务比例进行匹配?(流量分配)
  3. 是推荐单一品类效果好,还是推荐不同品类的混排?(混排策略)
  4. 如何平衡CTR和多样性?(动态刷新机制)

重排优化

用户兴趣优化&重排

5.《多业务融合推荐实践与思考》——58同城推荐分享.王炜.可发布版本.20200426_1__page-0012.jpg
业界常见的推荐系统都是要建立user和item之间的联系,还需要建立58的toC和toB之间的链接。
5.《多业务融合推荐实践与思考》——58同城推荐分享.王炜.可发布版本.20200426_1__page-0013.jpg
建立联系的过程就是对于user和item分别建立标签体系,然后对其匹配。对于user打标签需要长期的用户画像,也需要短期的兴趣。在供需方各自提供的需求中抽取出标签之后,进行匹配。
5.《多业务融合推荐实践与思考》——58同城推荐分享.王炜.可发布版本.20200426_1__page-0014.jpg
(通过用户的行为日志),得到了用户的兴趣之后,对于原始兴趣直接进行推荐效果并不理想。 所以有以下的问题:

  • 时效性的及时满足:对于58的业务来说,需要及时捕捉用户兴趣的变化,才能推荐出满足当下需求的item。
  • 兴趣分层:不同兴趣的优先级和占比需要进行优化。
  • 兴趣去噪:对于用户太旧的兴趣需要考虑丢弃去噪。
  • 向量化兴趣(TODO):从标签的兴趣,逐渐过滤到向量化的兴趣。通过对于用户画像/兴趣的Embedding进行召回。

5.《多业务融合推荐实践与思考》——58同城推荐分享.王炜.可发布版本.20200426_1__page-0015.jpg
用户兴趣和画像系统主要包括以上的方面,接下来详细介绍。

5.《多业务融合推荐实践与思考》——58同城推荐分享.王炜.可发布版本.20200426_1__page-0016.jpg

  1. 数据抽取:对用户的点击进行埋点,对用户的购买/转化行为进行埋点。
    5.《多业务融合推荐实践与思考》——58同城推荐分享.王炜.可发布版本.20200426_1__page-0017.jpg
  2. 数据清洗:去除掉无意义的数据,补充缺失数据。
    image.png
  3. 兴趣分类:通过时间戳区分用户的长期/中期/临时兴趣。比如一个用户几个兴趣前在找工作,到现在找工作的需求可能已经解决了,目前就需要找租房了。
    5.《多业务融合推荐实践与思考》——58同城推荐分享.王炜.可发布版本.20200426_1__page-0019.jpg
  4. 兴趣计算:对于兴趣进行分类之后,就需要对于数据进行存储和打通线上调用接口的服务。
    5.《多业务融合推荐实践与思考》——58同城推荐分享.王炜.可发布版本.20200426_1__page-0020.jpg
  5. 兴趣衰减的公式如图,一般来说最好可以通过线上的ab实验确定自己业务的衰减参数;再者可以做的更细,对于不同的兴趣得到不同的时间衰减参数。通过时间衰减,可以解决用户近期的兴趣和实时兴趣权重上升;久远的兴趣权重会下降。
    其它思路: (1)不同业务需求,衰减公式或参数不同,衰减快慢不同; (2)实时与历史兴趣,短期与长期兴趣,衰减快慢不同。
      .jpg
  6. 兴趣合并:
  • 可以对不同时间维度的兴趣进行合并。
  • 也可以对不同领域的兴趣进行合并,得到用户画像。可以用于兴趣的专业和试探,用于增加多样性。
    5.《多业务融合推荐实践与思考》——58同城推荐分享.王炜.可发布版本.20200426_1__page-0023.jpg
  1. 兴趣聚合
    数据统计会发现,虽然大部分用户只关注个别价格区间,但是有一批用户会关注多个汽车的价格区间,导致推荐的分散,效果并不理想。可以采用“优势组直选策略”选取权重最大(浏览最多的)策略,保留一个区间;或者是“长尾组淘汰策略”,排除掉权重小的几个区间。

  2. 兴趣去噪
    5.《多业务融合推荐实践与思考》——58同城推荐分享.王炜.可发布版本.20200426_1__page-0025.jpg
    兴趣去噪和兴趣聚合原理一样,去除掉“用户误点”,“客户端误报”,等噪音数据。

  3. 兴趣扩展
    5.《多业务融合推荐实践与思考》——58同城推荐分享.王炜.可发布版本.20200426_1__page-0026.jpg
    兴趣扩展就是当用户的召回较少时,逐层增加兴趣的边界,经过实验,一般增加扩展会导致点击率下降,所以也需要调整和平衡。

扩展的方式如图,可以是品内标签的横向扩展。从用户选择的一个点,向外发散,从而召回更多的item。也可以是跨品类的扩展,从最小类目扩展到二级类目。用户有了更多的选择,也接近自己的倾向。实验的点击率有所提高。
从表格中,可以看出相关扩展和范扩展点击率都不会很好,所以需要分层,优先满足原始兴趣。
image.png

举个例子:从地图上的一个点,就可以按照距离向外扩展;向类似接近的品类进行扩散。

5.《多业务融合推荐实践与思考》——58同城推荐分享.王炜.可发布版本.20200426_1__page-0028.jpg

  1. 兴趣排序
    对于召回源的权重进行排序,从而满足较大权重的兴趣排到前面。这里,由于我们的场景是强兴趣的,所以主要的召回渠道仍然是兴趣的召回。希望对场景类似的朋友有所帮助。

重排优化—业务流量分配策略

对于58的混合推荐场景来说,对于推荐结果来说,对于用户来说,需要给出用户需要的推荐结果;对于平台来说,也需要对于不同的业务都给予一定比例的曝光分流。

  1. 为什么要持续优化流量分配策略?
    首页推荐哪些业务线的帖子需要为分流这个重要目的服务。比如:58上的整租房的帖子高于合租房的帖子,所以就需要推荐出来的整租的帖子也高于合租的帖子。
  1. 本次优化以前,原策略对各业务的分配策略有以下问题:
    (1)品类之间平均分配,未考虑权重;
    (2)大品类与小品类之间的冲突、重叠。

针对以上的问题,我们做了以下的实验策略对比:
原始策略:

  1. 直接采用精排结果序列。—-缺点在于:以CTR为学习评价目标,所以热门的item比例过大,大部分用户的结果趋同。
  2. 按照item的比例分配流量。假设58平台流量在大的品类上,占比如下: 招聘:租房:二手车:本地服务 = 40:30:20:10。每个用户都按上面的比例分配。—-缺点在于:每个用户之间的需求差异不明显,给每个用户都推相同比例的不合理。

所以,我们进行了以下策略,既保证个性化需求,也保证了业务的流量分发的合理。
实验策略:
image.png
比如说,用户的兴趣比例如(1),而召回的比例如(2),就需要通过强插入黄页的其他item,补足缺口。
image.png
采用这种策略,可以保证分发的比例与大盘比例一致。这个问题类似于在新闻推荐里,有文章/视频/短视频,如果用停留时长作为评价指标,推荐出来的视频往往是长视频和长文章。这时候就需要进行比例调整,合理分配。
image.png
在最后的重排阶段,也会对候选的item进行打散,避免相同类型的item过于聚集,增加了多样性。
image.png
重排还有一种机制就是把当下的实时兴趣优先排出来,让推荐系统强感知用户的实时兴趣。

动态刷新机制

常见的推荐系统,用户用的越久,推荐的越窄,这就涉及了多样性的问题。而一般来说,增加了多样性就会涉及CTR的下降。我们采用了一种动态化刷新机制方案,整理来说多样性增加CTR也没有下降。

  1. 为什么需要动态化刷新机制?
    目的: 解决内容多样性问题。
  2. 优化思路:
    可以通过协同过滤、向量化召回等多路召回的办法增加多样性。
    但在我们面临的问题是召回集合基本不变的前提下,优先考虑在集合内部的排序上进行动态调整。

最终上线的版本如下:
image.png
通过对于多次曝光的item进行降低排序位置,避免用户反复看到已经浏览的item。
image.png
再引入时间衰减,近期多次帖子会更强的打压,远期的浏览曝光就进行衰减,逐步恢复正常排序。
image.png
服务端的下发日志和客户端的曝光日志比不一定是真实曝光,但是响应更快,也可以考虑加到曝光打压中,可以进行综合考量。

  1. 整体效果: (1)以上3步迭代的整体效果:点击率比基准提升+7.0%。

(2)同一用户最新访问的帖子集合较前一次访问的集合的动态变化比率 全天平均达到60%。

  1. 近期规划:
    (1)引入全站的曝光日志,进一步优化刷新机制。
    (2)引入用户的点击日志,通过再营销等策略,进一步优化效果。

总结:
1.关键是理解业务。
2.优化策略之间的冲突、叠加。
3.多目标之间的平衡。
4.算法与策略之间的关系。

后续规划 :
1.动态化刷新机制的进一步优化
2.首页推荐理由的进一步优化
3.冷启动的进一步优化
4.基于feed流机制的访问模式
5.深度学习模型的持续优化

-------------    你的留言  是我更新的动力😊    -------------