功能重要性是否随RandomForestRegressor中选择的max_features数量而变化,scikit-learn?

时间:2018-04-27 19:32:12

标签: python scikit-learn random-forest feature-selection

在我的一个项目中,我试图使用RandomForestRegressor(sklearn)确定我的12个特征中哪个是最能驱动目标变量的因素。 RandomForest很好地为您提供了一个功能重要性列表,解释了哪些功能最适合用于解释目标。但是我仍然不确定我的模型的max_features应该是什么,因为默认的答案是使用所有的功能,这意味着我的模型只是袋装的树木集合。经过一些discussions之后,如果你真的在寻找随机的树木森林,那么使用n / 3作为最大数量的特征是有意义的。我继续用n / 3作为最大数量的特征,因为我得到了相当不错的r-square 最近我意识到当我将max_features更改为n时,我的要素重要性完全不同。如果特征重要性在1-10的范围内确实是相对的,那么当我将特征数量从n / 3改为n时,它真的可以增加/从0.36增加到0.81是否有意义?那么,如果我正在尝试确定最具解释性的变量,那么max_features应该是什么,因为我得到了非常好的r-square,包括n / 3和n。我无法弄清楚我错过了什么。enter image description here请建议如何继续。非常感谢你。

1 个答案:

答案 0 :(得分:0)

是。

第一种情况:

假设有两个功能feat1feat2为模型提供相同类型的信息。现在,如果两者都存在于数据中,并且模型首先选择一个,feat1的重要性将会很大。现在,该模型分析了第二个特征feat2,并得出结论,它没有提供比feat1已经提供的任何显着的知识增长。因此feat2的重要性相对较小。

第二种情况:

您已将max_features更改为n/3,现在不考虑feat1。因此feat2提供的信息现在比以前更大了。因此它的重要性可以显着增加。

请注意,这适用于单个型号。我不知道它如何影响整个整体。也许您将能够获得有关https://stats.stackexchange.com的更多详细信息。