对于一个项目,我使用feature_importances_了RandomForestRegressor. 一切正常,但我不知道如何解释为什么一个功能比另一个更重要。我的意思是我知道分数越高重要性越高,但我不明白它是如何计算的。
例如,如果一个变量的得分为 0.35 是什么意思?
如果有人能向我解释它是如何工作的,我将不胜感激!
谢谢!
对于一个项目,我使用feature_importances_了RandomForestRegressor. 一切正常,但我不知道如何解释为什么一个功能比另一个更重要。我的意思是我知道分数越高重要性越高,但我不明白它是如何计算的。
例如,如果一个变量的得分为 0.35 是什么意思?
如果有人能向我解释它是如何工作的,我将不胜感激!
谢谢!
scikit-learn的RandomForestRegressor特征重要性在构成森林的每棵树中计算。您可以在此处找到源代码(从第 1053 行开始)。
它的作用是,对于在特征上进行拆分的树中的每个节点,它从父节点 impurity value 中减去每个子节点(左和右)的 impurity 值。如果杂质减少很多(意味着该特征执行了有效的拆分),它基本上给出了高分。当然,所有这一切都取决于测试对结果的有用程度:两个个体之间的分裂会大大降低杂质,但这是微不足道的,比两个大群体之间的分裂要容易得多。
一旦确定了每棵树的特征重要性,就会对其进行求和和归一化,以使feature_importances_向量总和为 1。
它可能会引入一些偏见,例如,如果变量没有缩放,我想应该是这种情况。然而它很容易计算(你只需要从树中读取杂质值),所以我想这就是默认提供它的原因。但是该方法不是明确的,还有其他方法可以或多或少地手动实现:
...可能还有其他一些方法。所有这些都会给你其他可能有帮助的分数。