确定为什么特征在决策树模型中很重要

Determine WHY Features Are Important in Decision Tree Models

利益相关者通常不想要擅长预测的黑盒模型;他们希望深入了解功能,以便更好地了解他们的业务,这样他们就可以向其他人解释。

当我们检查 xgboost 或 sklearn 梯度提升模型的特征重要性时,我们可以确定特征重要性...但是我们不明白为什么这些特征很重要,对吧?

有没有办法不仅可以解释哪些功能很重要,还可以解释为什么它们很重要?

我被告知使用 shap 但 运行 即使是一些样板示例也会抛出错误,所以我正在寻找替代方案(或者甚至只是一种检查树木和收集见解的程序方法我可以带走 plot_importance() 地块以外的东西)。

在下面的示例中,如何解释为什么特征 f19 是最重要的(同时还意识到决策树是随机的,没有 random_state 或种子)。

from xgboost import XGBClassifier, plot_importance
from sklearn.datasets import make_classification
import matplotlib.pyplot as plt
X,y = make_classification(random_state=68)
xgb = XGBClassifier()
xgb.fit(X, y)
plot_importance(xgb)
plt.show()

更新: 我正在寻找的是 程序化 程序证明,证明上述模型选择的特征对预测能力有积极或消极的贡献。我想查看 code(不是理论),了解您将如何检查实际模型并确定每个特征的积极或消极贡献。目前,我认为这是不可能的,所以请有人证明我错了。我宁愿错了!

我也明白决策树是非参数的,没有系数。不过,有没有一种方法可以查看某个特征是积极贡献(该特征的一个单位增加 y)还是消极​​贡献(该特征的一个单位减少 y)。

更新2: 尽管对这个问题表示反对,并且投了 "close" 票,但这个问题似乎并没有那么疯狂。 Partial dependence plots 可能就是答案。

Partial Dependence Plots (PDP) were introduced by Friedman (2001) with purpose of interpreting complex Machine Learning algorithms. Interpreting a linear regression model is not as complicated as interpreting Support Vector Machine, Random Forest or Gradient Boosting Machine models, this is were Partial Dependence Plot can come into use. For some statistical explaination you can refer hereand More Advance. Some of the algorithms have methods for finding variable importance but they do not express whether a varaible is positively or negatively affecting the model .

特征的 "importance" 取决于您用来构建树的算法。例如,在 C4.5 树中,经常使用最大熵标准。这意味着特征集是允许以更少的决策步骤进行分类的特征集。

When we inspect the feature importance of an xgboost or sklearn gradient boosting model, we can determine the feature importance... but we don't understand WHY the features are important, do we?

是的,我们有。特征重要性不是什么神奇的对象,它是一个定义明确的数学标准——它的确切定义取决于特定的模型(and/or 一些额外的选择),但它总是一个告诉 "why" 的对象。 "why" 通常是最基本的东西,归结为 "because it has the strongest predictive power"。例如,对于随机森林,特征重要性是衡量当随机选择的训练数据点被推过树时,该特征在决策路径上使用的可能性有多大。所以它在适当的数学意义上给出 "why" 。

tldr; http://scikit-learn.org/stable/auto_examples/ensemble/plot_partial_dependence.html


我想澄清一些措辞以确保我们在同一页上。

  1. 预测能力:哪些特征显着有助于预测
  2. 特征依赖: 特征是积极的还是消极的 相关,即特征 X 的变化是否导致预测 y 变为 increase/decrease

1.预测能力

您的特征重要性向您展示了哪些特征保留了最多的信息,并且是最 重要 的特征。功率可能意味着导致最大变化的原因 - 您必须通过插入虚拟值来检查它们的整体影响,就像您必须处理线性回归系数一样。

2。 Correlation/Dependence

正如@Tiago1984 所指出的,它在很大程度上取决于底层算法。 XGBoost/GBM 正在加法构建一个存根委员会(树数较少的决策树,通常只有一个分裂)。

在回归问题中,树通常使用与 MSE 相关的标准。我不会详述全部细节,但您可以在此处阅读更多内容:https://medium.com/towards-data-science/boosting-algorithm-gbm-97737c63daa3

你会看到它在每一步都为弱学习器的 "direction" 计算一个向量,所以你原则上知道它的影响方向(但请记住它可能看起来很多在一棵树中多次,在加法模型的多个步骤中)。

但是,切入正题;您可以修复除 f19 之外的所有特征,并对 f19 值范围进行预测,并查看它与响应值的关系。

看看部分依赖图http://scikit-learn.org/stable/auto_examples/ensemble/plot_partial_dependence.html

统计学习要素第 10.13.2 章中也有关于它的一章。