3. ADMET 关键参数与数据特点

3.1 那些绕不开的核心参数

咱们做 ADMET 预测,说白了就是跟几个关键物理化学参数打交道。这些参数就像是化合物的身份证,每一项都指向它在体内到底会怎么走一遭。

我做了这么多年,见过不少新同事一上来就堆特征,结果模型过拟合得一塌糊涂。其实你抓住下面这几类核心指标,基本就抓住了 80% 的信息量:

参数类别 关键指标 它告诉你什么 我见过的坑
吸收 (A) LogP, LogD, TPSA, Solubility 膜渗透性和水溶性 LogP 不是越大越好,要落在成药区间里
分布 (D) PPB (血浆蛋白结合), Vd (表观分布容积) 药物在体内分布广不广 PPB 太高容易导致药物相互作用
代谢 (M) CYP450 抑制 (特别是 3A4, 2D6), Clearance 药物会不会快速被清除 CYP 抑制搞不好就是黑框警告级别的问题
排泄 (E) 半衰期 (t½), 清除率 (CL) 药物在体内存多久 半衰期太短意味着一天得吃好几次
毒性 (T) hERG 抑制, AMES 致突变性, 肝毒性 会不会引起安全问题 hERG 是导致药物撤市的前三位原因之一

经验之谈: 我个人习惯在项目初期,先盯住 LogD (pH 7.4)、CYP 3A4 抑制、hERG 的 IC50 这三个数。如果这三关过不去,后面的优化基本都会非常难受。

3.2 数据的特点——说白了就是“怪脾气”

ADMET 数据跟常规的生物信息学数据不太一样。你想想看,它既有体外干巴巴的实验数值,又有体内复杂的生理反馈。它的“怪脾气”主要体现在这几个方面:

  1. 高噪声且不完整: 不同实验室、不同批次的检测结果可能差好几倍。缺失值也是家常便饭。
  2. 多源异构: IC50 是一个数,Caco-2 渗透率是一个数,临床副作用是文本描述。怎么把这些不同类型的数字捏在一起,很伤脑筋。
  3. 非线性关系明显: 不是 LogP 越高吸收就越好。往往存在一个“窗口效应”,过高或过低都不行。

避坑指南: 我曾经接手过一批公开数据,其中 LogP 值的分布出现了两个明显的峰。后来一查,发现是数据来自两个不同的实验平台,一个用摇瓶法,一个用 HPLC 法。这就是典型的批次效应,如果不做校正,模型学出来的全是实验方法的差异,而不是真正的分子性质差异。

3.3 批次效应是怎么暗中捣乱的

刚才提到多源异构,批次效应就喜欢在这种混乱中钻空子。它本质上是一种 技术变异,而不是生物学变异。

举个例子,同样的化合物,在 A 实验室测的清除率是 5 mL/min/kg,在 B 实验室可能是 15 mL/min/kg。这种差异不是化合物变了,而是实验条件变了。

我通常会在拿到数据后,先用 PCA 或 t-SNE 对特征做一下聚类,看看样本是不是按实验批次聚在一起。如果是,那就说明批次效应很严重,必须处理。

3.4 一张图讲透关键参数与批次效应

下面这张图,是我自己梳理的 ADMET 关键参数与批次效应影响路径。你可以把它当做本章的一个小地图,搞清楚数据是怎么一步步“变质”的:

ADMET 关键参数与批次效应影响路径 体外 ADMET 体内 PK/PD 临床前毒理 临床报告 多源数据集成 ⚠️ 不同仪器/方法/批次 实验条件差异引入噪声 关键参数值被系统偏移 LogP/清除率/hERG IC50 等失真 模型学习到“批次模式”而非“生物模式” 预测不可靠 泛化能力差

你从这张图可以看到,批次效应就像是一颗“暗雷”,埋在数据集成那一层。它不直接改变化合物的结构,而是把那几个核心参数的值 整体抬升或压低。模型如果只学表面数字,就学不到真正的规律。

3.5 怎么尽早发现批次效应

既然数据这么复杂,怎么判断手头的数据集有没有被污染?我通常会在数据清洗阶段,做几个简单的“体检”:

  • 分布对比: 把不同来源的同一个参数(比如 LogP)画直方图。如果分布形态差异很大,一定有猫腻。
  • 相关性热图: 如果同批样本之间的相关性普遍高于跨批样本,说明批次标签在数据里占了主导。
  • 构建简单分类器: 试试能不能用模型(比如 LightGBM)直接根据特征预测出样本来自哪个批次。如果预测精度很高(比如 AUC > 0.9),那说明批次效应非常严重,不修正的话后面做的所有分析基本都得打问号。

一个提升模型稳健性的小技巧: 我个人习惯在训练集里显式地将 Batch_ID 作为一个特征丢进去,或者用 Leave-One-Batch-Out 的交叉验证方式。这么做能帮你直观感受模型到底能不能抗住批次的变化。

3.6 关于数据标准化的警告

有时候我们会在数据预处理阶段,用 StandardScaler 或 MinMaxScaler 对参数进行标准化。这里有个很多人会踩的坑:

  • 错误做法: 对所有批次的同一个参数,用一个统一的均值和方差去做标准化。这样批次之间的偏移依然存在,只是被压缩了,并没有消除。
  • 正确思路: 如果检测到批次效应,需要先进行校正(比如使用 ComBat 或基于回归的方法),让数据分布对齐之后,再做下游建模。

记住一句话:批次效应是所有 ADMET 建模里必须优先解决的“房间里的大象”。你可以有最酷的模型结构,但如果喂进去的数据是脏的,结果一定是一团乱麻。