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

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

nobodyoo1   2018-07-29 15:43



   1个回答 
6

随机森林和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面经 问答 实战

maxroot   2018-07-29 16:26

非常清晰,感谢! - nobodyoo1   2018-07-29 16:37


  相关主题

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

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

xgboost中的决策树的复杂度是怎么定义的?   1回答

xgboost展开到二阶导数有什么好处啊   1回答

xgboost怎么调参?   8回答

为什么lightgbm比xgb快?   2回答

stack多个xgboost效果并不理想   6回答

xgboost是怎么做到regularization的?   2回答

到底什么时候用lightgbm什么时候用xgb   1回答

xgboost的FIT问题   1回答

xgboost中的参数min_child_weight是什么意思?   1回答

把XGBRegressor保存到本地文件并调用   1回答



回答问题时需要注意什么?

我们谢绝在回答前讲“生动”的故事。

我们谢绝“这么简单,你自己想”、“书上有的,你认真看”这类的回答;如果你认为对方的提问方式或者内容不妥,你可以直接忽略该问题,不用进行任何作答,甚至可以对该问题投反对票。

我们谢绝答非所问。

我们谢绝自己不会、硬要回答。

我们感激每一个用户在编写答案时的努力与付出!