海纳“千川”:得物多场景统一推荐平台|精选

news2025/2/13 5:56:51

1 千川由来

得物的推荐场景,除了首页瀑布流等几个比较大的场景之外,还有很多长尾的小场景,包括:频道、会场、购中购后场景、品牌墙等。这类场景存在单个场景体量小(UV和GMV均偏小)、场景零散、类型多元的情况。如需对这类场景进行单独优化,涉及的成本投入远高于产出。而随着业务发展,这类长尾场景只会越来越多,对这类场景的优化亟待解决。因此,我们需要这样一个通用推荐平台,来承接住这些小场景,并能够持续优化,带来收益。“化零为整”、“兼容并包”、“统一平台”,这就是千川。

1.png

2 千川需要解决的难题

结合各类需求及定位,千川作为统一推荐系统,面临不少难题,至少需具备五种能力。

2.jpeg

3.png

3 工程和算法解决方案

应对上述困难,千川提出统一推荐框架。在千川ID体系基础上,实现多场景推荐的统一优化。

4.png

千川推荐框架总体分五层

  • APP服务层:对接各个长尾场景,目前接入了包括主题、频道、会场、购中购后独立流、出图等场景

  • 千川接入层:目前提供两种接入方式,一种是通过商品投放服务接入,一种是注册千川直连。千川依据接入场景的差异建立千川ID体系,会为每个接入的场景提供特定的千川ID(或者千川ID集合)。

  • 千川DPP层:提供多种DPP推荐模块,满足多类型推荐需求,包括商品推荐DPP,多类型推荐DPP,楼层推荐DPP,品牌推荐DPP。每个DPP模块框架基本一致,会根据推荐类型设计差异化推荐策略。

  • 算法层:搭建完整推荐链路,在召回、粗排、精排、策略等全流程上进行效率和体验优化。

    • 召回阶段:设计包括I2I、U2I等在内5类召回,尽可能处理场景、行为、兴趣偏差,召回用户喜好商品。

    • 粗排阶段:在满足高性能要求上,提供单目标及多目标粗排能力,为后续精排提升空间。

    • 精排阶段:针对场景差异、用户兴趣、多种目标、大促应用方面进行一系列模型迭代。

    • 策略阶段:结合业务需求提供策略干预、场景差异化配置、流控调权、多样性重排、多类型分发等能力。

    • 基建层:依托包括机器学习平台、索引平台、特征服务、流控平台等在内的强大能力支持,方可打造出整套千川推荐框架。

4 算法迭代过程

4.1 召回粗排演进

因千川多业务场景的特色,召回和粗排阶段面临一系列挑战,包括:场景行为偏好差异、多场景下用户兴趣偏差、场景目标定位差异。

挑战1:场景行为偏好差异

千川用户行为较为分散,不同场景下行为稀疏且差异较大。为处理这类偏差,千川汇集全场景下用户的长短期行为,设计I2I、重定向、Trigger选取、向量化等一系列策略。

5.png

  • I2I、重定向捕获行为偏好
  • 不同的Trigger选取策略兼顾长短期行为
  • GraphEmb、RankI2I实现行为偏好的向量化

挑战2:多场景下用户兴趣偏差

不同场景下用户的兴趣不完全一致,具体表现如:男性用户A在主题落地页更多关注鞋、运动、3C等之类的商品,在送礼频道更关注化妆品相关商品;女性用户B在主题落地页更倾向于包袋、玩偶等,在送礼频道更关注篮球、休闲服之类的商品。用户在不同场景之间的兴趣表现既有共性又存在差异,千川通过实现全场景的DSSM向量表征与结合场景特征的MIND向量表征多场景下用户的兴趣偏差。

  • DSSM引入全场景数据表征用户对商品的基础兴趣
  • MIND结合场景特征扩展用户在多场景多兴趣上的表征

挑战3:场景目标定位差异

因场景定位不同,对应的目标也不一致。整体可归纳为dpv导向场景和uv价值导向场景。dpv导向场景对应的是对点击的预估,uv价值导向场景需要同时预估点击和转化。千川针对两类场景目标,设计了粗排双塔和粗排ESMM模型实现分目标差异化预估,消除场景目标定位差异。

6.png

  • 粗排双塔模型实现点击预估
  • 粗排ESMM实现点击与转化的多目标预估

4.2 排序模型迭代

挑战1: 用户兴趣建模

用户兴趣建模一直是推荐系统中重要的优化点之一,用户的历史行为则是用户潜在兴趣最直接的表达。

