第一章 · 1.3

1.3 数据与评估:MoleculeNet 与骨架划分

Benchmarks and Scaffold Splits
模型之间要比较,先要有公共的试金石。本节梳理 MoleculeNet 四组基准数据集的规模、任务类型与标签来源,分析稀疏标签矩阵与权重掩码的处理方式;随后引入 Bemis–Murcko 骨架,比较随机、属性排序与骨架三类划分协议,剖析随机划分虚高的机理,并界定时间划分、双重外推与数据泄漏。

1.3.1 基准数据集:MoleculeNet 全景

机器学习方法的进展靠比较说话。若各课题组各用各的数据、各报各的数字,方法之间便无从比较。基准数据集(benchmark dataset)把样本、任务与指标固定下来,让不同模型在同一块试金石上接受检验。2018 年,Wu 等人发布 MoleculeNet,把散落在文献与公共数据库中的分子性质数据整理成统一格式,覆盖逾 70 万个分子,并随 DeepChem 提供加载与划分工具(Wu et al., 2018)。它至今仍是分子机器学习引用最多的基准套件。

MoleculeNet 按性质来源把数据集分为四组(表 1.3-1):量子力学、物理化学、生物物理与生理学。分组并非形式——同组数据集的标签由同类实验或计算产生,噪声结构相近,可比性高;跨组比较则须先回答一个问题:标签本身可信到什么程度。下一小节专门讨论此事。

表 1.3-1MoleculeNet 主要数据集一览(规模与任务数取自 Wu et al., 2018 论文口径)
组别数据集分子数任务数任务类型标签来源常用指标
量子力学QM821,78616回归计算(TD-DFT 激发态)RMSE
QM9133,88512回归计算(DFT 基态性质)RMSE
物理化学ESOL1,1281回归实验(溶解度)RMSE
FreeSolv6421回归实验(水合自由能,含部分计算值)RMSE
Lipophilicity4,2001回归实验(脂溶性)RMSE
生物物理PCBA437,529128分类实验(高通量筛选)ROC-AUC
MUV93,12717分类实验(去偏设计的高通量筛选)PRC-AUC
HIV41,1271分类实验(高通量筛选)ROC-AUC
生理学BBBP2,0391分类实验(血脑屏障渗透)ROC-AUC
Tox217,83112分类实验(毒性通路筛选)ROC-AUC
SIDER1,42727分类文献(药物不良反应)ROC-AUC
ClinTox1,4782分类文献(临床毒性)ROC-AUC

表中 12 个数据集合计约 74.6 万个分子,其中 PCBA 一家占近六成。这提示一个常被忽略的事实:基准上的"平均成绩"对个别大数据集高度敏感,分组报告比只报总分更稳妥。另需说明,后续的清洗、去重与版本更新会使各家复现的数字略有出入,同表比较时应统一口径。

注记

MoleculeNet 之外,还有三类常用数据资源:ChEMBL 汇集文献中人工审校的生物活性数据(Gaulton et al., 2012);PubChem 储存海量高通量筛选的原始结果;ZINC 索引可购买化合物库,供虚拟筛选取样。三者规模都远大于 MoleculeNet,但未经基准化整理,使用前须自行完成清洗、去重与划分。

1.3.2 标签从哪里来:噪声的层级

四组数据集最本质的差异不在分子多少,而在标签如何产生。量子力学组(QM8、QM9)的标签由量子化学计算给出:固定泛函与基组后结果可精确复现,没有随机测量噪声,只有方法本身的系统偏差。对这组数据,均方根误差(root-mean-square error, RMSE)可以直接对照化学精度的量级来谈论。

物理化学组(ESOL、FreeSolv、Lipophilicity)的标签来自实验测量:溶解度、水合自由能、脂溶性各有测定误差,量级约在零点几个对数单位或每摩尔千卡之间。指标仍以 RMSE 为主,但"RMSE 降到 0.5"是否已经摸到实验本身的可重复性上限,须先查清测定误差再下结论。

