美文网首页机器学习-算法理论
Uplift:Partial observation model

Uplift:Partial observation model

作者: shudaxu | 来源:发表于2020-11-06 18:51 被阅读0次

    场景:

    数字营销,广告行业。在互联网领域,流量变现一直都是很多产品非常大的一个利润来源。因为很多传统领域(甚至一些转型的领域,如电商)在互联网环境下,一个重大的开支都是营销支出,这些支出中其中一个重要分支说到底,就是流量成本。


    目标分析:

    • 而衡量我们收益,的一般是传统意义上的ROI(在预算有限的环境下,提升ROI也是直接提升转化量),比较典型的例如RTB广告,其一直是效果广告的首选,一般比较适用于从外部流量投放,去拉取新用户的状态,对于这种需求,其实传统的点击,转化模型是比较合适的。ROI=点击(转化)收益/竞价成本。*
    • 但是对于自有用户,流量很多,复购率很高的一些电商来说,ROI中收益的计算,并不是严格意义上直接归因的收益。因为对于一些用户,可能你不营销,他们也能转化。实际上:
      Revenue = (p(act | treatment) - p(act | no_treatment)) * act_value

    核心难点1:Partial Observation

    • 这个问题,有个最核心的难点,就是对于同一用户,我们要么知道其在treatment下的label,要么知道其在no treatment下的label【无法同时得到他们的ground truth,我在这里定义为partial observation】。我们无法知道其在两种状态下的ground truth,所以直觉上不好直接地建模。
      要解决它,一个比较明确的方案就是,依靠模型的泛化性来解决。虽然不是同一个用户,但是对“同一类”用户,我们是有可能得到他们两种状态下的label的。这里需要用到条件独立的假设,即随机分AB组,并对其中一组做treatment,另一组不做。则能得到无偏数据(特征独立于treatment)。

    核心难点2:无法完全无偏

    • 很多情况下,要优化最终收益,ROI灯,我们需要使用p(y|do(x))来进行估计,以得到:
      Revenue = p(y|u, do x=1) - p(y|u, do x =0)
      由此来决策。但是由于很多时候我们无法获得完全无偏的数据(我们不可能每次都进行大规模的随机实验),因此,由于Confounder的存在,p(y|x,u) \neq p(y|u, do(x)),所以,我们需要小心地做进行Debias
      *TODO

    理解到上述问题后,我们的任务就是对问题进行建模。那么现在其实有多种建模的思路:


    建模思路:

    conceptional 2x2 Matrix:[2] 先通过这个图,理解一下我们知道的,我们想知道的:


    image.png
    • 1、在两个样本集上做两个模型。一个是“treatment下的转化”另一个就是“没有treatment的转化”,在推断的时候,使用两个模型的差值来做为最终预估。不过由于是两个模型,可能最终的累积误差会比较大。

    • 2、类似地可以只使用同一个模型,将有无treatment作为特征输入。最终预估仍然是两次预估取差值。不过和方法1比较类似,相当于共享了更多的参数,样本更多(两倍),训练更充分,累积误差会小一点(但是实际上还是预估两次做差,累积误差扩大问题还是存在)。当然,这个模型也有很多可以优化的细节,比如做weighted loss,对Control NoneRespond与Treatment Respond部分加权(or不同权重),使其这部分预估得更精准一些。因为这部分是主要uplift的来源。

    • 3、根据上述权重优化的思路,其实也可以用别的一些目标建模。例如将CN与TR的label设为1,其他为0,相当于我们直接建模预估哪些是persuadable的【即这两部分比较有潜力】,然后对这部分用户提供treatment。参考[3]

    • 4、直接对revenue建模:
      可以参考论文[1],可以直接使用模型对使用怎样的treatment进行建模,直接计算与优化建模的期望收益。
      由于其实现的方法要对训练过程,loss等进行比较大的改造,所以成本较大。
      不像1中的方法,能比较好地兼容现有的训练推理体系。

    • PS:其实同理,这个模型也可以是多目标的。帮助我们在多个层次上对用户行为进行更精细的建模。


    评估思路:

    这里评估也因为partial observation,有一大难点,就是我们无法知道真正的uplift(用户在treatment与control两种状态下分别的ground truth我们只能观测到一种)。所以,我们的思路便是:以群体的视角来看待用户。,用在群体中的期望收益,来代替对个人的收益。(对于某一个人我们只能观测到T 或者C其中一种状态。而对于群体我们能通过随机策略,同时获得T与C组的观测结果,通过群体上的期望评估来代替个人)

    • 即:我们的目标虽然是评估ITE(Individual Treatment Effect),但是我们没法直接观测评估它,所以我们通过ATE(Average Treatment Effect),在群体上统计uplift来分析。

    Qini Curve

    QINI = TR - [(CR*T)/C];QINI = (TR/T) - (CR/C)【这是归一化的后的百分比QINI】


    qini curve

    这个非常好理解x轴为人数,y轴为累积收益:

    • x轴即为分数从高到底逆序的分位点。(例如有10个点,即top10%,top20%..)
    • y轴为这些样本中,累积的收益(例如正样本数量),

    图中线段:

    • 1、baseline是一根直线(假设用户随机,均匀分布,则每个分组中转化数量=分组人数*整体期望差【Treatment转化概率- Control转化概率】),右方最高点即为总的转化差值。
    • 2、蓝色为模型的线,对于我们的模型来说,按照模型预估的uplift分数(在差分模型中就是u(x) = p(x| t=1)-p(x | t=0))来对用户排序(包含T组与C组【treatment,control】),然后再在分组的用户中计算转化的数量增益:
      Treatment转化数量 - Control转化数量(注意,横坐标必须保证每组人数数量是一致的【或者比例固定】,对应的baseline才能画出一条直线。也正式因为T组与C组人数比例是固定的,所以期望的uplift收益=期望转化人数*T/(T+C),由于T/(T+C)是固定的,所以这个对应的baseline才能成为直线)
      PS1:由于我们先决假设特征X与是否使用T是条件独立的,所以理论上,在同一个Uplift分数段中,T组与C组的人数应该是一样的。
      PS2:理论上如果模型有效,应该能将“提升大的用户”分在前面,所以真实提升应该更向左上方集中。

    AUUC

    变量假设参考论文[4]
    我们可以用类似auc的方式计算:


    image.png

    Qini coefficient

    类似地,也是参考qini curve:

    image.png
    这里NT,NC标示T组的人数,C组的人数。这里便是将其scale到同一个人数标准下。
    RT(k)=kE(Y|t=T),即分为点数量每组期望数量转化数量

    Refer:
    [1]:Uplift Modeling with Multiple Treatments and General Response Types
    [2]:https://www.kaggle.com/davinwijaya/uplift-modeling-qini-curve-with-python
    [3]:The Class variable transformation (CVT) Model(Jaskowski und Jaroszewicz, 2012) and Lai´s Weighted Uplift Method (LWUM) (Kane, Lo und Zheng, 2014)
    [4]:A Large Scale Benchmark for Uplift Modeling
    https://zhuanlan.zhihu.com/p/100821498
    https://blog.csdn.net/jxq0816/article/details/105100834/

    相关文章

      网友评论

        本文标题:Uplift:Partial observation model

        本文链接:https://www.haomeiwen.com/subject/faecvktx.html