PIMP null importance

PIMP全称permutation importance,也叫null importance。
PIMP相当于是对变量重要性的一种修正,因为有些方差很大的变量,总能找到分割方法,使算法获得gain。
PIMP的步骤是:
1、用某种算法(通常random forest)拟合真实数据,得到实际变量重要性,重要性通常有两种度量,分割次数和分割产生的gain的sum
2、打乱label,重新用1中相同的算法(相同超参)训练,得到各个变量重要性,重复步骤2 N轮
3、比如shuffle label 100轮,这个时候变量的重要性就存在一个分布,我们可以通过比较实际变量重要性和shuffle label 100轮的重要性,有效的变量是真实重要性高,但是shuffle label的重要性低,这个时候可以设置一个打分函数,比如 真实重要性/shuffle重要性的上四分位数,这个指标数据可能会比较分散,可以求个ln,ln(1e-10+真实重要性/(1+shuffle重要性的上四分位数)),+1防止分母为0的错误,+1e-10防止ln0的错误

null importance很多情况重要性还高于actual importance,这种变量就有问题。

这种就是好变量,actual importance远远大于null importance。
用上面提到打分函数,得到所有变量的排序,如下:

根据变量重要性,筛选重要的变量,refit模型。
kaggle的Grand Master还提供了1个打分函数,null importance中有百分之多少的重要性小于实际重要性,如果全部(100%)都小于实际重要性就比较理想了,用此打分函数得到的变量重要性,如下:

null importance有两个好处:
1、删除了高方差,但是和label其实无关系的变量
2、剔除了相关特征在建模过程中特征重要性被稀释的影响(这点我是这样理解的,从两个打分函数可知,这是一种标准化的特征重要性,特征的实际重要性和null importance进行比较,实际重要性受到相关变量影响,null importance也受到相关变量影响,两者相比就剔除了被稀释的影响)

应用:
最后筛选特征的时候,可以划定不同阈值,比如最好的 90% 80% 70%的特征集,或者一些绝对的阈值(score2 ≥10 ≥20 ≥30等等),比较不同阈值下模型效果,选取最优特征子集,这个过程也可以参考RFE,是递归消除的方式,消除一定量特征后,比如最差5%,迭代PIMP的流程,再消除5%特征,5%这个数值也可以按照某种方式递减(因为消除到最后变量越重要,删减速度应该放缓)。

留言

熱門文章