之前的工作主要针对用户实时和中短期行为进行建模,仅使用近期行为无法建模用户长期以来稳定的兴趣和周期性的行为,同时也会将推荐系统的数据反馈循环限制在局部的热门的内容中。

7.png

另一方面则是特征交叉的不足,模型从deepFM单目标范式迁移到基于dmt范式下的多目标模型,去掉了fm侧结构,虽然可以充分挖掘用户行为序列特征,但是对稀疏特征在模型上的交叉还较少,有一定的优化空间。

挑战2: 场景差异建模

由于不同的场景往往具备自身独特的定位,服务的用户、包含的商品都有较大的差异。而小场景本身的用户分布和行为偏好也随活动和运营策略等变化发生较大的波动。

新人落地页、新人频道等场景,新用户占比较高,点击率偏高而转化率明显偏低;补贴频道主要以性价比高商品为主,点击、转化的意向都不错,但是aov较整体有明显的下降;女性频道的受众基本是女性,这个场景的商品集较主流场景有着明显差异,女性用户在喜好上也有明显偏向,数据上看这个场景的女装、箱包占比有明显提升;而会场等场景,日常和大促用户分布和商品池变化很大,用户行为也有相应的变化,在预热期收藏意愿持续提升,直到大促当天集中实现转化。而对于购后、支付后等场景,由于用户需求已经部分满足,浏览深度就相应偏低。

迭代1: 用户兴趣建模

为了充分建模用户的兴趣的差异,我们在构建场景下用户、商品各种显式交叉统计特征的基础上,进一步通过优化对用户行为序列的充分建模和隐式的特征交叉方式,提升我们对用户偏好刻画的准确性。

  1. 首先我们增加了transformer的结构来处理用户的长短期用户行为序列,并对行为序列做了合并和去重处理来增大信息容量。

  2. 我们增加了显式的对用户统计特征、稀疏特征的交叉,提升模型效果。

  3. 增加千川id、商品、用户属性对用户行为的交叉特征,并利用co-action结构做隐式交叉。

    a. 用户行为序列作为Feed Feature, 复用attention之前的sequence embedding

    b. cspu、qcid、gender、brand等作为Induction Feature,构建3层mlp

    c. 做3次阶乘,增加高阶的特征交叉

8.png

9.png

迭代2: 多场景差异建模

为了充分建模不同场景的差异,我们在构建场景下商品、品牌、类目的交叉统计特征基础上,进一步通过模型结构的优化,充分学习用户在不同场景的偏好差异。

  1. 通过构建特征刻画场景偏好以及场景效率的差异

10.png

  1. 通过构建特征刻画用户活跃度、用户生命周期标签等特征

    a. 用户标签-生命周期

    b. 用户-不同场景-活跃度 【exp|clk|buy|clickbuy && cspu|brand|cate】

    c. 用户-全场景-活跃度【exp|clk|buy|clickbuy && cspu|brand|cate】

  2. 通过mmoe结构,使得模型进一步学习到场景的差异。

    a. 尽管丰富了特征,但是不同场景的样本混合,只用一个模型会使得不同场景互相干扰覆盖,难以达到最优的效果,所以进一步对模型结构做了调整,复用了mmoe的结构。

    b. 为了凸显场景的差异性,需要对原始的MMoE的 Gate 网络的输入做调整,为此只选择千川id的本身信息作为特征,利用场景id的信息对experts进行选择,使得不同场景经过softmax输出不同的Gate 权重。

    c. 针对不同的场景,模型能够感知场景的差异,不同场景能够选择不同的experts子网络的组合,从而实现不同场景的差异化建模。

  3. 通过poso结构,使得模型能进一步学习到用户群的差异。

    a. 在初步使用用户特征时,发现新用户的特征因为数据稀少(新用户的样本只占所有样本的4.6%),并没有被网络充分学习利用,导致这些特征即使被MASK也几乎不影响网络参数分布。

    b. 为了解决不平衡分布的特征的处理,采用了POSO的结构,主要在Gate侧输入用户标签特征,例如是否新客、是否卖家、性别等特征。然后在全连接结构使用POSO时,全连接的每层输出和gate的输出按位相乘。

13.png11.png

12.png

按照预估点击率分桶,可以看到模型在对新客的预估上,准确率明显提升,而且从整体的pcoc上看,模型建模效果也显著提升。

14.png15.png

5 未来展望

5.1 业务

