在去偏:什么是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、条件独立:譬如:
当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,需要额外数据建模:
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塔输出节点的梯度:
其中:
,
为ctr的预估分
为ctcvr的label(对ctr部分偏导为0)
可以看出,1、loss方向是对的,label=0,激活函数与正相关,对产生正梯度。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的样本,权重为,对于click=0,权重为,不过其中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不等价)
- [3] https://towardsdatascience.com/understanding-dataset-shift-f2a5a262a766 Chapter: Major Causes of Dataset Shift.后续阐述了一些检测以及处理Covariate Shift的方式。
- [4] https://www.analyticsvidhya.com/blog/2017/07/covariate-shift-the-hidden-problem-of-real-world-data-science/
其实dataset shift也可以分为多种
Shift in the independent variables (Covariate Shift)
Shift in the target variable (Prior probability shift)
Shift in the relationship between the independent and the target variable (Concept Shift) - [5]:有一个相对概述的讲解,但是要解决的问题是有区别的,可以作为拓展参考:Recovering from Selection Bias in Causal and Statistical Inference