美文网首页机器学习-算法理论
Selection Bias消解方案简述

Selection Bias消解方案简述

作者: shudaxu | 来源:发表于2021-01-22 21:05 被阅读0次

    去偏:什么是bias,为什么要消除bias,何时,怎么消除bias
    中论述了我们业务体系中的偏差,以及如何处理他们。
    会有bias可以直接消解吗?也有。

    定义

    • 建模目标定义
      建模目标:P(Y|X)的条件分布。

    • 预估问题中,常见Selection偏差的定义[5]:
      假设对于特征变量Z,在样本中的边缘分布p'(z)与总体中的边缘分布p(z)不同。那么样本在z上是有bias的。(这里的样本和总体,通常也可以是:训练样本与推断样本)【这里可以是样本与总体,也可以是控制组与对照组】
      譬如训练时,对总体进行了对z的有偏采样。p(z|select=0) != p(z|select=1),即p(z|select) != p(z)
      譬如AB test中对变量xi进行研究(假设AB组别的变量因子分布一致),当p(z|group=A) != p(z|group=B)时,AB分组也是有偏的,可能会影响实验结果。(比如A组很多土豪用户,B组很少)
      注意:这里的z不在x的集合中,即z不属于x
      这样的问题非常常见,譬如在广告,推荐中,显式隐式地都存在这样的问题。

    何时selection bias可以消解

    • 1、最严格条件:z与x,y都无关
      eg:
      非常常见的,完全随机:
      比如随机AB实验,我们ab分组的方式与y是无关的(完全随机分组),所以我们建模的时候不用考虑AB分组,即p(y|x,z=A)=p(y|x,z=B)=p(y|x)
      或者完全随机采样。

    • 2、z与y无关:(完全无关不一定是没有z->y,概率建模需要没有任何连接,y->z也不行)
      其实z只要与y无关即可。满足p(y|z) = p(y),则p(y|x, z)=p(y|x)

    • 3、条件独立:譬如:z \rightarrow x \rightarrow y
      当y在 given x的情况下与z无关:p(y|x, z)= P(y|x)。
      eg:
      比如在广告预估场景:y:win,x:bid,z:特征空间
      对成功率建模p(win| bid ,z ) = p(win|bid) 【z为特征空间】
      因为概率的关系建模为:z->bid->win。
      当然,在某些特殊情况下,比如adx平台对某些用户有筛选地控制竞价时,所以其biding landscape是depending on 具体流量的,通常具体流量也可以拿z来部分替代。

    • 4、TODO,需要额外数据建模:x \rightarrow y \rightarrow z
      eg:
      譬如对y=0的样本负采样,联合分布p(y,x)发生了改变,边缘分布p(y),p(x)也发生了变化,理论上所有x的分布都是有偏的,即:p(x| select=0) != p(x| select = 1) 。但是p(y|x)的条件概率分布是不受影响的,所以我们仍然用这种方式进行样本采样,训练。
      不过这里要注意一个陷阱,就是在总体分布上,given x的情况下z是与y独立的,但是当我们通过采样来进行参数估计的时候,如果采样的不合理,同样会造成最终结果有偏[1]。(当然,这里是另外一个问题了,这种方式为什么可行,在什么条件下能优化我们ranking问题,其实也是需要严谨的推导的。详细见非均衡数据分类,以及采样对其的影响 以及论文[0]的chapter 3。)

    可能陷阱

    • 1、忽略y、z的相关性
      概率建模:z->x->y,z->y
      控制组与对照组p(z) != p'(z),由于有z->y,所以我们不能忽略z
      eg:
      在营销等领域,譬如x的含义是“是否发优惠券”,我们想知道发券对用户转化y的影响p(y|x)。对于这个问题,其实我们实际上想知道revenue = p(y|x=1) - p(y|x=0)。以此来对x进行决策【x其实也可以有多值选择,譬如多档位的优惠券】。单纯这样建模是错误的,因为y可能受到z的影响更大,如果我们按一定的条件(跟z相关)发券后,这样建模很可能得到错误的结论。【当然,完全随机实验能解决这个问题,完全随机实验其实就是让x独立于z,切断z->x的连接】
      所以对于这样的问题,一般来说,我们天然地就通过p(y|x,z)来建模,revenue=p(y|x,z=1) - p(y|x,z=0)可以用来估计预期增益。但是由于x变量(发券)是我们人为控制的,如果这个控制策略本身导致样本非常不balance,比如样本中给男性发的券大大低于女性,但也会导致估计的偏差[1]。

    • 2、Covariate Shift
      如果z是偏差变量,那么将z带入模型,通过p(y|x,z)建模确实能解决不少的问题。
      但是往往现实中z会伴随着一些样本unbalance的问题【部分unbalanced的问题,不一定都会导致预估出来的条件概率误差太大,譬如上述undersampling的例子】,或者covariate shift的问题【上述unbalanced dataset的问题,如果较为严重,譬如样本中根本没有给男性发券,其实就是一种直觉理解的covariate shift】。
      eg:
      譬如常见的ctr,cvr建模。例如y是转化,z是点击,x是特征变量。同样地,x->z->y,x->y
      我们关心的目标是:
      点击率:p(z=1|x)
      转化率:p(y=1|z=1, x)
      通过概率建模,其中的概率分布关系是没有问题的。
      但是这里隐含的Covariate Shift是,我们建模的时候用z=1的样本建模,推断的时候用全量的样本推断。
      z是观察变量,但是是我们预估y前无法观测到的。
      由于 p(z=1|x)* p(y=1|z=1, x) = p(y=1, z=1|x)。因此我们可以通过p(y=1, z=1|x) / p(z=1|x) 来建模cvr。这两个概率都是可以直接在全量样本上建模,一定程度上解决covariate shift的问题[2]【有问题,请勿参考ESMM】
      PS:covariate shift起因大致可以分为两种(1) sample selection bias and (2) non-stationary environments.[3]。前者(1)可以比较明确地定义并建模,其中的一些情况在论文[0]中有比较详细的阐述与分析解决方案。后者(2)常见于时间空间变化(整个环境,状态的变化)下状态发生变化的情况,还有譬如adversarial modeling(例如adversary总在寻找缺陷进行变化的攻击)

    • 3、过度追求unbiased
      unbiased estimator一定比biased estomator好吗?答案是否定的。直观就很好理解,譬如一个estimator 是biased的,但是其bias与variance都很小。另一个unbiased estimator,虽然没有bias,但是variance非常大。这种时候,我们也可能会prefer前者。

    Refer
    • [0] When is undersampling effective in unbalanced classification tasks?
    • [1] 样本不balance会导致估计本身有偏严重,导致模型在不同类别(变量取值)下如果variance差别太大。从直觉上很好理解样本越少,其数据本身不确定性越大,数据量越大越能代表总体。理论如下:
      1、根据中心极限定理,其样本均值的variance与样本容量n成反比。
      2、最大似然估计对variance的估计本身有偏,样本越少偏差越大(分母为n,分母为n-1的情况下,样本variance才是总体variance的无偏估计)。
    • [2] 相关思路在Esmm中用乘法的方案实现(文中认为除法会有一定的数值不稳定性)。我认为,其实这里中的bias是non-stationary environments,而非是文章中所述的ssb,因为这个本身不是一个主动选择过程))【因为曝光未点击的样本,我们不知道真实label,这部分是missing data,无法直接选择做样本】。(bias的种类在后面的PS中有阐述)【当然,从理论上如何划分(是哪种bias),并不是问题关键所在,理论的完备某种程度上只是让其更优雅而已】
      当然,由于样本本身的稀疏性,p(y=1, z=1|x)【ctcvr】的建模本身就很困难,所以说可以有很多tricky的方法来辅助,譬如进行多阶段的训练,对p(z=1|x)【ctr】进行frozen来辅助训练【ctcvr】。


      【更新:ESMM这篇文章,我仔细推导了一下对CVR模型侧的loss,应该是有点问题的。当ctcvr=1时,其loss与直接训练是一致的。当ctcvr=0时,其梯度会弥散:当pCvr接近1或者接近0,梯度都是接近0,这种状态导致比较明显的第一层就存在的梯度弥散,当然也许正是这个原因,对于CVR塔的参数过高的负样本问题也能缓解一下?关于对cvr塔输出节点o的梯度:
      \frac {\partial Loss}{\partial o}=(pCvr - 1) *\frac {label - pCtr*pCvr}{1-pCtr * pCvr}
      其中:
      pCvr=\sigma(o),
      pCtr为ctr的预估分
      label为ctcvr的label(对ctr部分偏导为0)
      label=0,pCtr=0.99时,对o的loss曲线
      label=0,pCtr=0.5时,对o的loss曲线
      可以看出,1、loss方向是对的,label=0,激活函数与o正相关,对o产生正梯度。2、label=0在pcvr=1处梯度弥散。3、预估ctr越高,对cvr的梯度越高(这部分样本权重越高)这其中的第三点,是与Propensity score的思路是相反的,所以这是主要的问题所在。


      【同时,在Large-scale Causal Approaches to Debiasing Post-click
      Conversion Rate Estimation with Multi-task Learning这篇文章中,作者也指出ESMM是biased。同时这篇文章其实解决了ESMM的loss的问题,直接将pCtr引入作为propensity score(做IPW),创新点在于使用了multi-ipw(多目标同时训练),引入imputation model来解决同时训练ctr与cvr带来的误差】(IPW本身相关思路其实并不创新,propensity score可见:An Introduction to Propensity Score Methods for Reducing the Effects of Confounding in Observational Studies,其实通过pCtr优化cvr估计,就是将click变量作为confounder。类似思路可见:Nonresponse weighting adjustment
      using estimated response probability)以及:Item Popularity and Recommendation Accuracy,
      以及Weighting Regressions by Propensity Scores。对于当前问题,理论上:对于click=1的样本,权重为\frac 1 {pCtr},对于click=0,权重为\frac 1 {1-pCtr},不过其中click=0样本的ground truth我们无法获得。见Recommendations as Treatments: Debiasing Learning and Evaluation。IPWE:https://en.wikipedia.org/wiki/Inverse_probability_weighting。工程上,ctr在所有曝光样本上建模,cvr在observed data(点击样本)上建模(cvr部分的loss只包含observed data的样本),用pctr的倒数作为样本权重加权。这里有个比较反直觉的是:虽然在click=0的情况下,Y(cvr)的ground truth我们不知道,但是用ipw的情况下,我们并没有直接考虑未点击样本,也能得到unbiased estimator。
      PS:注意,当前问题中,SSB其实click并不能直接解释为confounder。(Confounding Bias与Selection Bias不等价)

    相关文章

      网友评论

        本文标题:Selection Bias消解方案简述

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