搜集查阅了许多资料之后,暂未找到对于特征重要性的高大上的定义。就按照字面意思理解,特征重要性即特征的重要性,是机器学习中的一个概念,其中特征是被观测对象的一个独立可观测的属性或者特点。而之前看的某篇文章中提到,并不是被观测对象的所有“属性”一定都是“特征”,这说明判断某个属性是否为特征,也是与机器学习任务有关的,与任务无关的属性不应作为特征。
2.特征重要性的意义【参考:怎么理解随机森里中feature importance-特征重要性?-CDA数据分析师官网】
(1)特征重要性可以衡量每个输入特征对模型预测结果的贡献,可以凸显出特征与目标的相关相关程度,能够帮助我们了解数据集
(2)特征重要性可以帮助了解模型
特征重要性得分通常是通过数据集拟合出的预测模型计算的。查看重要性得分能够洞悉此特定模型,以及知道在进行预测时特征的重要程度。
(3)特征重要性能够用于改进预测模型
我们可以通过特征重要性得分来选择要删除的特征(即得分最低的特征)或者需要保留的特征(即得分最高的特征)。这其实是一种特征选择,能够简化正在建模的问题,加快建模过程,在某些情况下,还能够改善模型的性能。
3.特征重要性的常用计算方法最近以“特征重要性”为检索词在知网搜索,发现主流的计算特征重要性的方法是随机森林(RF)。特征重要性是随机森林算法的“副产品”。
3.1 使用随机森林计算特征重要性【转载:随机森林如何评估特征重要性】随机森林如何评估特征重要性 - 简书https://www.jianshu.com/p/7a876bb876b9
随机森林中进行特征重要性的评估思想为:
判断每个特征在随机森林中的每棵树上做了多大的贡献,然后取个平均值,最后比一比特征之间的贡献大小。其中关于贡献的计算方式可以是基尼指数或袋外数据错误率。
3.1.1 随机森林评估特征重要性--基于基尼指数
基尼指数计算方法:k 代表 k 个类别,代表类别 k的样本权重。
那么特征在节点m上的重要性,即节点m分枝前后的Gini指数变化量为 :
(其中,GIl和GIr分别表示分枝后两个新节点的Gini指数)
3.1.2 随机森林评估特征重要性--基于袋外数据
对于一棵树 ,用OOB样本可以得到误差 e1,然后随机改变OOB中的第 j 列,保持其他列不变,对第 j 列进行随机的上下置换,得到误差 e2。至此,可以用 e1-e2 来刻画特征 j 的重要性。其依据就是,如果一个特征很重要,那么其变动后会非常影响测试误差,如果测试误差没有怎么改变,则说明特征j不重要。
而该方法中涉及到的对数据进行打乱的方法通常有两种:
1)是使用uniform或者gaussian抽取随机值替换原特征;
2)是通过permutation的方式将原来的所有N个样本的第 i 个特征值重新打乱分布(相当于重新洗牌)。
3.2 其他方法计算特征重要性比较而言,第二种方法更加科学,保证了特征替代值与原特征的分布是近似的(只是重新洗牌而已)。这种方法叫做permutation test(随机排序测试),即在计算第 i 个特征的重要性的时候,将N个样本的第 i 个特征重新洗牌
【转载:原文链接:https://blog.csdn.net/qq_31611005/article/details/124634831 本文为CSDN博主「wbbhcb」的原创文章,遵循CC 4.0 BY-SA版权协议】
3.2.1 SHAP
SHAP一种来自于博弈论的方法,适合黑箱和非黑箱模型计算特征重要性。对于一些非线性的模型来说,特征与特征之间往往会相互作用,所以评价单个特征的重要性时需要要结合其他特征进行判断。而SHAP就是这样一种方法,其会计算特征的边际效应。比如ABCD四个特征,计算A特征的特征重要性时,它会计算AB、AC、AD、ABC、ABD和ABCD等特征组合的预测值(未在特征组合里的特征会被填充均值或进行其他操作);然后再计算不包含A特征的不同组合预测值,即会计算B、C、D、BC、BD和BCD等组合的预测值;最后整合多个边际效应来确定A特征的重要性,即整合val(AB)- val(B)、val(AC)- val©、val(AD)- val(D)、val(ABC)- val(BC)、val(ABD)- val(BD)和val(ABCD)- val(BCD)等边际提升为A特征的重要性。
但SHAP有个缺点,其计算复杂度极高,其计算复杂度是关于特征数量的指数阶复杂度,即使简化版本的SHAP也有极高的计算复杂度。有关SHAP的理论和实践文章如下。
https://zhuanlan.zhihu.com/p/85791430
https://zhuanlan.zhihu.com/p/103370775
Permutation计算特征重要性较为简单,即打乱某一特征后,观察指标的变化情况,指标变化得越大表示该特征越重要。更详细的介绍可以看下述文章。
https://zhuanlan.zhihu.com/p/460783657
Boruta的核心思路就是将特征矩阵进行shuffle,接着将shuffle后的特征(shadow features)与原特征(real features)拼接构成新的特征矩阵,然后判断打乱后特征重要性和原特征重要性的差距,如果这个差距越大表示该特征越重要。通常来说Boruta计算特征重要性会用到树模型。Boruta更详细介绍可见看下述文章。
https://www.zhihu.com/question/37318254



