【问题标题】:How to know which features have more impact in predicting the target class?如何知道哪些特征对预测目标类影响更大?
【发布时间】:2019-06-22 09:27:42
【问题描述】:

我有一个业务问题,我已经在 python 中运行回归模型来预测我的目标值。当用我的测试集验证它时,我开始知道我的预测变量与我的实际值相差甚远。现在我想从这个模型中提取的是,哪个特征起到了使我的预测值偏离实际值的作用(假设差异在某个阈值中)? 我想明智地对功能影响进行排名,以便我可以向我的客户发表讲话。 谢谢

【问题讨论】:

  • 你使用的回归模型是什么?

标签: python-3.x machine-learning scikit-learn deep-learning


【解决方案1】:

检查随机Forest Regressor - 执行回归。

# Example 
from sklearn.ensemble import RandomForestRegressor
from sklearn.datasets import make_regression
X, y = make_regression(n_features=4, n_informative=2,
                       random_state=0, shuffle=False)
regr = RandomForestRegressor(max_depth=2, random_state=0,
                             n_estimators=100)
regr.fit(X, y)
print(regr.feature_importances_)
print(regr.predict([[0, 0, 0, 0]]))

检查regr.feature_importances_ 以获得更高、更重要的功能。更多信息FeatureImportance

Edit-1:
正如用户 (@blacksite) 评论中所指出的,只有 feature_importance 不提供对随机森林的完整解释。用于进一步分析结果和负责的功能。请参考以下博客

有关 feature_importance 的更多信息:

【讨论】:

  • 这并没有明确告诉你什么对预测任何一个类很重要——特征重要性基本上表明了每个特征在区分两个类方面的重要性,而不是预测一个特定的类。
  • 那么什么技术可以用来知道预测的原因呢?假设在预测中我的目标值是价格,一旦模型预测了价格,它可能是高的或低的。我想知道价格偏低或偏高的原因,简而言之,哪些特征在预测价格偏低或偏高方面发挥了作用。
  • 您可以从 feature_importance 开始 - 它会告诉您价格低是因为这些功能,而价格高是因为一些其他功能。您可以使用treeinterpreter 更深入地了解如何使用决策树/森林完成回归。理想情况下,您需要成为领域专家才能对获得的结果进行因果分析。
【解决方案2】:

这取决于您选择的估计器,线性模型通常有一个 coef_ 方法,您可以调用该方法来获取用于每个特征的 coef,因为它们已经过标准化,这会告诉您您想知道什么。

如上所述,对于树模型,您具有特征重要性。您还可以使用此处描述的 treeinterpreter 之类的库: Interpreting Random Forest

examples

【讨论】:

    【解决方案3】:

    你可以看看这个—— Feature selection

    【讨论】:

      猜你喜欢
      • 2017-06-25
      • 2020-10-18
      • 2018-09-27
      • 2017-04-08
      • 2021-10-15
      • 2022-06-16
      • 1970-01-01
      • 2020-09-04
      • 2016-03-11
      相关资源
      最近更新 更多