Uplift Tree Model:增益树模型原理

389 阅读2分钟

增益树及分裂准则

       相比T-Learner/S-Learner这种间接建模增益的元学习类模型,可以利用决策树直接预估单干预下的增益。本文基于Piotr Rzepakowski和Szymon Jaroszewicz的论文《Decision trees for uplift modeling with single and multiple treatments》介绍增益树模型,即Uplift Tree Model。

       通过决策树建模干预增益,最关心的问题是“树的分裂规则”。传统的决策树分类模型,训练时的分裂标准是信息增益或信息增益比。对于二分类问题,训练过程树分裂标准是节点分裂后,子节点的纯度变得尽可能高,即区分出各类样本。而Uplift Tree Model训练时的分裂标准是分裂前后干预组与控制组的响应标签分布差异的变化,即通过“分裂” 最大化干预组与控制组的响应标签分布差异。树每一次分裂力求使干预组和控制组的分布最大化不一样,从而区分高增益用户和低增益用户。度量分布差异时,可以使用KL divergence、chi-squared divergence或欧式距离等指标。

       注意,这里需要干预组和控制组的分布最大化不一样,关键点在于分裂后左子节点(右子节点)的干预组正负样本占比Tpn、控制组上的正负样本Cpn占比,二者尽可能差异化,而不是要求左子节点都是正样本or负样本。公式描述如下:

image.png

公众号原文:Uplift Tree Model:增益树模型原理

image.png

image.png

增益树分裂的正则化惩罚项

       和传统的决策树分类模型类似,直接使用信息增益作为分裂标准,会偏向于选择“有大量差异特征值的特征”。因此,会在Dgain(A)D_{gain}(A)的基础上,对“有大量差异特征值的特征”做额外惩罚,论文中对欧式距离度量的情况,给出了如下惩罚项:

NTNGini(PT(A))+NCNGini(PC(A))\frac{N^T}{N} \operatorname{Gini}\left(P^T(A)\right)+\frac{N^C}{N} \operatorname{Gini}\left(P^C(A)\right)

       上式计算基于特征A分裂后,落在干预组样本和控制组样本的特征分布的Gini指数(Gini指数取值介于0~1,值越接近0表示所有样本都属于同一个类别,值越接近1表示各类别样本均匀分布)。一般,当特征A有大量差异特征值时,无论是干预组还是控制组,相应的Gini指数都极有可能包括特征A的多个取值,相应的Gini指数就会偏大。

 

       此外,基于某个特征  分裂后,可能会出现:左(右)子树上干预组和控制组样本量极度不均衡的情况。比如,使用特征  分裂后,左子树的样本全是干预组样本,右子树的样本全都是控制组的样本。为了减弱这类特征对增益树分裂的影响,加入惩罚项:

Gini(NTN,NCN)D(PT(A):PC(A))\operatorname{Gini}\left(\frac{N^T}{N}, \frac{N^C}{N}\right) D\left(P^T(A): P^C(A)\right)

       用于度量分裂后,干预组和控制组特征A分布的差异程度。同时,为了保证分布差异计算结果的可靠性,干预组和控制组的样本量也要达到一定的要求,否则计算得到的惩罚项将变得没有意义。因此,该惩罚项最终会再乘上一个因子Gini(NTN,NCN)\operatorname{Gini}\left(\frac{N^T}{N}, \frac{N^C}{N}\right),用于评估两组样本量是否严重不平衡。当NT=0 或 NC=0N^T=0 \text { 或 } N^C=0时,Gini(NTN,NCN)\operatorname{Gini}\left(\frac{N^T}{N}, \frac{N^C}{N}\right)取值会趋近于0,此时会使该惩罚项整体不起作用。

       最后,为了避免特征增益小并且正则化惩罚也小,导致选择的分裂特征不合理问题,根据实验经验,惩罚项加上12\frac{1}{2},则有如下完整的正则化公式:

J(A)=Gini(NTN,NCN)D(PT(A):PC(A))+NTNGini(PT(A))+NCNGini(PC(A))+12\begin{aligned} J(A) & =\operatorname{Gini}\left(\frac{N^T}{N}, \frac{N^C}{N}\right) D\left(P^T(A): P^C(A)\right) \\ & +\frac{N^T}{N} \operatorname{Gini}\left(P^T(A)\right)+\frac{N^C}{N} \operatorname{Gini}\left(P^C(A)\right)+\frac{1}{2} \end{aligned}

最终对应的分裂准则就是

Dgain (A)J(A)\frac{D_{\text {gain }}(A)}{J(A)}

公众号原文:Uplift Tree Model:增益树模型原理

预估及总结

基于上述分裂准则训练完Uplift Tree Model后,对新数据预估增益的方法是看这个新数据里的某个样本落在树的哪个叶节点leaf,计算该叶节点下的干预组和控制组的响应标签y的分布差异,即

ITE=PT(yleaf)PC(yleaf)I T E=P^T(y \mid l e a f)-P^C(y \mid l e a f)

关于增益树模型的内容基本介绍完了,对相关主题感兴趣的读者欢迎留言交流讨论。感谢你看到这里,更多优质内容请关注:瑞行AI公众号

小.jpg