经常利益相关者不希望有一个很好的预测黑箱模型;他们希望了解有关功能的深入了解,以便他们能够向其他人解释。确定为什么要素在决策树模型中很重要
当我们检查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()
更新: 我正在寻找的是一个纲领性诉讼证据,该模式选择功能,上面的预测能力贡献无论是正面还是负面的。我希望看到代码(而不是理论)你将如何去检查实际模型并确定每个功能的正面或负面贡献。目前,我认为这是不可能的,所以有人请证明我错了。我很想做错!
我也明白决策树是非参数的,没有系数。还有,有没有办法看到一个特征对某个特征的贡献是正的(这个特征的一个单位是增加y还是负的)(这个特征的一个单位减少y)。
UPDATE2: 尽管大拇指朝下在这个问题上,和几个“关闭”票,看来这个问题不是那么疯狂。 Partial dependence plots可能是答案。
Friedman(2001)介绍了部分相关图(PDP),其中 解释了复杂的机器学习算法。 解释一个线性回归模型并不像解释支持向量机,随机森林或梯度 复杂机器模型,这是Partial Dependence Plot可以来 投入使用。对于一些统计解释,你可以参考这里和更多 Advance。一些算法具有用于找到变量 的重要性的方法,但它们不表示是否变量是肯定或 否定影响模型。
问一个特性对输出变量有什么方向是不合理的吗?例如,假设您正在进行二元分类,并且功能f19是“重要的”。那么假设你检查了f19值的比例,并且看到它的预测比例很高,而不是0,那么你可能会得出结论,它会影响正向输出。但是让我们假设你做了同样的事情,并且注意到它有更高比例的0(零)。在这种情况下,它的影响是重要的,因为它缺少什么,而不是它可以帮助预测的。这就是我所掌握的。 – Jarad
您可以对分类预测做一个部分依赖关系图,因此您可以针对固定的一组特征获得'f19'值与预测值的关系。 “无理要求”在情境特定的情况下是非常具体的,在利益相关者的情况下,我认为你可以看到依赖情节中的一些重要特征,但不会试图解释细节,或者将其作为因果关系的证据。 – jonnybazookatone
我正在选择你的答案,因为它是最具有可操作性和方向性的。谢谢! – Jarad