在random forest和xgboost这类集成树模型中是如何计算_feature_importance的

  统计/机器学习 监督式学习 特征选择    浏览次数:10171        分享
1
大概觉得和某特征作为切分点使用的频度有关,但是对具体的算法很迷糊。
 

nobodyoo1   2018-07-29 15:43



   1个回答 
11

随机森林和xgboost中的importance是一样的计算方法。


概括地说,一棵树中,某个特征的importance就是损失函数在这个特征切分点上的提升。在整个模型中,importance就是它在所有树上importance的均值。

例如,对于一个二元分类问题,我们用了gini impurity作为分叉标准的随机森林。假设,森林中一共三棵树。

特征A在树1中作为划分点,并且在这个点上,gini从0.6降到0.3。

特征A在树2中作为划分点,并且在这个点上,gini从0.5降到0.4。

特征A并没有出现在树3中。

特征A的importance为:((0.6-0.3)+(0.5-0.4))/3=0.13

特征B在树1中作为划分点,并且在这个点上,gini从0.3降到0.1。

特征B在树2中作为划分点,并且在这个点上,gini从0.7降到0.5。

特征B在树3中作为划分点,并且在这个点上,gini从0.4降到0.1。

特征B的importance为:((0.3-0.1)+(0.7-0.5)+(0.4-0.1))/3=0.23


上面的例子是gini,当然也可以entropy。对于回归任务来说,损失函数可以是MSE,或者MAE之类。


SofaSofa数据科学社区DS面试题库 DS面经

maxroot   2018-07-29 16:26

非常清晰,感谢! - nobodyoo1   2018-07-29 16:37
赞! - niiii   2018-12-30 14:32


  相关讨论

如果用xgboost模型,那么还需要先做feature selection吗?

Tree Shap value for xgboost

怎么利用permutation importance来解释xgboost模型的特征?

XGBoost中get_score中的cover是什么意思

对于xgboost,还有必要做很多特征工程吗?

GBDT和XGBoost使用的都是回归树,原理上是怎么支持解决分类问题的?

xgboost是怎么做到regularization的?

xgboost里的每棵树是不是等权重的?

GBDT和XGBoost在叶子节点权重计算上有什么不同?

stack多个xgboost效果并不理想

  随便看看

numpy array里怎么用fillna填充nan的值?

opencv里waitkey和destroyAllWindows有什么用?

柯西分布没有数学期望

序列的autocorrelation(自相关系数)的计算公式

xgboost怎么调参?