3. ADMET数据集划分策略

在ADMET模型验证中,数据集划分策略往往比模型算法本身更能决定评估结论的可信度。同一个分子集合、同一套特征和同一个算法,仅因划分方式不同,测试集上的AUC可能相差0.1以上,适用域的形状也会完全不同。原因在于:ADMET数据本质上是“分子结构—性质”的映射,分子之间存在骨架、官能团、理化环境上的相似性。如果划分时让相似分子同时出现在训练集和测试集,模型只需“记住”相似结构就能取得高分,这种分数无法反映它对全新化学空间的预测能力。

本节围绕四种主流划分策略展开:随机划分、骨架划分、时间划分和聚类划分。理解它们的核心,是理解“划分单元”和“相似性泄漏”这两个概念。随机划分以单个分子为单元;骨架划分以Murcko骨架为单元;时间划分以时间戳为单元;聚类划分以相似性簇为单元。划分单元越粗,训练集与测试集之间的结构重叠越少,评估越严格,但测试集分布也可能偏离真实应用场景。

四种划分策略的划分单元与相似性泄漏程度 随机划分 划分单元:单个分子 相似分子易同时落入训练/测试 泄漏风险:高 骨架划分 划分单元:Murcko骨架 泄漏风险:低(同骨架不跨集) 时间划分 划分单元:时间戳 早期 近期 训练 验证 测试 模拟“用过去预测未来” 泄漏风险:低(时间不可逆) 聚类划分 划分单元:相似性簇 簇A 簇B 簇C 簇D 泄漏风险:低(整簇不拆分) 划分策略对验证结果的影响对比 策略 测试集AUC(示例) 适用域覆盖 典型适用场景 随机划分 0.85~0.92(偏高) 与训练域高度重叠 同系列化合物快速筛选 骨架划分 0.72~0.82(偏低) 覆盖新骨架,域外比例高 评估全新化学空间泛化 时间划分 0.75~0.85(中等) 反映数据分布漂移 前瞻性预测、真实部署 聚类划分 0.70~0.80(偏低) 域外样本比例可控 平衡泛化与统计稳定性

随机划分是最常见的做法:用train_test_split或类似函数按比例抽取,例如80%训练、10%验证、10%测试。它的优点是实现简单、类别分布容易保持,适合数据量小、分子多样性高的场景。但它的致命弱点是相似性泄漏。假设数据集中有200个他汀类分子,随机划分后训练集和测试集都会包含他汀类骨架,模型在测试集上表现优异,却可能对全新的杂环骨架完全失效。因此,随机划分的AUC通常最高,但最不可信。

骨架划分以Murcko骨架为分组单位。Murcko骨架是把分子中的侧链全部去掉后保留的环系与连接子。实现时先用RDKit计算每个分子的骨架SMILES,再按骨架分组,确保同一骨架的所有分子只出现在一个子集中。例如:

from rdkit import Chem
from rdkit.Chem.Scaffolds import MurckoScaffold
from sklearn.model_selection import GroupShuffleSplit

scaffolds = [MurckoScaffold.MurckoScaffoldSmiles(
    mol=Chem.MolFromSmiles(smi)) for smi in smiles_list]

gss = GroupShuffleSplit(n_splits=1, test_size=0.2, random_state=42)
train_idx, test_idx = next(gss.split(smiles_list, groups=scaffolds))

骨架划分的测试集AUC通常比随机划分低0.08~0.15,这个下降不是模型变差了,而是评估变诚实了。它回答的问题是:“模型能否预测训练集中从未出现过的骨架?”如果你的应用场景是虚拟筛选全新化合物库,骨架划分才是正确的验证方式。

时间划分按数据的时间戳排序,用早期数据训练、近期数据测试。ADMET数据常来自不同年份的文献或内部实验批次,时间划分能模拟真实部署中的分布漂移。例如,用2015—2020年的化合物训练,用2021—2023年的化合物测试。如果测试AUC明显低于随机划分,说明数据分布随时间发生了漂移,模型需要定期重训。时间划分的前提是数据带有可靠的时间字段,且时间跨度足够大。

聚类划分先用分子指纹(如Morgan指纹)计算相似性,再用Butina或KMeans聚类,把整个簇分到同一子集。这样既避免了相似性泄漏,又能控制训练集和测试集的化学多样性。聚类划分的关键参数是相似性阈值或簇数量:阈值过高会导致簇过多、测试集过小;阈值过低会导致簇过大、测试集多样性不足。常用Tanimoto阈值0.6~0.7作为聚类切割点。

选择划分策略的判断依据:若目标是“同系列内插值预测”,用随机划分;若目标是“新骨架外推”,用骨架划分;若目标是“前瞻性部署”,用时间划分;若数据存在明显化合物系列聚集,用聚类划分。实际验证中建议至少同时报告随机划分和骨架划分两组结果,让读者看到性能差距。

四种策略对适用域评估的影响同样显著。随机划分下,测试集几乎全部落在训练域内,适用域覆盖率接近100%,无法暴露域外失效问题。骨架划分和聚类划分会主动制造域外样本,适用域覆盖率可能降到60%~80%,此时才能检验适用域判别器是否有效。时间划分则同时引入结构漂移和分布漂移,是检验适用域鲁棒性的最严格场景。

最后需要强调:划分策略没有绝对优劣,只有与目标是否匹配。一个常见的错误是只用随机划分报告高AUC,却在真实筛选中失败。更稳健的做法是采用“双轨验证”:随机划分用于评估模型在同分布下的拟合能力,骨架划分或时间划分用于评估泛化能力,两者结合才能给出可信的ADMET模型验证结论。