1.3.1 基准数据集:MoleculeNet 全景
机器学习方法的进展靠比较说话。若各课题组各用各的数据、各报各的数字,方法之间便无从比较。基准数据集(benchmark dataset)把样本、任务与指标固定下来,让不同模型在同一块试金石上接受检验。2018 年,Wu 等人发布 MoleculeNet,把散落在文献与公共数据库中的分子性质数据整理成统一格式,覆盖逾 70 万个分子,并随 DeepChem 提供加载与划分工具(Wu et al., 2018)。它至今仍是分子机器学习引用最多的基准套件。
MoleculeNet 按性质来源把数据集分为四组(表 1.3-1):量子力学、物理化学、生物物理与生理学。分组并非形式——同组数据集的标签由同类实验或计算产生,噪声结构相近,可比性高;跨组比较则须先回答一个问题:标签本身可信到什么程度。下一小节专门讨论此事。
| 组别 | 数据集 | 分子数 | 任务数 | 任务类型 | 标签来源 | 常用指标 |
|---|---|---|---|---|---|---|
| 量子力学 | QM8 | 21,786 | 16 | 回归 | 计算(TD-DFT 激发态) | RMSE |
| QM9 | 133,885 | 12 | 回归 | 计算(DFT 基态性质) | RMSE | |
| 物理化学 | ESOL | 1,128 | 1 | 回归 | 实验(溶解度) | RMSE |
| FreeSolv | 642 | 1 | 回归 | 实验(水合自由能,含部分计算值) | RMSE | |
| Lipophilicity | 4,200 | 1 | 回归 | 实验(脂溶性) | RMSE | |
| 生物物理 | PCBA | 437,529 | 128 | 分类 | 实验(高通量筛选) | ROC-AUC |
| MUV | 93,127 | 17 | 分类 | 实验(去偏设计的高通量筛选) | PRC-AUC | |
| HIV | 41,127 | 1 | 分类 | 实验(高通量筛选) | ROC-AUC | |
| 生理学 | BBBP | 2,039 | 1 | 分类 | 实验(血脑屏障渗透) | ROC-AUC |
| Tox21 | 7,831 | 12 | 分类 | 实验(毒性通路筛选) | ROC-AUC | |
| SIDER | 1,427 | 27 | 分类 | 文献(药物不良反应) | ROC-AUC | |
| ClinTox | 1,478 | 2 | 分类 | 文献(临床毒性) | 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,训练与评测都只对有效单元求和:
指标同样只在任务内的有效标签上计算,再做加权平均:
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 对 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 对比三种协议下训练与测试的结构重叠。
三种协议没有对错,只有问题不同:随机划分问"同族内微调能预测多准",骨架划分问"换一个环系还行不行"。给数字必须同时给协议,脱离协议的 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)
- 部署时刻不可得、却进入训练且与标签相关的信息。
参考文献与延伸阅读
- 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.
- Bemis GW, Murcko MA. 1996. The properties of known drugs. 1. Molecular frameworks. Journal of Medicinal Chemistry 39:2887–2893.
- Ramsundar B, Kearnes S, Riley P, Webster D, Konerding D, Pande V. 2015. Massively multitask networks for drug discovery. arXiv:1502.02072.
- Gaulton A, Bellis LJ, Bento AP, et al. 2012. ChEMBL: a large-scale bioactivity database for drug discovery. Nucleic Acids Research 40:D1100–D1107.
- 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.