一、SHAP与ADMET概述:从“黑箱”到“可解释”的第一步

大家好,欢迎来到这门课程。今天咱们先聊个基础问题:为什么要把SHAP和ADMET放在一起讲?

我之前在药企做AI模型落地时,遇到过一件挺尴尬的事——模型预测准确率高达95%,但药化同事死活不信。为什么?因为模型只说“这个分子毒性高”,但说不出“为什么高”。说白了,这就是典型的黑箱困境。你想想看,在药物研发这种“一步错,全盘输”的领域,谁敢信一个说不清理由的模型?

所以,这门课的核心目标就一个:用SHAP这把“手术刀”,把ADMET预测模型的决策过程剖开给你看。

1.1 SHAP:模型解释的“通用语言”

SHAP全称是SHapley Additive exPlanations。名字挺长,但思想很简单——它借鉴了博弈论里的夏普利值(Shapley Value),用来衡量每个特征对最终预测结果的“贡献度”。

它的核心优势有两个:

  • 一致性:特征贡献的排序不会因为模型本身的变化而翻车。我用过LIME,同样一个样本,跑两次结果可能不一样,但SHAP不会。
  • 局部与全局兼顾:既能告诉你“这个分子为什么毒性高”(局部解释),也能告诉你“整个数据集里哪个特征最重要”(全局解释)。
我个人习惯:接到一个新项目,第一件事不是调模型,而是先用SHAP跑一遍基线结果。看一眼特征重要性,心里就有底了——哪些特征可能有问题,哪些特征被忽略了,一目了然。

在实际项目中,SHAP会输出一个SHAP值矩阵,形状跟你输入的特征矩阵一样。每一行代表一个样本,每一列代表一个特征,数值的正负表示该特征对预测结果是“推高”还是“拉低”。

# SHAP输出的基本结构示例
# shape: (n_samples, n_features)
shap_values = explainer.shap_values(X_test)

# 每个样本的预测值 = 基准值 + 所有特征的SHAP值之和
prediction = shap_values[0].sum() + base_value

举个简单的例子:某个分子的logP(脂水分配系数)特征SHAP值为+0.3,意味着这个特征把预测的毒性风险拉高了0.3个单位。你想想看,这种量化信息,比单纯说“logP很重要”有用多了。

1.2 ADMET:药物研发的“生死线”

ADMET是吸收(Absorption)、分布(Distribution)、代谢(Metabolism)、排泄(Excretion)、毒性(Toxicity)五个维度的统称。做药物研发的朋友都知道,候选化合物的ADMET性质,是最终能不能成药的关键。

我见过不少项目,药效数据漂亮得不得了,结果一测ADMET——肝脏毒性超标、半衰期太短、生物利用度只有5%。嗯,只能推倒重来。那叫一个心疼。

ADMET预测的几个常见痛点:

  • 数据不平衡:毒性样本往往很少,模型容易“无视”毒性。
  • 特征维度高:分子描述符动辄上千个,鬼知道哪些有用。
  • 模型可解释性差:药化同事拿着预测报告问“为什么这个分子会高转运”,你只能支支吾吾说“模型算出来的”——这种场景,太尴尬了。

而SHAP,正是解决最后一个痛点的利器。

1.3 课程目标:成为“懂药又懂AI”的人

这门课共30章,我们不聊虚的。每章解决一个具体问题,每章都有代码和可视化落地。

我的建议:不要只看不练。SHAP的可视化没你想象中那么难,但动手跑一遍和只看截图,完全是两回事。

第1章作为开篇,我们把这门课的核心知识体系先梳理清楚。下面这张图,就是整门课的骨架。

课程知识体系框架 输入数据 预测模型 SHAP解释 ADMET预测结果解读 吸收(吸收) 分布 代谢 排泄 毒性 更多 整门课从数据出发,经过模型预测,再由SHAP解释,最终落地到ADMET各属性的解读

从这张图能看明白:整门课的逻辑是数据→模型→SHAP→ADMET应用。我们不只讲SHAP怎么算,更重要的是:SHAP的结论怎么帮药化团队做决策?

1.4 这门课跟其他SHAP教程有什么不同?

老实说,市面上讲SHAP的教程不少,但大多是用鸢尾花数据集、房价数据集举例子。嗯,那些例子对入门可以,但跟你实际工作中的ADMET预测问题——差距太大了。

对比维度 通用SHAP教程 本课程
数据来源 UCI、Kaggle通用数据集 分子描述符、分子图、指纹
预测任务 分类、回归通用任务 ADMET各属性二分类/回归
模型类型 XGBoost、LightGBM等树模型 同上 + GNN + 深度学习模型
SHAP图解读 通用特征重要性 结合ADMET领域知识解读
最终交付物 一张图/一个数字 可落地药物设计建议

你看这个对比就明白了——我不是来教你怎么调包的,我是来教你怎么解决问题的。

1.5 你准备好学习了吗?

再说说我自己的经历。以前做ADMET预测,模型跑完就完事,报告里只写准确率、AUC、F1。直到有一次,我们一个候选化合物在体外实验全部通过,体内实验却因为代谢稳定性差直接毙了。事后复盘,模型其实已经“看穿”了这个问题——某个CYP代谢相关的描述符SHAP值特别高,但当时我们根本没去解读。

从那以后,我就养成了一个习惯:每次模型训练完,第一件事不是看指标,而是跑SHAP分析,看看模型到底“看中”了哪些特征,这些特征有没有药化上的合理性。

注意:SHAP不是万能钥匙。它很好,但它解释的是模型学到的规律,不是物理世界的因果规律。如果模型学歪了(比如训练数据有偏差),SHAP只会忠实地告诉你模型怎么歪的,而不是怎么修正。

总结一下本章重点

好,第1章的内容就这些。记住三个关键点:

  • SHAP是什么:一种基于博弈论的特征贡献度计算方式,核心优势是一致性和可解释性。
  • ADMET为什么重要:药物研发中,ADMET性质决定了化合物能不能真正成为药物。
  • 课程目标:把SHAP这把刀磨快,真正用到ADMET预测的实战场景中去,而不是停留在理论层面。

下章我们开始动真格的——搭建SHAP分析环境,准备好数据和工具。等你准备好了,咱们就开始。