2017-11-04 127 views
2

经常利益相关者不希望有一个很好的预测黑箱模型;他们希望了解有关功能的深入了解,以便他们能够向其他人解释。确定为什么要素在决策树模型中很重要

当我们检查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可能是答案。

Friedman(2001)介绍了部分相关图(PDP),其中 解释了复杂的机器学习算法。 解释一个线性回归模型并不像解释支持向量机,随机森林或梯度 复杂机器模型,这是Partial Dependence Plot可以来 投入使用。对于一些统计解释,你可以参考这里和更多 Advance。一些算法具有用于找到变量 的重要性的方法,但它们不表示是否变量是肯定否定影响模型。

回答

1

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


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

  1. 预测功率:什么功能显著向预测
  2. 特性依赖:是本特征正电或负 相关,即,是否在特征X的变化引起的预测块y增大/减小

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章元素上的一章。

+0

问一个特性对输出变量有什么方向是不合理的吗?例如,假设您正在进行二元分类,并且功能f19是“重要的”。那么假设你检查了f19值的比例,并且看到它的预测比例很高,而不是0,那么你可能会得出结论,它会影响正向输出。但是让我们假设你做了同样的事情,并且注意到它有更高比例的0(零)。在这种情况下,它的影响是重要的,因为它缺少什么,而不是它可以帮助预测的。这就是我所掌握的。 – Jarad

+0

您可以对分类预测做一个部分依赖关系图,因此您可以针对固定的一组特征获得'f19'值与预测值的关系。 “无理要求”在情境特定的情况下是非常具体的,在利益相关者的情况下,我认为你可以看到依赖情节中的一些重要特征,但不会试图解释细节,或者将其作为因果关系的证据。 – jonnybazookatone

+0

我正在选择你的答案,因为它是最具有可操作性和方向性的。谢谢! – Jarad

1

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

1

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

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

+0

但我想说更多的线性回归。在线性回归中,我们得到系数。一些系数对y变量有正影响(正系数),有些则负(负系数)。在决策树中,我们可以确定一个特征对其预测性的正面或负面贡献吗?如果是这样,一个例子将会有很长的路要走 - 如何判断一个特征的正面或负面贡献。 – Jarad

+0

以编程方式,从上面的示例中,您将如何检查模型以显示f19是正面还是负面贡献? – Jarad

+0

“积极的影响”不是一个有效的概念,它只适用于平凡的模型 - 更精确的线性模型。任何更复杂的事物,如果x> 10和x <20“都可以推导出规则,例如”1类“,这个概念就没有用处,因为”x“不是”正面“或”负面“影响。问题在于概念,而不是模型。你可以尝试把它与P(x)联系起来,看看有多少概率质量落入这些区间,但是这需要根据分类规则设置不同的分类规则,这是不可行的 – lejlot

相关问题