导读 : 随着阿里巴巴 App里 “ 为你推荐 ” 模块在全链路里地位的不断提升,“为你推荐”已经不再是一个单一的商品推荐渠道,它开始扮演更多的角色。在大促期间,沉淀出一些很好的营销场景,如:榜单、必买清单,主题市场以及发现好货等。我们希望营销场景作为卡片的形式插入到现有的为你推荐里,一方面是为这些场景分发流量,一方面是希望提高整体的坑位曝光收益。今天,我们就来探秘如何插入这些营销场景卡片。
前言
在阿里巴巴 APP 的“为你推荐”中,目前要插入的营销场景都是商品集合类型的,我们现阶段关注的核心是 IPV相关指标,故定义曝光收益作为我们的效果衡量指标,其计算公式如下:
曝光收益=
在只有商品推荐的情况下,这个衡量指标其实就是 PV_CTR。
图1 阿里巴巴 APP 首页为你推荐场景效果图
问题与方法
现有的资源,各个卡片业务方提供了商品与卡片的映射关系,为你推荐推荐出来的商品,那么在商品推荐里如何去插入这些营销场景卡片呢?
迭代前的状态
按一定的概率随机挂载一种卡片到推荐的商品上。 这种粗暴的做法,直接导致曝光收益下降。 因为完全不去考虑卡片的承接能力以及用户对卡片的偏好强度,指标会下降是很明显的,但快速累积了初始数据。
弱个性化
我们定义了一个卡片质量分以及用户偏好分,最终一个商品是否要变成卡片以及变成哪种卡片不再是按设定概率随机挂载,而是通过图2的式子来挂载。
图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。
图3 左图是 WDL,右图是 DCN
■ 效果
效果其实是由两部分因子构成,为你推荐层面上的精准分发,以及卡片的内部效果。 卡片内部若效果糟糕,其实会进一步降低用户再次点击此类卡片的欲望,也就影响着上游分发。
目前策略相比弱个性化,曝光收益相对+6.77%,人均点击商品数相对+18.60%; 相比单纯的商品推荐,曝光收益相对+1.58%,人均点击商品数相对+0.01%。
系统流程
线上调度
为你推荐原有的商品推荐决定着整体商品顺序,而卡片排序模型则决定着哪些商品挂载什么卡片,最终结合规则(沿用弱个性化时期的卡片间隔策略),决定最终卡片展示的位置。 图4是一个调度的流程示意,囊括上述的弱个性化,以及现在的机器学习。
图4 调度流程示意(含弱个性化和机器学习模型)
卡片兜底与冷启动
如果单次请求最终结果里有卡片类型缺失,对于缺失的卡片类型,按设定的概率,每种卡片最高出一个,间隔策略也影响着最终兜底的情况,如果没合适的坑位,则不会出。 这样同时保证卡片兜底和冷启动,又增加了卡片多样性,让用户有机会看到其他类型卡片。
未来的工作
现在的模型,可以说只是卡片选择器,没有做到整体去考虑商品和卡片顺序。 卡片选择器目前只是对为你推荐层面上的曝光点击进行建模,基于我们的目标应该是要考虑卡片内部的点击,这块可以进一步优化。 同时未来打算把现有的商品推荐结果作为一路召回,卡片选择器作为卡片一方的召回,下游训练一个混合排序模型来做整体排序。