RandomForest中的feature_importance

随机森林算法(RandomForest)的输出有一个变量是 feature_importances_ ,翻译过来是 特征重要性,具体含义是什么,这里试着解释一下。算法

参考官网和其余资料能够发现,RF能够输出两种 feature_importance,分别是Variable importance和Gini importance,二者都是feature_importance,只是计算方法不一样。dom

Variable importance

选定一个feature M,在全部OOB样本的feature M上人为添加噪声,再测试模型在OOB上的判断精确率,精确率相比没有噪声时降低了多少,就表示该特征有多重要。测试

假如一个feature对数据分类很重要,那么一旦这个特征的数据再也不准确,对测试结果会形成较大的影响,而那些不重要的feature,即便受到噪声干扰,对测试结果也没什么影响。这就是 Variable importance 方法的朴素思想。翻译

[添加噪声:这里官网给出的说法是 randomly permute the values of variable m in the oob cases,permute的含义我还不是很肯定,有的说法是打乱顺序,有的说法是在数据上加入白噪声。]rest

Gini importance

选定一个feature M,统计RF的每一棵树中,由M造成的分支节点的Gini指数降低程度(或不纯度降低程度)之和,这就是M的importance。htm

 

二者对比来看,前者比后者计算量更大,后者只须要一边构建DT,一边作统计就能够。从sklearn的官方文档对feature_importances_参数的描述来看,sklearn应当是使用了Gini importance对feature进行排序,同时sklearn把全部的Gini importance以sum的方式作了归一化,获得了最终的feature_importances_输出参数。排序

 

参考文献:文档

RandomForest 官网  https://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htmget

相关文章
相关标签/搜索