SHAP(沙普利加性解释)
/ shap /
SHAP是一种把单次预测「公平地」拆分给每个输入特征的方法,它借来了博弈论的一道食谱。想象一支队伍赢了奖金,而你得在贡献并不均等的队员之间把它分得公道。来自经济学的「沙普利值」,回答的恰恰是这个问题:它考虑队员加入的每一种可能顺序,再把每个人的边际贡献做平均。SHAP把模型的预测当作那笔奖金,把每个特征当作一名队员。
具体来说,对某一个特定的个案——这位病人、这笔贷款——SHAP会告诉你:相对于某个基准平均值,每个特征把预测往上推、或往下拉了多少。这些值加起来,恰好等于「模型预测」与「那个基准」之间的差额;这正是它被称为「加性」的原因:解释把输出分毫不差地交代清楚,不留一点余数。这使SHAP在「局部解释」(为何是这一个决定?)和——经汇总后——「全局解释」(模型总体上倚重什么?)上都很受欢迎。
SHAP的魅力在于:它立足于扎实的理论,给出前后一致、可加的答案,不像那些临时拼凑的方法。它诚实的局限是:精确计算的代价随特征数指数级飙升,所以真实工具用的都是近似,而近似的好坏参差不齐。它假定你能「合理地」移除某个特征,可一旦特征彼此相关,这一假定就吃紧。还有——最要命的一条——SHAP解释的是「模型做了什么」,而非「模型对不对」、也非「某个特征是否真的导致了结果」。给一个有偏见的模型画出一张自信满满的SHAP图,不过是把那份偏见解释得漂漂亮亮罢了。
一个模型预测某位客户流失的概率为0.78。而数据集的基准流失率是0.30。SHAP把这0.48的差额拆开:「近期的客服投诉」贡献了+0.25,「按月签的合约」贡献了+0.18,「在网时长很久」则减去了−0.05……每个特征的贡献加总,恰好回到0.78这个预测。
SHAP的「加性」:每个特征一推一拉,加总起来恰好等于那个预测。
一个微妙的陷阱:当特征彼此相关时,SHAP可能把重要性归给一个「模型技术上用到、但真正信号其实由另一个几乎一模一样的特征承载」的特征;而用作基准的不同「背景数据集」,还会改变这些值。SHAP那份数学上的整洁,容易诱你过度信任它;把它当作一个审慎的假设,而非一份证明。