一般来说,机器学习在电商、推荐、搜索、广告领域有三大应用。这次我们就来说说这三个领域都会涉及到的产品排名问题。从商业角度来说,一般是在召回的产品集合中,通过对产品进行排序来最大化GMV或点击量。再者,它是基于一个目标,如何最大化流量的利用效率。自然,如果我们能够准确预估每个产品的GMV转化率或者点击率,就可以最大限度地利用流量,实现收益最大化。蘑菇街是一个面向年轻女性的垂直电商平台,主营服装鞋包。2015年全年GMV突破100亿。与美丽说合并后,公司更名为美丽联合集团。我是2014年加入蘑菇街的,那时候蘑菇街刚刚开始尝试机器学习。3年来,我经历了很多变化,比如打造爆款、追求效率、提升品质等等。虽然在这个过程中我们经常和业务方互相挑战,但是我们的理念——技术服务于业务的理念一直没有变。模型本身的迭代需要配合业务目标才能发挥最大价值。因此,在选择模型迭代的路线时,必须综合考虑业务情况。在我们开始之前,让我们与您讨论一些方法。在点击率预测领域,普遍使用监督模型,其中样本、特征和模型是三个不可回避的问题。首先,如何构建样本,涉及的模型的目标函数是什么,即优化什么。原则上我们希望样本构建越接近真实场景越好。例如,点击率模型经常使用用户行为日志作为样本。暴露的没有点击的日志是负样本,有点击的日志是正样本。构建一个样本集,就变成了二分类。在另一个类似的领域——Learningtorank中,样本构造方法可以分为三类:pointwise、pairwise和listwise。简单来说,上面提到的构建样本的方法属于pointwise的范畴,即在构建每个样本时,不考虑与其他样本的直接关系。但在实际场景中,往往需要考虑其他样本的影响。比如你在百度上搜索一个关键词,会出来一系列的结果,用户的决定会受到整个排名结果的影响。因此,pairwise有了一点改进。它的样本由对组成。例如,在电商搜索中,一个商品a和一个商品b可以构成一个样本。如果a优于b,则样本对{a,b}为正样本,否则为负样本。当然,这会带来新的问题,比如a>b,b>c,c>a,这时候怎么办呢?感兴趣的同学可以参考FromRankNettoLambdaRanktoLambdaMART:AnOverview。而listwise更接近实际,但是复杂度也随之增加,业界用的也比较少,这里就不过多描述了。理论上,样本构造方法是listwise>pairwise>pointwise,但在实际应用中,不一定是这个顺序。比如在pointwise的样本集下,模型的拟合度不是很好,比如AUC不高。这个时候用pairwise是没有意义的,应该从features和model入手。从一开始就选择pairwise或listwise不是一个好的做法。第二是模型和功能。不同的模型对应不同的特征构造方法。例如,广告的点击率预测模型通常有两种组合:大规模离散特征+逻辑回归模型或中小规模特征+复杂模型。对于gbdt这样的树模型,不需要对很多特征进行离散化和交叉组合,可以降低特征的规模。很难说这两种方法哪种更好,但是这里有一个效率问题。在业界,机器学习工程师大部分时间都花在了特征挖掘上,因此称为数据挖掘工程师往往更合适,但这是一项难度大、效率低、难以复用的工作。希望更干净利落地解决这些问题是我们从不停止向学术界借用更强大模型的原因,虽然大部分达不到预期,但从未放弃。言归正传,下面按时间顺序大致整理一下。电商导购蘑菇街最初是做淘宝导购,2013年转型电商平台。一开始,商品分拣是运营和技术同学创造的公式。虽然很简单,但是可以解决大部分问题。作为初创电商平台,很难保证商家的数量和质量。当时,该公式有一个买家优先政策,即蘑菇街上销售的主要产品均由公司买家团队人工审核,这在一定程度上保证了平台的声誉,为平台产品树立了标杆。但是,这种方法需要大量的投资。为了最大限度地发挥这种模式的效益,商家必须主动学习这些买家喜欢的产品的运营模式。另一方面,从技术角度来看,系统迭代速度过快,导致数据链路不可靠,没有分布式机器学习集群。我们做了一个简化版的排序模型,取一批转化、点击、GMV表现好的产品作为正样本,然后选择有一定曝光度、表现较差的产品作为负样本,做了一个热门模型。这个模型比按公式排序的GMV好10%以上。从结果来看,这个模式还是很成功的。仔细分析收益来源:比较公式,主要是因为它有更多的相关影响因素(也就是它的特性),在它的优化目标下学习了一个***。权重分配方案。但是人为设计的公式很难包含太多因素,权重分配是拍脑袋决定的。由于该模型的目标非常简单,即了解产品成为热门的可能性,因此在完成CVR和CTR等常见统计特征后,该模型已达到瓶颈。做大做强,效率至上2015年,平台DAU、GMV、商户产品数量快速扩张,原有模式暴露出新的业务问题。一是模型大大简化了目标,只考虑顶级产品,中等性能的产品差异化程度很小;二是模型本身没有进一步优化的空间,AUC超过95%。至此,我们的数据链路和Spark集群就准备好了。借鉴行业经验,开始尝试转化率模型。我们的目标是追求GMV的最大化。因此,最直接的方式就是对GMV转化率进行建模。曝光后有交易为正样本,否则为负样本,然后根据价格对正样本进行重采样,可以在一定程度上模拟GMV转化率。另一种方案,用户的购买有一条决策路径,gmv=ctr*cvr*price,取log后可以变成log(gmv)=log(ctr)+log(cvr)+log(price),一般是A权重因素也将被添加到这些目标中。这样就可以把问题拆解成点击率预估,转化率预估,最后加在一起。从我们的实践经验来看,第二种方案的效果要好于第一种,主要原因是第二种方案将问题分解成更小的问题,降低了模型学习的难度,也降低了用户是否购买商品。影响因素太多,第一种方案对模型的要求比后者更大。但是,在第二种方案中,需要整合几个目标,这就带来了新的问题。可以根据GMV转化率尝试学习整合多个模型的结果,也可以根据业务需要手动分配参数。我们在模型上尝试了lr和lr+xgboost。lr模型的转化率相比流行模型有8%以上的提升,lr+xgboost的转化率相比lrgmv的转化率提升了5%以上。但是我们建议,如果你没有尝试过lr,你应该先使用lr来积累经验。在lr模型中,我们把主要精力放在了特征工程上。在电子商务领域,特征从类型上可以分为商品、店铺、用户三类。根据其特点可以分为:统计类:比如点击率、转化率、产品曝光、点击、交易等,然后在时间维度上对这些特征进行切割描述,可以进一步增强描述的特点。离散类:id类特征。比如productid,storeid,userid,queryclassid,categoryid等。很多公司会直接进行onehot编码,得到一个高维的离散稀疏特征。但这会给模型训练和在线预测带来一定的工程压力。另一种选择是以嵌入方式对其进行编码。其他类:如文本特征、商品详情页标题、属性词等。常见的特征处理方法有对数、平滑、离散化、交叉等。根据我们的实践经验,平滑度非常重要。对于一些统计特征,比如点击率,自然会存在位置偏差。一个产品在没有完全曝光之前,很难说是因为点击率低,还是因为没有排在前面,没有得到足够的曝光。因此,通过平滑CTR来增强指标的置信度,可以选择贝叶斯平滑、拉普拉斯平滑或其他平滑方法。如果这个平滑参数太大,模型会退化为流行模型,如果太小,统计指标的置信度不高,需要根据当前数据分布考虑折中。我们借鉴了Facebook在gbdt+lr方面的经验,使用了xgboost预训练模型,将输出的叶子节点作为特征输入到lr模型中进行训练。在实践中,应特别注意选择合理的归一化方案,避免在训练和预测阶段数据分布发生变化导致模型效果不稳定。该方案容易过拟合。建议多树少深度。当然,xgboost针对过拟合有很多调优方案,这里不再赘述。转化率模型取得一定效果后,开始个性化。个性化方案分为两类:标签个性化:购买力、风格、地域等。行为粒度类似于个性化(千人千面):推荐的思路,基于用户的行为日志,构建一个产品序列,并找到熟悉的产品对这些序列中的产品进行重新排序。常见的方式有:实时偏好、线下偏好、门店偏好等。标签个性化的优点是可解释性高,业务合作点多,缺点是覆盖率低,整体指标提升不明显。行为粒度和个性化的优点是覆盖率高,描述详细。上线后经过多次迭代,累计GMV增长了10%。但它的缺点是业务的可解释性差,业务方很难用这种技术来操作。我们的个性化解决方案并没有直接把特征放到模型中,而是把排序分为初排序和精排序,在精排序层面进行个性化。这样细排序只能个性化topN的产品,qps会有明显的提升。因此,在架构上,如图1所示,在传统搜索引擎的上层进行了精细布局,将UPS系统设计为面向用户的实时和离线特征存储模型。图1个性化排名系统架构品质升级随着消费升级大环境的到来,公司将品质升级作为战略方向。模型策略的目标是帮助业务方实现目标,同时减少损失和流量浪费。通过团导方案,建立流量端与精品端的连接,在整体转化率略有下降的情况下,将精品流量提升40%。其总体设计方案如图2所示。图2实时在线人群引导算法架构将用户反馈分为实时和离线。在SparkStream上构建了在线分组模块,用户分组的数据最终存储在UPS中。在细化编排中加入引导策略,实现用户在线实时分组引导数据流如图3所示。图3实时在线人群引导数据流从效果来看,引导和非引导的次日回访率随着时间的推移逐渐趋近,流失率也随着时间的推移不断降低,说明对人群的分组随着时间的推移,人群会逐渐稳定下来。从整体占比来看,可以引导大部分用户。图4人群次日回访率图5引导用户次日流失率图6人口比例统计未来我们最近做了一些深度学习的实验,结合百度DNN在CTR领域的实践,我们可以确认深度学习在电子商务领域技术的应用是大有可为的。另外,电商业务场景天然具有导购的属性,而这恰好与强化学习相结合。阿里在这方面已经做了很多尝试。这两个区域的后续,也将是蘑菇街未来的发展方向。