生物物理组(HIV、PCBA、MUV)与生理学组(BBBP、ClinTox、SIDER、Tox21)的标签是二分类,惯用 ROC 曲线下面积(area under the ROC curve, ROC-AUC)。生物物理组的数据出自高通量筛选(high-throughput screening):读数受荧光干扰、分子聚集等假阳性机制影响,同一分子重复测定也可能翻转标签。MUV 的设计者更是刻意挑选"最难"的活性与非活性组合,每任务活性分子仅数十个,类别失衡达千分之一量级,因此 MoleculeNet 对它改用 PRC-AUC,看重排序顶端的查准而非整条曲线。生理学组的标签来自临床试验与药物标签文本,记录的是未受控条件下的人体结果:个体差异、合并用药与报告偏差都写进了标签。

指标的选择因此不是技术细节,而是对"什么算预测得好"的回答:连续量配误差棒,用 RMSE;筛选关心排序,用 ROC-AUC;正例稀少时,用 PRC-AUC。同样一个 0.8 的 AUC,放在量子力学组是彻底失败,放在生理学组可能已逼近标签噪声决定的上限(ceiling)。跨组比较数字之前,先比较标签的可信度。

1.3.3 稀疏标签矩阵与权重掩码

多任务数据集把数据的组织方式从"一张表"变成"一张矩阵":行是分子,列是任务,单元是标签。PCBA 有 128 列测定,但没有任何分子被 128 个实验全部覆盖——每个筛选只测试了部分化合物,矩阵里于是出现大量空白。多任务学习(multitask learning)正是想利用这种矩阵:任务之间共享化学结构信息,单个分子的标签虽只覆盖几列,千万个分子合起来仍能让模型学到跨任务的规律(Ramsundar et al., 2015)。

空白单元的含义是"未测定",不是"无活性"。若把缺失一律填 0,模型会学到一条系统性的错误规律:凡某实验未覆盖的分子都算负例。这个偏倚由实验设计决定——化合物可得性、筛选批次、项目取舍——与化学本身无关。权重掩码(weight mask)是标准对策:为每个单元配一个 0/1 权重 wij,标签有效取 1,缺失取 0,训练与评测都只对有效单元求和:

L(Θ) = Σi=1..n Σj=1..T wij ℓ( yij , fΘ(xi)j ) / Σi,j wij
(1.3-1) yij 为第 i 个分子在第 j 个任务上的标签(回归取实数,分类取 0/1);wij ∈ {0,1} 为掩码,缺失时取 0;ℓ 为逐任务损失(平方误差或交叉熵)。缺失项对梯度与指标均无贡献。

指标同样只在任务内的有效标签上计算,再做加权平均:

M̄ = Σt=1..T wt mt / Σt=1..T wt
(1.3-2) mt 为第 t 个任务在测试集上的指标(如 ROC-AUC),wt 为该任务上有效测试标签的个数。加权避免数据稀少的任务与数据充裕的任务同等拉扯均值。

DeepChem 的多任务模型在实现上正是这一对公式:掩码既进损失,也进指标。第 3.7 节将结合具体接口说明其工程细节,此处先记住原则即可——缺失不是零。

习题 1.3-1

某多任务数据集含 5 个分子、3 个任务。测试后第 1、2、3 个任务分别有 3、5、2 个有效测试标签(其余缺失),对应的 ROC-AUC 为 0.70、0.85、0.60。(a) 按式 (1.3-2) 计算加权平均 AUC;(b) 计算不加权的三任务算术平均;(c) 解释两者差异的含义,并讨论若把缺失标签一律填 0(当作负例)会给指标带来什么后果。

参考解答

(a) 加权平均 = (3×0.70 + 5×0.85 + 2×0.60) ÷ (3+5+2) = (2.10 + 4.25 + 1.20) ÷ 10 = 0.755。(b) 算术平均 = (0.70 + 0.85 + 0.60) ÷ 3 ≈ 0.717。(c) 加权平均向标签最多的任务(任务 2)偏移;两种口径都有人使用,报告时必须注明口径。若把缺失填 0:缺失由实验设计决定,与分子是否有活性无关,填 0 等于凭空制造一批真假不明的"负例";这批点混入 AUC 的排序比较后,指标的偏移方向不可控,数值随之失去解释。

