假设你是一名医生,正在使用一款AI工具,该工具显示某位患者有78%的概率患上糖尿病,但当你问它原因时,工具却无法说出个所以然来,我们肯定不会相信这个AI工具给出的结果。

在医疗领域,仅靠准确性是不够的,无论你是医生、研究人员还是患者,都需要了解预测背后的原因,尤其是当它影响治疗、诊断或医疗服务的获取时。

这时,SHAP就派上用场了,SHAP(SHapley Additive exPlanations)帮助我们洞察机器学习模型的“黑箱”,看清其内部运作。

它展示了哪些特征(如BMI、年龄或血压)在驱动模型的决策,以及每个特征的贡献程度。

本文将通过一个真实的医疗案例,展示如何使用SHAP来解释预测糖尿病风险的模型。

包含:

  • 全局特征重要性——模型用于预测的主要因素

  • 特征效应——每个特征如何影响风险,以及特征之间的相互作用

  • 个体预测——模型如何解释为何给特定的人打高(或低)风险分

本文的目标是展示SHAP如何增进理解、信任和透明度——在AI与医疗相遇的今天,这比以往任何时候都更为重要。

什么是SHAP,为何要关注它?

大多数机器学习模型就像黑箱,你输入数据(如患者的年龄、体重和血压),它输出结果(如风险评分),但它很少解释得出结论的过程。

SHAP值(SHapley Additive exPlanations的缩写)解决了这一问题,它们精确展示了每个特征对每个个体预测的贡献程度。

可以把这想象成分配小组作业的功劳,想象五个人合作完成了一个项目,得了A。

SHAP可以算出每个人做了多少工作——谁提高了成绩,谁没帮忙,谁甚至拖了后腿。

现在把这个思路应用到AI模型上:SHAP展示了哪些特征(如BMI、年龄或高胆固醇)将预测推向了“是的,这个人有患糖尿病的风险”。

例如:

  • 如果患者的BMI非常高,这可能会将预测推向“糖尿病”。

  • 如果他们年轻且经常运动,这些因素可能会拉低预测值。

SHAP不仅对一个人这样做——它对每个预测都这样做,还能展示模型总体上学到了什么。

这就是SHAP的强大之处:即使模型很复杂,它也能帮助你理解模型的“思考”过程。

另外我们精心打磨了一套基于数据与模型方法的AI科研入门学习方案(已经迭代第6次),对于人工智能来说,任何专业,要处理的都只是实验数据,所以我们根据实验数据将课程分为了三种方向的针对性课程,包含时序、影像、AI+实验室,我们会根据你的数据类型来帮助你选择合适的实验室,根据规划好的路线学习 只需3-5个月左右(很多同学通过学习已经发表了 sci 一区及以下、和同等级别的会议论文)学习形式为直播+录播,多位老师为你的论文保驾护航。

适合人群:

  • 导师放养,自学无头绪

  • 时间紧任务重有延毕风险

  • 想提前完成大小论文为之后读博或工作做准备的

  • 想通过发表sci论文、提升科研能力bao研、考研的本科同学

文章中所有的数据和资料,可添加小助手无偿分享~
扫码添加小助手即可无偿获取~

也可以关注“AI技术星球”公众号,关注后回复“221C”获取。

数据与模型

在这个项目中,使用了名为“糖尿病健康指标数据集”

