xgboost很好用,但是很多同学对它特征重要性评估的原理不太明白。今天简单梳理下:
特征重要性函数
调用xgb.feature_importances_函数,即可求出各个特种的重要性,这是我们的目标。
现在就来探究一下,这个feature_importances是怎么得到的。
那么重要性指标到底是如何评价的呢?进入feature_importances_,可以看到:
①求每个特征对应的score
②把每个特征得到的score/sum(score)
大概思路如此。
那么,现在就要知道,这个score到底是怎么求得的?
此时,我们需要知道,特征重要性指标评估三种常用的方式:
①gain 增益意味着相应的特征对通过对模型中的每个树采取每个特征的贡献而计算出的模型的相对贡献。与其他特征相比,此度量值的较高值意味着它对于生成预测更为重要。
②cover 覆盖度量指的是与此功能相关的观测的相对数量。例如,如果您有100个观察值,4个特征和3棵树,并且假设特征1分别用于决定树1,树2和树3中10个,5个和2个观察值的叶节点;那么该度量将计算此功能的覆盖范围为10 + 5 + 2 = 17个观测值。这将针对所有4项功能进行计算,并将以17个百分比表示所有功能的覆盖指标。
③