1.3.4 Bemis–Murcko 骨架

评估协议的核心概念是骨架。Bemis 与 Murcko 在 1996 年提出一套分子分解方法:把分子拆成环系、连接链与侧链三部分;环系是全部环原子与环键,连接链是夹在环系之间、把分子连成整体的最短路径上的原子与键,其余部分一律是侧链(Bemis & Murcko, 1996)。分子骨架(scaffold)就是环系与连接链的并集:删除全部侧链,剩下的就是骨架。图 1.3-1 给出示意。

Bemis–Murcko 骨架抽取示意 原分子 N NH2 OMe Me 环系 连接链 侧链 删除全部侧链,保留环系与连接链 Bemis–Murcko 骨架 N 侧链附着点
图 1.3-1 Bemis–Murcko 骨架抽取示意。原分子由两个环系、一条连接链与三处侧链(NH2、OMe、Me)构成;删除全部侧链后,环系与连接链的并集即分子骨架。骨架只保留环与环之间的路径,路径之外的原子一律归入侧链,环上的杂原子(如 N)随环系保留。

Bemis 与 Murcko 对 5,120 个上市药物做此分解,只得到 1,179 个不同骨架;其中 32 个最常见骨架覆盖了约一半药物。这个统计揭示了药物化学的基本事实:化学空间的利用高度集中,药物分子在骨架意义上成族聚集。基准数据集同样如此——同一课题组的构效关系研究会把成批类似物写进文献,数据集因此富含"同族系列"。第二章将介绍的 RDKit 提供骨架抽取的标准实现,此处先记住定义。

定义

骨架划分(scaffold split):先把数据集内全部分子按 Bemis–Murcko 骨架分组,同一骨架的分子无论多少,整体划入同一侧;再按比例把骨架组分配给训练、验证与测试集。测试集因此只含训练阶段未见过的骨架。它考察向新结构族外推的能力,与随机划分考察的同分布内插性质不同。

1.3.5 划分协议的谱系:随机、属性排序与骨架

随机划分(random split)把分子按独立同分布假设随机分入训练与测试集,是机器学习的默认做法。它暗含一个前提:测试分子与训练分子来自同一分布,结构族的构成相同。在此协议下取得高分,证明的是插值(interpolation)能力——在同族分子的小改动之间内插。

第二类做法按某个连续属性排序后切分:把分子按 LogP、分子量或标签本身排序,训练集取一端,测试集取另一端。这类属性排序划分(property-sorted split)在溶解度等回归研究中常见,考察的是外推(extrapolation)能力沿属性轴的表现:模型须预测比训练时"更油"或"更大"的分子。它与骨架划分容易混淆——两者都比随机划分难,成绩下降的来源却完全不同:前者是属性区间外推,测试分子可能仍是老骨架;后者是结构族外推,测试分子换用新骨架。中文文献笼统说"更难的划分"时,务必先分清难在哪条轴上。另有一层陷阱:若按标签本身排序切分,切分动作本身就把训练与测试的标签分布拉开,成绩下降更多反映任务定义变化,而非模型退化,报告时必须注明。

骨架划分是第三类,也是 MoleculeNet 明确纳入基准套件、并随 DeepChem 提供实现的一类(Wu et al., 2018)。它以骨架为最小单位整体划侧,测试集只含新骨架,直接模拟药物发现的真实处境:下一个项目面对的往往是全新的结构族。图 1.3-2 对比三种协议下训练与测试的结构重叠。

三种划分协议下训练与测试分子的骨架重叠对比 (a) 随机划分 (b) 按属性排序划分 (c) 骨架划分 训练分子 测试分子 属性值(如 LogP)递增 训练骨架 新骨架(仅测试侧) 训练与测试共享骨架(插值) 同族内按属性拉开区间(属性外推) 测试只含未见骨架(结构外推)
图 1.3-2 三种划分协议下训练与测试分子的骨架重叠(示意,每个椭圆代表一个 Bemis–Murcko 骨架族)。随机划分下测试分子与训练分子同族混杂,考察插值;属性排序划分仍在同族内取样,但按属性值(如 LogP)把测试集推到区间一端,考察属性外推;骨架划分把整个骨架族划归一侧,测试集只含训练中未见的骨架,考察结构外推。

