首页 文章

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

提问于
浏览
6

通常情况下,利益相关者不希望使用擅长预测的黑盒模型;他们希望深入了解功能,以便更好地了解他们的业务,因此他们可以向其他人解释 .

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

Is there a way to explain not only what features are important but also WHY they're important?

我被告知要使用shap但是运行甚至一些样板示例都会引发错误,所以我正在寻找替代方案(甚至只是一种程序性的方法来检查树木和收集的洞察力,除了 plot_importance() 情节之外我可以带走) .

在下面的示例中,如何解释WHY功能 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

Update: 我正在寻找的是一个程序证据,证明上述模型选择的特征对预测能力有正面或负面影响 . 我想看看 code (不是理论)你将如何检查实际模型并确定每个特征's positive or negative contribution. Currently, I maintain that it' s是不可能的,所以有人请证明我错了 . 我爱是错的!

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

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

Friedman(2001)引入了部分依赖图(PDP),目的是解释复杂的机器学习算法 . 解释线性回归模型并不像解释支持向量机,随机森林或梯度增强机模型那么复杂,这是部分依赖性图可以使用 . 对于一些统计解释,您可以在这里参考和更多进展 . 一些算法具有用于找到变量重要性的方法,但是它们不表示变量是否对模型产生正面或负面影响 .

3 回答

  • 1

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


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

    • 预测能力:哪些特征对预测有显着贡献

    • 特征依赖性:特征正或负相关,即特征X的变化是否导致预测y增加/减少

    1. Predictive power

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

    2. Correlation/Dependence

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

    在回归问题中,树通常使用与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章中也有一章 .

  • 1

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

  • 1

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

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

相关问题