千川一如既往的支持各类业务发展:

  • 规范对接流程,继续扩展新场景,做到准确高效,如:会场主图,金刚位出图等。

  • 归纳业务诉求,提炼需求共性,进一步扩展能力,如:多类型分发能力、多样性重排能力等。

  • 维护系统稳定,完善监控、神盾巡检,及时发现、处理相关问题。

5.2 算法

千川召回迭代会继续聚焦在处理场景、行为、兴趣偏差上:一方面从场景相关特征入手,围绕场景特征进行召回模型迭代,如:将场景特征作为独立塔引入,加入场景、用户、商品之间的特征交叉,探索SDM模型结构等;一方面持续深挖用户、商品特征,强化价格因素占比,丰富价格特征、加深价格与场景、用户、商品的关联,实现精准建模。

千川精排迭代会继续聚焦在多场景差异建模方向上,一方面探索现有建模范式的进阶方向,例如PepNet等。一方面继续挖掘特征,例如场景内的用户行为序列等,并探索与之适配的模型结构,如SAR-Net等。

另外在许多千川的实际应用中,有许多非瀑布流场景,K个商品可能一次性呈现给用户。例如金刚位、中通位、会场楼层内、商品分类等等场景。此时,这K个商品如同被呈现在一张卡片上,且这K个推荐位之间是相互影响的。会尝试探索生成重排等整屏优化的算法方向。

而千川会场商品推荐很容易受外界干预和大促日程节点的影响,排序模型常常出现日常表现优于基线,但是到了大促就效率大幅下滑的现象。这既是挑战也是算法技术创新的机遇。会进一步探索诸如持续学习、实时ODL、LTR等方向。

5.3 通用性

此外,我们会继续升级,将千川变得更加通用,争取做到组件化、构建算法库、灵活扩展和可复制。

16.png

扫码添加小助手微信

如有任何疑问,或想要了解更多技术资讯,请添加小助手微信:

微信二维码.jpeg

文: Tmac, 阿寿, Yaobik

本文属得物技术原创,来源于:得物技术官网

未经得物技术许可严禁转载,否则依法追究法律责任!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/645561.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

炫龙笔记本怎么用U盘重装Win10系统?

炫龙笔记本怎么用U盘重装Win10系统?很多使用炫龙笔记本电脑的用户在问,怎么使用U盘来重装一下电脑的Win10系统,这时候用户先要准备一个U盘,还有一个能够正常联网的炫龙笔记本电脑,最后按照以下炫龙笔记本用U盘重装Win1…

可算是熬出头了,测试3年,费时6个月,入职阿里,涨薪14K

本科毕业后就一直从事测试的工作,和多数人一样,最开始从事点点点的工作,看着自己的同学一步一步往上走,自己还是在原地踏步,说实话这不是自己想要的状态。 一年半后开始沪漂生活,又摸爬滚打了一年半&#…

FL Studio21.0.3最新版本下载 可切换中文语言

FL Studio是最好的! 在我12/13岁的时候,一个DJ向我介绍了FL Studio。它让我大吃一惊,怎么能在几秒钟内做出一个鼓的模式。后来我又玩了好几年,到了15岁时,我确定我想成为一名制作人。FL Studio帮助我把脑海中的想法快速地变成一个…

开发者必备:动态贴纸和美颜SDK的集成教程

动态贴纸和美颜技术不仅能带来多样的拍摄方案,还可以增加应用的吸引力。本篇文章将为开发者提供动态贴纸和美颜SDK的集成教程、技术方案,帮助开发者快速实现这些功能。 一、动态贴纸美颜SDK集成教程 导入SDK 在Android Studio中,开发者需要…

柴油发电机供电技巧,太有用了!

随着现代工业和商业的发展,对可靠的电力供应的需求变得越来越重要。在许多场景中,柴油发电机作为备用电源成为了关键设备,用于应对停电或电力故障时的紧急情况。 然而,对于企业和组织来说,有效监控和管理柴油发电机的运…

自学黑客!告诉你如何规划

博主本人 18年就读于一所普通的本科学校,21年 6 月在三年经验的时候顺利通过校招实习面试进入大厂,现就职于某大厂安全联合实验室。 我为啥说自学黑客 (网络安全),一般人我还是劝你算了吧。因为我就是那个不一般的人。…

Jwt过期时间

最近在复习Spring Security,发现测试jwt解密的时候会报错,之前没有问题,但是最近几次都出现了问题,我决定究其原因。 debug看一下, 进入真正的解析 看一下这里的源码 Override public Jwt parse(String jwt) throws …

