【Uplift】特征选择篇

https://zhuanlan.zhihu.com/p/363866684

【Uplift】特征选择篇


本文主要参考论文《Feature Selection Methods for Uplift Modeling》介绍Uplift Modeling中的特征筛选问题,主要包括”Filter方法“和”Embed方法“。具体实现参考CausalML源码。

做好特征选择可以带来很多好处,包括计算效率、维护成本、可解释性、减少过拟合等。机器学习中有一系列进行特征选择的方法,主要可以分为3类,即”过滤方法“、”封装方法“、”嵌入方法“,下图是《美团机器学习实践》中的一个比较图。

简单说,”过滤方法“是通过特征变量和目标变量的一些指标计算并设定阈值做过滤;”封装方法“是通过不断尝试特征组合并借助模型效果来打分;”嵌入方法“是用模型训练过程中附带的关于特征重要性的描述作为依据。

在这里插入图片描述

Filter方法

过滤方法计算快,复杂度为 O ( m ⋅ n ) O(m\cdot n) O(mn),m为特征数,n为样本数。

这里介绍了3种过滤方法,分别是F-filter、LR-filter、Bin-Based filter

F-filter和LR-filter

  • F-filter首先用相关特征训练线性回归模型,特征包括”treatment、目标feature、二者交叉、常数项“,然后用交叉项系数的F-statistic作为得分

statsmodels.regression.linear_model.OLSResults.f_test

  • LR-filter则基于逻辑回归模型,用交叉项系数的likelihood ratio test statistic作为得分

statsmodels.discrete.discrete_model.LogitResults.llf

Bin-Based方法

Step1:对目标特征排序,并按比例分为K组。

Step2:分别计算每组内,T组和C组中,outcome的分布散度,并求和。即
Δ = ∑ k = 1 K N k N D ( P k : Q k ) \Delta=\sum_{k=1}^{K} \frac{N_{k}}{N} D\left(P_{k}: Q_{k}\right) Δ=k=1KNNkD(Pk:Qk)
其中,假设outcome共有C类, P k = ( p k 1 , . . . , p k C ) P_k=(p_{k1},...,p_{kC}) Pk=(pk1,...,pkC) Q k = ( q k 1 , . . . , q k C ) Q_k=(q_{k1},...,q_{kC}) Qk=(qk1,...,qkC)分别表示T组和C组概率分布, N k N \frac{N_k}{N} NNk表示第 k k k组的样本占比, D D D表示分布散度,介绍了3种计算方法

  • KL算法,Kullback-Leibler divergence

K L ( P k : Q k ) = ∑ i = 1 n p k i log ⁡ p k i q k i KL\left(P_{k}: Q_{k}\right)=\sum_{i=1}^{n} p_{k i} \log \frac{p_{k i}}{q_{k i}} KL(Pk:Qk)=i=1npkilogqkipki

  • 欧式距离,Euclidean distance

E D ( P k : Q k ) = ∑ i = 1 n ( p k i − q k i ) 2 E D\left(P_{k}: Q_{k}\right)=\sum_{i=1}^{n}\left(p_{k i}-q_{k i}\right)^{2} ED(Pk:Qk)=i=1n(pkiqki)2

  • 卡方散度,chi-squared divergence

Chi ⁡ ( P k : Q k ) = ∑ i = 1 n ( p k i − q k i ) 2 q k i \operatorname{Chi}\left(P_{k}: Q_{k}\right)=\sum_{i=1}^{n} \frac{\left(p_{k i}-q_{k i}\right)^{2}}{q_{k i}} Chi(Pk:Qk)=i=1nqki(pkiqki)2

Embed方法

嵌入方法的特征重要性取自模型训练过程中得到的中间数值,这里提出两种嵌入式方法和一种作为对比的嵌入式方法

  • two-model method:基于meta-learning中的T-learner,取目标特征在两个模型中的特征重要性之和。
  • Uplift-tree(KL divergence):在训练uplift tree过程中,每次分裂会计算分布散度的增益,取该特征的 Δ \Delta Δ之和,本文中 D D D取KL散度。

Δ = ∑ k =  left, right  D ( P k : Q k ) − D ( P : Q ) \Delta=\sum_{k=\text { left, right }} D\left(P_{k}: Q_{k}\right)-D(P: Q) Δ=k= left, right D(Pk:Qk)D(P:Q)

  • 作为对比的outcome embeded方法:直接对Y训练模型,并取模型给出的目标特征重要性做过滤。

特征过滤的效果

  • 首先,对不同类型有效特征的提取能力。下图是指通过100次模拟试验,不同过滤方法筛选出的top6的特征,是实际有效特征的比例。可以看到,Bin-Based方法整体好于其他,尤其是平方、三角函数类型特征。

在这里插入图片描述

  • 其次,看筛选后的模型效果。下图是不同meta-learner、不同uplift model、不同feature selection方法,选择top20特征时的AUUC值对比 。可以看出RLearner-RF模型,配KL-filter可以取得最佳的效果。

在这里插入图片描述

  • 最后,看时间成本。Filter方法都很快,Embed-KL由于是纯python实现所以很慢,Embed的其他方法由于使用scikit-learn有Cython实现所以很快。

在这里插入图片描述

个人理解

在标准的机器学习预测模型中,特征筛选能够减少维护成本,提高训练速度,但并不能(或很少)带来准确率提升。而uplift modeling不同,该类问题对于无效特征更为敏感,如果能更准确的剔除无效特征,对准确率是会有提升效果的。

在实操中,使用Meta-Learning方法时,泛化能力更强的RF可以优先考虑;结合上述结果,bin-based(KL)方法和KL-embed方法是不错的选择。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值