在 Scikit Learn RandomForestRegressor 中解释 feature_importances_

数据挖掘 scikit-学习 随机森林
2022-02-20 19:43:07

对于一个项目,我使用feature_importances_RandomForestRegressor. 一切正常,但我不知道如何解释为什么一个功能比另一个更重要。我的意思是我知道分数越高重要性越高,但我不明白它是如何计算的。

例如,如果一个变量的得分为 0.35 是什么意思?

如果有人能向我解释它是如何工作的,我将不胜感激!

谢谢!

1个回答

scikit-learnRandomForestRegressor特征重要性在构成森林的每棵树中计算。您可以在此处找到源代码(从第 1053 行开始)。

它的作用是,对于在特征上进行拆分的树中的每个节点,它从父节点 impurity value 中减去每个子节点(左和右)的 impurity 值如果杂质减少很多(意味着该特征执行了有效的拆分),它基本上给出了高分。当然,所有这一切都取决于测试对结果的有用程度:两个个体之间的分裂会大大降低杂质,但这是微不足道的,比两个大群体之间的分裂要容易得多。

一旦确定了每棵树的特征重要性,就会对其进行求和和归一化,以使feature_importances_向量总和为 1。

它可能会引入一些偏见,例如,如果变量没有缩放,我想应该是这种情况。然而它很容易计算(你只需要从树中读取杂质值),所以我想这就是默认提供它的原因。但是该方法不是明确的,还有其他方法可以或多或少地手动实现:

  • 打乱数据集中特征的值
  • 根据特征恢复每个测试的结果

...可能还有其他一些方法。所有这些都会给你其他可能有帮助的分数。