“为你推荐”背后的算法探秘

简介: 我们希望营销场景作为卡片的形式插入到现有的为你推荐里,一方面是为这些场景分发流量,一方面是希望提高整体的坑位曝光收益。今天,我们就来探秘如何插入这些营销场景卡片。

小叽导读:随着阿里巴巴 APP里“为你推荐”模块在全链路里地位的不断提升,“为你推荐”已经不再是一个单一的商品推荐渠道,它开始扮演更多的角色。在大促期间,沉淀出一些很好的营销场景,如:榜单、必买清单,主题市场以及发现好货等。我们希望营销场景作为卡片的形式插入到现有的为你推荐里,一方面是为这些场景分发流量,一方面是希望提高整体的坑位曝光收益。今天,我们就来探秘如何插入这些营销场景卡片。

前言

在阿里巴巴 APP 的“为你推荐”中,目前要插入的营销场景都是商品集合类型的,我们现阶段关注的核心是 IPV相关指标,故定义曝光收益作为我们的效果衡量指标,其计算公式如下:

曝光收益=image.png

在只有商品推荐的情况下,这个衡量指标其实就是 PV_CTR。

image.png

图1 阿里巴巴 APP 首页为你推荐场景效果图

问题与方法

现有的资源,各个卡片业务方提供了商品与卡片的映射关系,为你推荐推荐出来的商品,那么在商品推荐里如何去插入这些营销场景卡片呢?

迭代前的状态

按一定的概率随机挂载一种卡片到推荐的商品上。这种粗暴的做法,直接导致曝光收益下降。因为完全不去考虑卡片的承接能力以及用户对卡片的偏好强度,指标会下降是很明显的,但快速累积了初始数据。

弱个性化

我们定义了一个卡片质量分以及用户偏好分,最终一个商品是否要变成卡片以及变成哪种卡片不再是按设定概率随机挂载,而是通过图2的式子来挂载。

image.png

图2 卡片选择公式

于此同时不再简单地利用业务方提供的商品-卡片关系,而是从业务方提供的商品-卡片对集合中进行筛选,一个商品每种卡片类型下可能会映射有该类型多个卡片,通过卡片质量分来筛选,同时离线计算好用户卡片形态的偏好分。上述二者每天同步到iGraph 中,在线调度的时候,在商品推荐结果上,依据图2公式对能触发卡片的商品进行卡片挂载选择。同时,进行卡片的展示间隔控制,卡片与卡片之间至少有一定数量的商品,这样避免卡片堆积,从而进一步提高效果。这种方法,相比迭代前,曝光收益提高了3.23%,但相比不出卡片的基准桶,依旧是下降的。我们还对图2公式进行一系列的变种实验,但收效甚微。

机器学习模型

给用户推荐的商品中,某些商品有 N 种卡片可以挂载,那么挂载哪个卡片用户点击的概率最高呢?这就是我们的模型需要学习,这个可以转化为一个 CTR 预估问题。按预估出来的 CTR 值排序,取 top1,但最终展示还有一定规则需要遵守,下文会阐述。

■ 样本和特征

从为你推荐的数据里抽取可以挂载卡片的商品的曝光点击数据作为训练样本。
特征分成三个部分,用户特征、触发品特征、卡片特征,商品形态作为一种特殊的卡片形态。我们选用了85个特征作为模型输入,包括各种实数特征(62个)、Categorical 特征(19个)和交叉特征(4个):实数特征主要是用户、触发品、卡片维度的一些统计特征。例如,某个商品(触发品)在为你推荐平台上的 CTR、不同形态下的 CTR 的统计值。而对部份 Categorical 特征,我们采用对其进行embedding 处理再输入模型。

■ 召回

基于为你推荐最终的商品推荐结果,去我们筛选好的商品-卡片集合召回候选集合,即 item2item2card。商品与卡片之间的映射关系,目前只是简单地采用了上述的卡片质量分,而没有考虑商品与卡片之间的关系,卡片整体承接效果好,不代表在某个触发品的情况下,承接效果也好。故此考虑增加 item2theme 的方式,theme 表示 item-card。我们直接利用多天卡片曝光点击数据,触发品(item)-卡片(card)对直接作为一个 item 实体看待,采用 SWING 算法进行构建。线上 AB,增加这一路召回,相比没有这路召回的,曝光收益增加0.79%。

■ 排序模型

我们选择了 WDL(Wide & Deep Model)模型,迭代过程中我们也尝试了DCN(Deep & Cross Network)。线上 AB,二者曝光收益差距很小,DCN 相比WDL 也就+0.03%,最终我们选择 DCN 模型进行全量。模型训练目前采用 XTensorflow 每天定时训练并推送到 RTP。

image.png


图3 左图是 WDL,右图是 DCN

■ 效果

效果其实是由两部分因子构成,为你推荐层面上的精准分发,以及卡片的内部效果。卡片内部若效果糟糕,其实会进一步降低用户再次点击此类卡片的欲望,也就影响着上游分发。

目前策略相比弱个性化,曝光收益相对+6.77%,人均点击商品数相对+18.60%;相比单纯的商品推荐,曝光收益相对+1.58%,人均点击商品数相对+0.01%。