三种协议没有对错,只有问题不同:随机划分问"同族内微调能预测多准",骨架划分问"换一个环系还行不行"。给数字必须同时给协议,脱离协议的 AUC 不携带信息。

1.3.6 随机划分为何虚高

随机划分的毛病可以用一条机理讲清。1.3.4 节说过,基准数据集富含同族系列:同一骨架上换几个取代基的类似物成批出现。随机抽样会把一个系列的成员同时分进训练集与测试集,于是测试分子在训练集里常有近重复(near-duplicate)——骨架相同、只差一两个取代基的兄弟分子。模型要做的不再是学习"结构如何决定性质",而是记住"这个家族的基线,再做微调",本质是查表加插值。1.2 节的分子指纹正是查表的理想索引:按 Tanimoto 相似度即可在训练集中找到近邻。表示越灵通,查表越准,随机划分的成绩也越好看。

做一个量化的思想实验(数字为设定,非实测)。设某数据集随机划分后,80% 的测试分子在训练侧有同骨架近重复;对这些分子,查表式预测的 ROC-AUC 可达 0.95。其余 20% 依赖真实的跨骨架泛化,设其 AUC 为 0.65。随机划分报出的成绩是 0.8 × 0.95 + 0.2 × 0.65 = 0.89;换到骨架划分,查表通道关闭,成绩回落到 0.65 附近。二十四分之差不是模型之差,而是协议之差。文献里随机划分与骨架划分之间的常见落差,多半由此而来。

警示

随机划分与"刷榜"。在随机划分的公开基准上把 AUC 提高两三分,完全可能只是把查表做得更好:更灵通的表示记住了更多近重复,这类改进在骨架划分或时间划分下往往消失。见到新方法时先问三件事:用的什么划分、测试集与训练集骨架重叠多少、近重复有没有清理。不注明划分协议的榜单成绩,不构成泛化能力的证据。

习题 1.3-2

设随机划分下某二分类数据集 60% 的测试分子在训练集中有同骨架近重复,查表式预测对这部分分子的 AUC 约 0.97;其余 40% 只能依赖真实泛化,AUC 约 0.62。(a) 估算随机划分报出的 AUC;(b) 估算骨架划分下(近重复通道关闭)的 AUC;(c) 计算两协议之差,并说明其中多少来自查表通道。

参考解答

(a) 0.6 × 0.97 + 0.4 × 0.62 = 0.582 + 0.248 = 0.830。(b) 近重复通道关闭后只剩跨骨架泛化,约 0.62。(c) 差值 0.830 − 0.62 = 0.21,全部由查表通道贡献:0.6 × (0.97 − 0.62) = 0.21。即随机划分成绩中约四分之一(0.21 ÷ 0.83 ≈ 0.25)与化学泛化无关,纯属协议红利。

1.3.7 时间划分、双重外推与数据泄漏

比骨架更严的一条轴是时间。真实项目里,模型今天训练、明天使用,面对的是尚未合成的新分子。时间划分(time split)按分子首次测定或首次发表的年份切分:早期分子训练,晚期分子测试,模拟前瞻式使用。Sheridan 对多个药物数据集的系统比较表明,时间划分的估计普遍低于随机交叉验证,也更接近模型投入实际使用后的表现(Sheridan, 2013)。两条外推轴可以叠加:按时间排序后再按骨架分组切分,得到"时间 + 骨架"双重外推,难度接近"明天的全新化学空间",适合作为方法发表前的自查协议。

工业实践里还有第三重检验:应用内评估。虚拟筛选(virtual screening)的最终产出不是基准分数,而是对整个库存或可购化合物库的排序,以及顶端分子的湿实验命中率。富集因子(enrichment factor)——顶端 1% 的命中率相对随机比例的倍数——与合成、测试的成本收益直接挂钩。基准 AUC 只是代理指标;一个模型若在公开基准上略逊、在自有化合物库上排序更合理,工业上会选后者。

