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

时间:2017-11-04 01:13:36

标签: python machine-learning scikit-learn decision-tree xgboost

通常情况下,利益相关者并不想要一个擅长预测的黑匣子模型;他们希望深入了解功能,以便更好地了解他们的业务,因此他们可以向其他人解释。

当我们检查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()

feature_importance

更新 我正在寻找的是一个程序化程序证据,证明上述模型选择的特征对预测能力有正面或负面影响。我想看看代码(非理论)你将如何检查实际模型并确定每个特征的正面或负面贡献。目前,我认为这是不可能的,所以有人请证明我错了。我喜欢错了!

我也理解决策树是非参数的,没有系数。仍然有一种方法可以看出一个特征是否有积极贡献(该特征的一个单位增加y)或负面(该特征的一个单位减少y)。

UPDATE2: 尽管对这个问题大加赞赏,还有几个关闭"关闭"投票,看来这个问题毕竟不是那么疯狂。 Partial dependence plots可能就是答案。

  

部分依赖图(PDP)由Friedman(2001)引入   解释复杂机器学习算法的目的。   解释线性回归模型并不复杂   解释支持向量机,随机森林或梯度   Boosting Machine模型,这是Partial Dependence Plot可以来的   投入使用。对于一些统计解释,您可以在这里参考和更多   预先。一些算法具有查找变量的方法   重要但他们并不表示变通是否强烈或   负面影响模型。

3 个答案:

答案 0 :(得分:1)

功能的“重要性”取决于您用于构建树的算法。例如,在C4.5树中,经常使用最大熵标准。这意味着功能集允许使用较少的决策步骤进行分类。

答案 1 :(得分:1)

  

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

是的,我们这样做。特征重要性不是一些神奇的对象,它是一个明确定义的数学标准 - 它的确切定义取决于特定的模型(和/或一些其他选择),但它始终是一个告诉"为什么"的对象。 "为什么"通常是最基本的东西,归结为"因为它具有最强的预测能力"。例如,对于随机森林特征,重要性是当在树中推送随机选择的训练数据点时,在决策路径上使用该特征的可能性的度量。所以它给出了"为什么"在适当的数学意义上。

答案 2 :(得分:1)

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

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

  1. 预测能力显着的哪些功能有助于预测
  2. 特征依赖:正面或负面的特征 相关的,即,特征X的变化是否导致预测y增加/减少
  3. <强> 1。预测能力

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

    <强> 2。相关性/相关性

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

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

    你会看到它在每一步计算弱学习者“方向”的向量,所以你原则上知道它的影响方向(但要记住它可能会在一棵树上多次出现) ,在添加剂模型的多个步骤中。)

    但是,要切入追逐;您可以修复除f19之外的所有功能,并对一系列f19值进行预测,并查看它与响应值的关系。

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

    统计学习要素,第10.13.2章中也有一章。