系统流程

线上调度

为你推荐原有的商品推荐决定着整体商品顺序,而卡片排序模型则决定着哪些商品挂载什么卡片,最终结合规则(沿用弱个性化时期的卡片间隔策略),决定最终卡片展示的位置。图4是一个调度的流程示意,囊括上述的弱个性化,以及现在的机器学习。

image.png

图4 调度流程示意(含弱个性化和机器学习模型)

卡片兜底与冷启动

如果单次请求最终结果里有卡片类型缺失,对于缺失的卡片类型,按设定的概率,每种卡片最高出一个,间隔策略也影响着最终兜底的情况,如果没合适的坑位,则不会出。这样同时保证卡片兜底和冷启动,又增加了卡片多样性,让用户有机会看到其他类型卡片。

未来的工作

现在的模型,可以说只是卡片选择器,没有做到整体去考虑商品和卡片顺序。卡片选择器目前只是对为你推荐层面上的曝光点击进行建模,基于我们的目标应该是要考虑卡片内部的点击,这块可以进一步优化。同时未来打算把现有的商品推荐结果作为一路召回,卡片选择器作为卡片一方的召回,下游训练一个混合排序模型来做整体排序。

目录
相关文章
|
机器学习/深度学习 存储 搜索推荐
利用机器学习算法改善电商推荐系统的效率
电商行业日益竞争激烈,提升用户体验成为关键。本文将探讨如何利用机器学习算法优化电商推荐系统,通过分析用户行为数据和商品信息,实现个性化推荐,从而提高推荐效率和准确性。
817 14
|
机器学习/深度学习 数据采集 搜索推荐
Paper Digest | 突破个性化推荐数据稀疏性:长尾增强的图对比学习算法研究
本文提出了一种新的长尾增强的图对比学习方法(LAGCL),该方法促使模型同时兼顾头部节点与尾部节点之间的知识,并通过长尾增强技术来使模型产出更均匀更准确的节点表征,从而改进基于 GNN 的推荐任务。
|
安全 网络安全 PHP
网络安全-RCE(远程命令执行)漏洞原理、攻击与防御
网络安全-RCE(远程命令执行)漏洞原理、攻击与防御
1957 0
网络安全-RCE(远程命令执行)漏洞原理、攻击与防御
|
机器学习/深度学习 人工智能 搜索推荐
人工智能推荐系统
人工智能推荐系统
1506 2
|
存储 负载均衡 安全
分布式文件系统实战,使用MinIO构建分布式文件系统!
随着文件数据的越来越多,传统的文件存储方式通过tomcat或nginx虚拟化的静态资源文件在单一的服务器节点内已经无法满足系统需求,也不利于文件的管理和维护,这就需要一个系统来管理多台计算机节点上的文件数据,这就是分布式文件系统。
7278 0
分布式文件系统实战,使用MinIO构建分布式文件系统!
|
开发工具 git
git,github,gitlab,码云的区别
码云https://gitee.com/enterprises?from=tg-6-7是开源中国社区推出的基于git的代码托管服务平台,基于gitlab。目前招商银行,中国科学技术大学,CSDN等多家企业和机构都在使用码云平台
1286 0
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
构建AI智能体:三十八、告别“冷启动”:看大模型如何解决推荐系统的世纪难题
协同过滤是推荐系统中广泛使用的技术,其核心思想是利用用户行为数据发现相似用户或物品进行推荐。摘要包括:1)协同过滤基于用户历史行为数据,通过计算相似度(如余弦相似度、皮尔逊相关系数)预测用户偏好;2)主要分为基于用户(寻找相似用户群体)和基于物品(发现相似物品)两种方法;3)面临冷启动、数据稀疏性等挑战,可通过混合推荐(结合内容特征)和矩阵分解等技术解决;4)典型应用包括电商猜你喜欢和流媒体推荐;5)结合大语言模型可增强语义理解能力,提升推荐准确性。
1035 9
|
JSON 数据可视化 数据挖掘
python数据可视化开发(2):pandas读取Excel的数据格式处理(数据读取、指定列数据、DataFrame转json、数学运算、透视表运算输出)
python数据可视化开发(2):pandas读取Excel的数据格式处理(数据读取、指定列数据、DataFrame转json、数学运算、透视表运算输出)
1088 10
|
存储 机器学习/深度学习 测试技术
[大语言模型-论文精读] 以《黑神话:悟空》为研究案例探讨VLMs能否玩动作角色扮演游戏?
[大语言模型-论文精读] 以《黑神话:悟空》为研究案例探讨VLMs能否玩动作角色扮演游戏?
|
JavaScript 前端开发 测试技术
在 golang 中执行 javascript 代码的方案详解
本文介绍了在 Golang 中执行 JavaScript 代码的四种方法:使用 `otto` 和 `goja` 嵌入式 JavaScript 引擎、通过 `os/exec` 调用 Node.js 外部进程以及使用 WebView 嵌入浏览器。每种方法都有其适用场景,如嵌入简单脚本、运行复杂 Node.js 脚本或在桌面应用中显示 Web 内容。
1521 15
在 golang 中执行 javascript 代码的方案详解