上述所有问题的共同名字是数据泄漏(data leakage)。正式定义:凡在模型实际使用的时刻不可获得、却以任何途径进入训练过程且与标签相关的信息,都构成泄漏。它在分子数据里有三副面孔。其一,重复分子:同一化合物以不同盐型、不同互变异构体或不同数据库条目出现,合并数据时未去重,等于把答案抄进训练集。其二,近重复骨架:随机划分放行的同族类似物,即上节的查表通道。其三,目标标签泄漏:特征本身携带标签信息——例如把测定批次、阳性对照比例这类实验元数据当作输入,或使用了只有在知道结果之后才能算出的描述符。三种面孔的对策各不相同:重复靠规范化标识(如 InChIKey)去重;近重复靠骨架划分;目标泄漏只能靠逐个审查特征在部署时刻是否真的可得。第二章的 SMILES 规范化与第三章的数据加载器,会把前两类对策落到具体工具上。

习题 1.3-3

(a) 溶解度研究中有人按 LogP 排序切分数据,有人按骨架切分。两者的"难"各在哪条轴上,各自衡量什么能力?(b) 试设计一个"时间 + 骨架"双重外推实验的流程,并说明它比单独的时间划分多检验了什么。

参考解答

(a) LogP 排序切分在连续属性轴上外推:测试分子比训练分子更亲脂(或更亲水),但可能仍是训练中出现过的骨架,衡量沿描述变量外推的能力;骨架划分在离散的结构族轴上外推:测试分子换用训练中未见的环系组合,衡量向新化学空间推广的能力。前者难在"数值区间没见过",后者难在"结构母题没见过"。(b) 流程:先按首次测定年份排序,取早期约 80% 分子为训练侧候选、晚期约 20% 为测试侧候选;再在两侧之间按骨架分组切分,保证任何骨架不跨侧。它比单独时间划分多堵住一条捷径:晚期新增分子若只是旧骨架的衍生物,时间划分仍会放行,双重外推则要求测试分子在时间与结构两条轴上都真的新。

关键术语

基准数据集 (benchmark dataset)
样本、任务与指标均已固定的公共数据集合,用于跨模型比较。
多任务学习 (multitask learning)
一个模型同时预测多个相关任务的标签,共享结构信息。
权重掩码 (weight mask)
标记标签有效性的 0/1 权重,缺失标签不进损失也不进指标。
分子骨架 (scaffold)
Bemis–Murcko 意义上环系与连接链的并集,删除全部侧链后剩余部分。
骨架划分 (scaffold split)
以骨架为最小单位整体划侧,测试集只含训练中未见过的骨架。
随机划分 (random split)
按独立同分布假设随机抽样切分,考察同分布内的插值。
属性排序划分 (property-sorted split)
按连续属性(如 LogP)排序后取端切分,考察属性轴外推。
时间划分 (time split)
按首次测定或发表时间先后切分,模拟前瞻式使用。
插值 (interpolation)
在训练分布已覆盖区域内的预测。
外推 (extrapolation)
在训练分布未覆盖区域(属性轴或结构轴)的预测。
富集因子 (enrichment factor)
筛选排序顶端区段的命中率相对随机比例的倍数。
数据泄漏 (data leakage)
部署时刻不可得、却进入训练且与标签相关的信息。

参考文献与延伸阅读

  1. Wu Z, Ramsundar B, Feinberg EN, Gomes J, Geniesse C, Pappu AS, Leswing K, Pande V. 2018. MoleculeNet: a benchmark for molecular machine learning. Chemical Science 9:513–530.
  2. Bemis GW, Murcko MA. 1996. The properties of known drugs. 1. Molecular frameworks. Journal of Medicinal Chemistry 39:2887–2893.
  3. Ramsundar B, Kearnes S, Riley P, Webster D, Konerding D, Pande V. 2015. Massively multitask networks for drug discovery. arXiv:1502.02072.
  4. Gaulton A, Bellis LJ, Bento AP, et al. 2012. ChEMBL: a large-scale bioactivity database for drug discovery. Nucleic Acids Research 40:D1100–D1107.
  5. Sheridan RP. 2013. Time-split cross-validation as a method for estimating the goodness of prospective prediction. Journal of Chemical Information and Modeling 53:783–790.