电子说
解释产生特定NBA球员预测薪水的特征(github)
我最喜欢的库之一是SHAP,它是解释机器学习模型生成的输出不可或缺的工具。 SHAP是几种不同的当前解释模型的顶点,并且通过为每个特征分配重要性值来表示用于解释模型预测的统一框架。反过来,可以绘制这些重要性值,并用于产生任何人都可以轻易解释的漂亮可视化。在您阅读时,您会注意到主题是可解释性,以及为什么它在机器学习中如此迫切。
在本文中,我提供了一个外行人对其作者Scott Lundberg和Su-In Lee的原始论文的评论
目的
线性模型易于解释。 考虑用于预测NBA球员薪水的经典线性回归模型(假设薪水完全基于每场比赛得分):
我们简单地将其解释为β1,即X对Y单位增加的平均影响。换句话说,如果凯文杜兰特得到27.5分,那么我们所要做的就是乘以β1来预测他的薪水。 使用线性模型,很明显模型如何达到预测。
但是神经网络呢,那里有重复的矩阵乘法和激活函数? 我们如何在输出的上下文中解释这一点?
随着我们转向更复杂的模型,具有更高的准确性,我们发现越来越难以解释这些模型如何产生预测。 由于以下几个原因,这是一个岌岌可危的困境:
· 模型偏差是一个重要问题,因为它们最终可能会对决策产生不公平的影响。 一些数据存在内在偏差,特别是在涉及种族和性别偏见时,这会对模型的预测产生负面影响。 由于没有好的方法来解释模型如何做出决定,因此很难确定这些固有的偏见。
· 模型改进也很困难如果您不知道要改进什么。当然,您可以调整超参数,直到获得最佳分数,但您拥有的数据类型更为重要。了解模型中不同特征的价值可为数据收集提供有价值的反馈,告知我们哪些类型的数据最重要.
· 用户信任对于采用人工智能系统非常重要。 在人工智能治理中心最近的一份报告中,作者报告说:"有更多的美国人认为高级机器智能会比那些认为对人类有益的人有害。"复杂模型的可解释性有助于 更好的理解,建立模型如何做出决策的直觉,并最终产生用户信任。
添加功能归因方法
为了解释更复杂的模型,我们需要一个更接近原始模型的简单解释模型。
假设我们有一个形式为f(x)的复杂模型,那么解释模型g(z')≈f(x)。
稍微分解g(z'),我们将一些效应φᵢ归因于每个特征z'。 通过总结所有这些效果及其特征,我们可以近似原始模型的输出。 这被定义为附加特征归属方法。 事实证明,其他当前的解释模型遵循相同的解释模型,允许它们全部统一到一个单一的框架中。
附加特征归属方法的属性
1. 局部精度:最重要的属性之一是解释模型能够匹配原始模型的输出。
2. 缺失:如果缺少特征,则该特征没有效果,或φᵢ= 0。
3. 一致性:如果模型发生变化,使得特征贡献增加或保持不变,那么特征属性或φᵢ不应减少。
这导致我们SHAP值,它统一了以前的方法,并展示了上述属性。
SHAP值
SHAP值(φᵢ)用于描述特征的重要性。 请考虑以下图表:
f(x)是模型预测的输出,E[f(z)]是如果没有特征则预测的基值。 换句话说,E[f(z)]只是平均模型输出。
当我们包括一个特征x 1,然后φ1,解释我们如何从基值到新的预测值,现在由E [f(z)|给出。 z 1 = x 1]。 对剩余的变量x 1,x 2,x 3重复这个过程,估计φ1,φ2和φ3的SHAP值,显示模型最终如何到达预测输出f(x)。
不同口味的SHAP(different favours of SHAP)
SHAP有多种实现方式,每种方式都适用于特定的模型类型,可以实现更快的逼近。
· TreeExplainer
TreeExplainer专为树集合方法开发,如XGBoost,LightGBM或CatBoost。
· DeepExplainer
DeepExplainer是为深度学习模型开发的,支持TensorFlow / Keras。
· GradientExplainer
GradientExplainer也是为深度学习模型中的SHAP值而开发的,但速度比DeepExplainer慢,并且做出了不同的假设。 此方法基于Integrated Gradient归因方法,并支持TensorFlow / Keras / PyTorch。
· KernelExplainer
KernelExplainer使用加权线性回归近似任何类型模型的SHAP值。
使用特定于模型类型的算法(TreeExplainer,DeepExplainer)而不是通用KernelExplainer更快更有效。
总结
作者发现人类解释和SHAP解释之间的关联比任何其他方法更强,这表明了SHAP的强大和直观性。 计算出的SHAP值很容易在美观,简单的图中显示,这些图解释了特征如何影响特定预测。 这使得SHAP成为一个令人信服的工具,可以自信地解释和解释任何模型。
有关如何实现SHAP的教程,请查看我的笔记本,看看我们如何解释渐变提升树的预测结果。 SHAP github还提供了很多资源,可以提供有关如何实现DeepExplainer,KernelExplainer和其他有用功能的更多示例。
全部0条评论
快来发表一下你的评论吧 !