zoukankan      html  css  js  c++  java
  • 24、Conversion Rate Prediction via Post-Click Behaviour Modeling----ESM2(转)

    转自:https://www.kesci.com/home/project/5db112b475df5c002b225fd5/code

    1、背景

    一个包含推荐系统、用户行为的完整电商推荐流程如下图所示:

    Image Name

    主要分为两个部分,一是推荐阶段,二是用户行为阶段。推荐阶段大都分为召回和精排两部分,精排之后有时候会通过一些规则进行打散,然后展示给用户。用户看到推荐的物品,称作Impression(可翻译为曝光),用户看到自己感兴趣的物品,会Click(点击),如果觉得还不错,会Buy(购买)。因此用户行为阶段的一般过程是Impression - Click - Buy。

    此时我们就会有两个主要的概念:CTR和CVR,同时这两个指标也是电商推荐系统所要预估的重点部分。CTR是曝光到点击的概率,而CVR是点击到购买的概率。

    传统的CVR预估问题存在两个主要的问题,一是样本选择偏差(sample selection bias,SSB),二是数据稀疏(data sparsity,DS),如下图所示:

    Image Name

    样本选择偏差(sample selection bias,SSB):假设把给用户曝光过的产品看作是整个样本空间X,用户点击过的产品仅是中间的部分,定义为Xc。传统的推荐系统仅用Xc中的样本来训练CVR预估模型,但训练好的模型是在整个样本空间X去做推断的。由于点击事件相对于曝光事件来说要少很多,因此只是样本空间X的一个很小的子集,从Xc上提取的特征相对于从X中提取的特征而言是有偏的,甚至是很不相同。从而,按这种方法构建的训练样本集相当于是从一个与真实分布不一致的分布中采样得到的,这一定程度上违背了机器学习中独立同分布的假设。这种训练样本从整体样本空间的一个较小子集中提取,而训练得到的模型却需要对整个样本空间中的样本做推断预测的现象称之为样本选择偏差。样本选择偏差会伤害学到的模型的泛化性能。

    数据稀疏(data sparsity,DS):推荐系统展现给用户的商品数量要远远大于被用户点击的商品数量,同时有点击行为的用户也仅仅只占所有用户的一小部分,因此有点击行为的样本空间Xc相对于整个样本空间X来说是很小的,通常来讲,量级要少1~3个数量级。这就是所谓的训练数据稀疏的问题,高度稀疏的训练数据使得模型的学习变得相当困难。

    为解决上述两个问题,阿里曾经发表过多任务学习模型ESMM,简单回顾一下:

    Image Name

    ESMM中有两个子网络,二者共享Embedding部分,分别输出CTR预估值pCTR和CVR预估值pCVR。Loss分为两部分,一是CTR预估带来的loss,二是pCTCVR(pCTR * pCVR)带来的loss。这样就可以在整个样本空间上训练CVR预估模型。

    但是对于CVR预估来说,ESMM模型仍然面临一定的样本稀疏问题,毕竟从点击到购买的样本非常少。但挖掘用户行为,发现用户在购买前往往会有其他的行为,比如把想要购买的物品加入购物车或者心愿单。如下图所示:

    Image Name

    加入心愿单/购物车的数据相较购买数据还是比较多的,因此可以基于这部分数据,通过多任务学习模型来求解CVR模型。如图所示,文中把加入购物车或者心愿单此类行为称作Deterministic Action (DAction) ,而其他对购买相关性不是很大的行为称作Other Action(OAction) 。此时原来的 Impression→Click→Buy过程变成了更加丰富的Impression→Click→DAction/OAction→Buy过程。

    本文提出的模型基于Impression→Click→DAction/OAction→Buy过程来建模CVR预估问题,称作Elaborated Entire Space Supervised Multi-task Model(ESM2),一起来看下吧。

     

    2、ESM^2模型介绍

    2.1 模型整体架构

    模型整体架构如下:

    Image Name

    可以看到,一共有四个任务,分别是:

    • Y1:点击率
    • Y2:点击到发生DAction的概率
    • Y3:发生DAction到购买的概率
    • Y4:发生OAction到购买的概率

    这里好像少了一个从点击到OAction的概率,这是因为DAction和OAction是对立事件。

    因此,此时 CVR=(1−Y2)∗Y4+Y2∗Y3

    2.2 模型细节

    上述的四个子任务,其用的样本相同的,在整个样本空间中进行训练。其输入首先经过共享嵌入模块(Shared Embedding Module (SEM))转换为对应的嵌入向量,随后通过四个独立的神经网络分别预估Y1、Y2、Y3和Y4。

    2.3 损失函数

    既然是在整个样本空间上的学习,那么计算的损失必须是从Impression开始的,那么计算损失首先需要计算下面三个部分:

    pCTR:Impression→Click的概率直接由第一个网络的结果得出 pCTAVR:Impression→Click→DAction的概率,pCTAVR = Y1 Y2,由前两个网络的输出结果相乘得到 pCTCVR:Impression→Click→DAction/OAction→Buy的概率,pCTCVR = CTR CVR = Y1 [(1 - Y2) Y4 + Y2 * Y3],由四个网络的输出共同得到。

    随后通过三个logloss分别计算三个部分的损失:

    Image Name

    Image Name

    Image Name

    而完整的损失函数由三部分加权得到:

    Image Name

    而在预测时,只需要经过后三个网络,便可以计算对应的CVR。

     

    3、实验结果

    本文对比了几个模型在CVR预估上的效果:

    GBDT DNN使用Click→Buy的样本来训练CVR模型,使用Impression→Click的样本来训练CTR模型 DNN-OS,对Click→Buy的样本进行过采样,其他同DNN ESMM ESM2

    评价指标包括AUC和GAUC,GAUC是对每个用户的AUC进行加权的结果:

    Image Name

    实验结果表明本文提出的ESM2模型在CVR预估上表现较为突出:

    Image Name

    好了,本文介绍就到这里,其他的实验结果以及模型的一些细节,大伙可以阅读原论文。

  • 相关阅读:
    SQL SERVER 2000 配置文件 SETUP.INI
    (转)Sybase ASE基础知识:利用Sybase Central简单操作Sybase ASE数据库
    新软发布:Autorun病毒免疫工具
    vc 编程最需要注意的地方
    (转)不得不了解VB中的CallByName
    作业总结
    (转)傻瓜式简单制作Windows7旗舰版免激活光盘镜像教程 (安装后自动激活)
    发布C#模块:平面凸包的计算
    凸包计算模块ConvexHull的使用方法
    模块发布——树类模块
  • 原文地址:https://www.cnblogs.com/Lee-yl/p/13301124.html
Copyright © 2011-2022 走看看