(https://www.kaggle.com/datasets/alexteboul/diabetes-health-indicators-dataset/data)的公开数据集。

它包含了数千人的健康调查信息,如年龄、BMI、身体活动、总体健康状况以及是否患有糖尿病。

为了构建模型,使用了XGBoost,这是一种在结构化数据上表现优异的流行机器学习算法。

选择XGBoost的原因之一是它与SHAP无缝协作,使我们能够清晰高效地解释预测。

model = xgb.XGBClassifier(
    n_estimators=100,100,
    max_depth=4,
    learning_rate=0.1,
    use_label_encoder=False,
    eval_metric='logloss',
    random_state=42
)

model.fit(X_train, y_train)

在医疗领域,可解释性至关重要,医生和患者不仅需要预测结果——他们还需要理解模型为何做出这样的预测,这就是没有在这里使用复杂的深度学习模型的原因,相反专注于强大且可解释的模型。

接下来,我们将使用SHAP来探索模型学到了什么——以及它是如何做出决策的。

模型最依赖哪些特征?

训练完模型后,下一个重要问题是:

“模型在做出预测时关注哪些因素?”

SHAP通过展示全局特征重要性轻松回答了这个问题——换句话说,模型在所有患者中使用的最多的特征。

让我们看两个简单的可视化图表。

SHAP汇总图(蜂群图)

这个图表初看可能很复杂,但一旦知道如何解读,其实非常直观。

解读方法:

  • 每一行代表一个特征(如BMI、年龄等)。

  • 每个点代表一个患者。

  • 颜色表示该特征的实际值(红色=高,蓝色=低)。

  • x轴上的位置表示该特征将模型的预测值提高了还是降低了。

关键发现:

  • GenHlth(自我报告的总体健康状况)是最重要的特征。健康状况较差(红色)会强烈推动预测结果趋向糖尿病。图上的点分布广泛,表明排列重要性较高。

  • HighBP(高血压):高血压(红色)持续增加预测的糖尿病风险,而低血压(蓝色)则降低风险。

  • Age(年龄):年龄较大的人(红色)更有可能被预测为糖尿病患者。中间区域的聚集表明可能与其他特征存在相互作用。

  • BMI(体重指数):BMI越高,预测风险越大,尤其是在BMI为25-40之间。中间范围的重叠表明与其他特征存在相互作用。

  • Heart Disease or Attack(心脏病或发作):大多数患者的SHAP值较低,但少数心脏病患者(粉色点)的风险明显更高。这与临床现实相符:心脏病虽然罕见,但影响重大。

  • Stroke(中风):与心脏病类似:受影响的患者较少,但受影响的患者糖尿病风险急剧增加,反映在较高的SHAP值上。

SHAP条形图

这个条形图更简洁地总结了同样的观点:它根据特征对模型的平均贡献程度对特征进行排名。

从两个图表中,我们了解到最重要的特征是:

  • 总体健康状况——患者如何评价自己的健康

  • 高血压

  • 年龄

  • BMI

  • 高胆固醇

这些都是众所周知的糖尿病风险因素,模型优先考虑这些因素使其更值得信赖,尤其是在医疗领域,我们希望模型能像临床医生一样“思考”。

为什么这很重要

这些图表让我们从宏观上了解模型在做什么,它们有助于回答:

  • “模型是否使用了正确的特征?”

  • “它是否与医生对糖尿病的了解相符?”

  • “我们能信任它的决策方式吗?”

到目前为止,答案似乎是肯定的。

特征如何影响风险?

现在我们知道模型依赖哪些特征了,让我们深入探讨每个特征如何影响预测。

这正是SHAP的用武之地,它不仅告诉你哪些特征重要——还告诉你它们如何重要。

这些散点图(称为依赖图)展示了随着特征值的上升或下降会发生什么。

让我们看几个重要的例子。

BMI:风险上升最显著的因素

随着BMI的增加,模型预测的糖尿病风险上升——但并非呈直线上升。

BMI在25到40之间时,风险急剧上升,然后对于极高的BMI,风险趋于平稳。

这反映了我们在临床环境中经常看到的情况:超重会增加糖尿病风险,但这种影响在极高的BMI时趋于平缓。

我们还用年龄对点进行了颜色编码,你可以看到,即使BMI相同,年龄较大的人(粉色点)的SHAP值往往更高,这表明BMI和年龄之间存在相互作用。

对于年龄较大的人来说,高BMI可能比年轻人更危险。

年龄:风险增加,与体重无关

随着年龄的增长,预测的糖尿病风险单调增加——即持续上升,没有下降。

这是意料之中的:年龄是已知的风险因素。

有趣的是,这种模式在各种BMI水平上都存在,即使BMI较低的人(蓝色点),随着年龄的增长,风险也会上升。

换句话说,年龄是一个强大的独立预测因素——无论体重如何,模型都将其视为重要因素。

心脏病:危险信号

这个特征更简单——它是一个是/否(二元)特征,很明显:曾心脏病发作或患有心脏病的人预测的糖尿病风险要高得多。

虽然这些事件在数据集中相对罕见(这就是为什么大多数点的SHAP值较低),但少数心脏病患者脱颖而出——模型给他们的SHAP值很高。

这与我们对长期健康的看法一致:如果一个人有心血管问题,他们患糖尿病等代谢疾病的风险也更高。

为什么这很重要

这些图表帮助我们理解模型如何使用特征,而不仅仅是哪些特征重要。我们可以发现与医学知识相符的模式、阈值和相互作用(有时甚至能学到新东西)。

例如:

  • BMI和年龄不仅各自重要——它们还以有趣的方式相互作用。

  • 一个反映现实世界风险因素的模型更容易让医生和患者信任和理解其预测。

为什么模型会做出这样的预测?

用SHAP解释个体预测
到目前为止,我们已经了解了SHAP如何解释模型的整体行为——它学到了什么,使用了哪些特征,以及这些特征如何影响预测。

接下来让我们问模型:

“你为什么预测这个人有患糖尿病的风险?”

这时,SHAP力图和瀑布图就派上用场了。

什么是SHAP力图?

力图就像特征之间的拔河比赛。
它展示了:

  • 基础值:模型在看到任何特征之前的平均输出。

  • 最终预测:模型根据这个人的数据改变了多少想法。

  • 红色箭头:增加风险的特征。

  • 蓝色箭头:降低风险的特征。

示例1:中度糖尿病风险预测

让我们看一个被预测患有糖尿病的人。
如何解读他的力图:

基础值 = -1.718,模型在看到任何特征之前的平均输出(对数几率),这代表了一个基本的低风险。

模型输出(f(x))= 0.22。这个患者的最终预测对数几率,高于基础值,这意味着与普通人相比他们的风险增加,概率为55%。

🔴 增加风险的特征(红色箭头):

  • HighChol = 1 → 胆固醇高

  • HighBP = 1 → 血压高

  • GenHlth = 4 → 自我评价总体健康状况较差

  • BMI = 46 → 极高的BMI

🔵 降低风险的特征(蓝色箭头):

  • Age = 5 → 年龄较小(可能是40多岁)

  • Income = 7 → 收入较高,通常与更好的医疗服务获取相关

要点:
尽管这个人相对年轻且富裕,但模型预测他们患糖尿病的风险为中到高,主要是由于总体健康状况极差和BMI极高。

示例2:相似但风险更高的患者

接下来,选择了一个与上一个人有一些相同“不良”特征(高BMI、健康状况差)但情况更糟的患者,这次模型的预测值更高。

模型输出(f(x))= 0.88,这个患者的最终预测对数几率,高于基础值和上一个患者,概率为70%。

在他们的力图中:

  • 红色箭头更长——尤其是BMI和GenHlth

  • 蓝色箭头更少或更小

这个对比展示了SHAP如何帮助我们理解两个相似患者之间的差异,以及是什么将一个预测推得比另一个更高。

瀑布图呢?

SHAP水fall图以逐步叠加的格式展示了与力图相同的观点。

如何解读:

  • 图表从基础值开始。

  • 每个条形展示一个特征如何将预测值提高或降低。

  • 最后一个条形给出模型的输出(预测)。

为什么这很重要

有了SHAP,我们得到的不仅仅是一个数字——我们得到了数字背后的故事。

医生可以看到哪些症状或风险因素促使AI做出了决定,患者可以得到更透明、更易理解的结果,数据科学家可以在最重要的时刻调试或辩护预测。

这种透明度建立了信任、问责制和洞察力,这在医疗AI中至关重要。

为什么SHAP很重要(尤其是在医疗领域)

在医疗领域,决策可能关乎生死,这就是为什么理解AI模型如何做出预测如此重要,SHAP帮助所有相关人员:

  • 数据科学家可以调试模型,尽早发现错误或偏差。

  • 医生对AI工具更有信心,因为他们可以看到模型为何做出特定预测。

  • 患者从透明度中受益,使AI驱动的医疗服务不再那么神秘。

黑箱AI模型——那些给出答案却不解释的模型——是有风险的。

如果没有可解释性,我们可能会忽略隐藏的偏差或错误的推理,从而对患者造成伤害。

SHAP就像一座桥梁,将AI的复杂计算与医生和患者能够理解的现实决策连接起来。

另外我们精心打磨了一套基于数据与模型方法的AI科研入门学习方案(已经迭代第6次),对于人工智能来说,任何专业,要处理的都只是实验数据,所以我们根据实验数据将课程分为了三种方向的针对性课程,包含时序、影像、AI+实验室,我们会根据你的数据类型来帮助你选择合适的实验室,根据规划好的路线学习 只需3-5个月左右(很多同学通过学习已经发表了 sci 一区及以下、和同等级别的会议论文)学习形式为直播+录播,多位老师为你的论文保驾护航。

适合人群:

  • 导师放养,自学无头绪

  • 时间紧任务重有延毕风险

  • 想提前完成大小论文为之后读博或工作做准备的

  • 想通过发表sci论文、提升科研能力bao研、考研的本科同学

文章中所有的数据和资料,可添加小助手无偿分享~
扫码添加小助手即可无偿获取~

也可以关注“AI技术星球”公众号,关注后回复“221C”获取。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