Ansible 部署

ansible 自动化运维工具,可以实现批量管理多台(成百上千)主机,应用级别的跨主机编排工具 特性: 无agent的存在,不要在被控制节点上安装客户端应用 通过ssh协议与被控制节点通信 基于模块工作的&#xff0c…

面试华为,足足花了2个月才上岸,真的难呀····

花2个月时间面试一家公司,你们觉得值吗? 背景介绍 二本计算机专业,代码能力一般,之前有过两段实习以及一个学校项目经历。第一份实习是大二暑期在深圳的一家互联网公司做前端开发,第二份实习由于大三暑假回国的时间比…

chatgpt赋能python:Python如何打包APK

Python如何打包APK Python是现代编程语言中最流行的之一,它是一种易于学习和使用的语言,因为它拥有直观的语法并且具有许多强大的工具和库。其互动性和可移植性使得Python适合用于开发各种类型的应用程序,包括移动应用程序。 在本文中&…

Android Retrofit 给你的接口加上缓存

转载请注明出处:https://blog.csdn.net/kong_gu_you_lan/article/details/131200501?spm1001.2014.3001.5501 本文出自 容华谢后的博客 往期回顾: Android Retrofit RxJava使用详解 Android 探讨一下Retrofit封装的最佳姿势 Android 谈谈我所理解的…

数据分析规范总结-V2.0

结构规范及写作 报告常用结构: 1. 架构清晰、主次分明 数据分析报告要有一个清晰的架构,层次分明能降低阅读成本,有助于信息的传达。虽然不同类型的分析报告有其适用的呈现方式,但总的来说作为议论文的一种,大部分的分…

C语言之函数栈帧的创建与销毁讲解(2)

上一篇博客我们讲到了函数栈帧的创建与销毁(1)今天我们来讲解Add函数的函数栈帧相关知识 在开始本章博客之前,大家可以把上一篇博客的主要内容仔细复习一下 看图 第一个mov:把b的值放到eax里面去 第二个mov:把a的…

wangEditor富文本编辑器的调用开发实录(v5版本、获取HTML内容、上传图片、隐藏上传视频)

wangEditor 是一款基于原生 JavaScript 封装,开源免费的富文本编辑器,支持常规的文字排版操作、插入图片、插入视频、插入代码等功能,同时提供多样化的扩展功能(如字体、颜色、表情、代码、地图等插件),支持…

SpringBoot(运维篇)

SpringBoot运维篇 SpringBoot程序的打包和运行 程序打包 SpringBoot程序是基于Maven创建的,在Maven中提供有打包的指令,叫做package。本操作可以在Idea环境下执行 mvn package打包后会产生一个与工程名类似的jar文件,其名称由模块名版本号…

小程序开发:如何从零开始建立你的第一个小程序

你可能有一个小程序的想法,但它仍然是一个想法。对于开发人员来说,这是一项艰巨的任务,因为你必须确保你有足够的时间来开发你的第一个小程序。如果你决定使用小程序,那就有很多事情要做。创建一个小程序可能是一件非常耗时的事情…

无线蓝牙耳机推荐有哪些?八大无线蓝牙耳机排行

在近几年蓝牙耳机的飞速发展,我们对于音乐和通讯的需求也越来越高。传统的耳机和听筒虽然能够满足我们基本的听觉需求,但是它们也带来了一些问题,比如:长时间佩戴会导致耳朵疲劳、引起耳道炎等。针对这些问题,蓝牙耳机…

解决Dbeaver连接一段时间不操作后断开的问题

1、首先右键数据库连接点击【编辑连接】 2、点击【初始化】将【连接保持】改成60s,这样数据库就不会自己断开了

动态组件和异步组件

动态组件 相关api <!-- 失活的组件将会被缓存&#xff01;--> <keep-alive include"Tab1,Tab2"><component :is"currentTabComponent"></component> </keep-alive>component属性 is“全局注册或局部注册的组件名” keep…

Windows安装Pytorch3d

Windows安装Pytorch3d 1.前提&#xff1a; 安装Visual Studio 2019 【我记得必须是2017-2019之间的版本&#xff0c;我一开始用的是2022的版本就安装不了】网址pytorch和pytorch3d、cuda和NVIDIA CUB版本需要相互对应 pytorch和pytorch3d版本对应关系如下&#xff1a;https:…