【问题标题】:Does feature importance change with number of max_features selected in a RandomForestRegressor, scikit-learn?特征重要性是否会随着 RandomForestRegressor、scikit-learn 中选择的 max_features 的数量而变化?
【发布时间】:2018-10-08 16:45:54
【问题描述】:

在我的一个项目中,我试图使用 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 应该是什么,因为我在 n/3 和 n 上都得到了非常好的 r-square。我无法弄清楚我错过了什么。请建议如何继续。非常感谢。

【问题讨论】:

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


    【解决方案1】:

    是的。

    第一种情况:

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

    第二种情况:

    您将max_features 更改为n/3 并且不知何故现在不考虑feat1。所以feat2提供的信息现在比以前多。所以它的重要性可以显着增加。

    请注意,这是针对单个模型的。我不知道它如何影响整个乐团。也许您将能够在https://stats.stackexchange.com 上获得更多详细信息。

    【讨论】:

    • 在您的第一个场景中,为什么模型(每棵决策树)每次都先选择feat1,然后再选择feat2?在第二种情况下,是不是没有考虑feat2,而feat1正在解释feat2可以解释的信息?我的问题更多的是“如果这些值随着特征数量的变化而不断发生剧烈变化,那么这些值如何在相对规模上真正体现重要性(假设它们的总和为 1)?”
    • @ThReSholD 平均在最后完成。其次,feature_importance是使用所有样本后计算的,而不是逐个样本。
    猜你喜欢
    • 2018-06-01
    • 2017-11-04
    • 2018-02-24
    • 2018-12-14
    • 2019-02-14
    • 2014-05-22
    • 2013-03-07
    • 2018-09-23
    • 1970-01-01
    相关资源
    最近更新 更多