243

MoleculeNet:分子性质预测标准数据集

MoleculeNet 汇集物理化学、生物活性与毒性等标准数据集与划分,是分子性质预测的常用数据来源。这篇给出数据集速查、正确用法与已知的质量问题。

MoleculeNet(Wu et al., Chemical Science 2018)是分子机器学习最早被广泛采用的基准集合。论文里出现的 ESOL、BBBP、Tox21、HIV、QM9 等名字都来自这里。它的历史贡献是让不同工作第一次可以相互比较;今天使用它,则需要清楚它的边界。

数据集速查

数据集 预测目标 规模 类型 注意
ESOL 水溶解度 logS 1,128 回归 入门首选,任务清晰
FreeSolv 水合自由能 642 回归 数据少,波动大
Lipophilicity logD7.4 4,200 回归 来自 ChEMBL,质量较好
QM9 12 个量子化学性质 133,885 回归 DFT 计算值,非实验值
BBBP 血脑屏障通透 2,050 分类 已知存在标注错误
BACE BACE-1 抑制 1,513 分类+回归 单一靶点,系列集中
Tox21 12 个毒性终点 7,831 多任务分类 标签稀疏
ToxCast 600+ 毒理终点 8,575 多任务分类 极度稀疏
ClinTox 临床毒性 1,478 多任务分类 标签定义有争议
SIDER 27 类副作用 1,427 多任务分类 标签噪声大
HIV 抗 HIV 活性 41,127 分类 阳性率约 3.5%
MUV 17 个筛选任务 93,087 多任务分类 专为减少偏倚设计,很难

正确用法

import deepchem as dc
import numpy as np

scores = []
for seed in range(5):                       # 多种子是必需的
    tasks, (tr, va, te), transformers = dc.molnet.load_bbbp(
        featurizer="ECFP", splitter="scaffold", seed=seed)   # 骨架划分
    model = dc.models.SklearnModel(RandomForestClassifier(n_estimators=500))
    model.fit(tr)
    metric = dc.metrics.Metric(dc.metrics.roc_auc_score)
    scores.append(model.evaluate(te, [metric], transformers)["roc_auc_score"])

print(f"ROC-AUC = {np.mean(scores):.3f} ± {np.std(scores):.3f}")
  • 必须用 scaffold 划分:随机划分下几乎所有方法都能刷出高分,区分度极低。
  • 必须多种子:BBBP、BACE 这类小数据集,不同种子间 AUC 波动常达 0.02~0.05,单次跑分的排名基本是噪声。
  • 不平衡数据看 PR-AUC:HIV 阳性率仅 3.5%,只看 ROC-AUC 会过于乐观。
  • 回归任务记得传 transformers:否则 RMSE 在标准化尺度上,无法与文献比较。

已知的质量问题

  • BBBP 标注错误:多项独立分析发现 BBBP 存在明显的标签错误和重复分子。用它比较模型时,微小的性能差异没有意义。
  • ClinTox 定义争议:「因毒性而临床失败」的标签定义不够清晰,部分标注存疑。
  • 规模过小:多数数据集只有一两千个分子,模型间差异常淹没在噪声中。刷这些榜的边际价值已经很低。
  • 与真实项目分布脱节:公开集是跨项目的杂合分子,实际项目面对的是同一系列的类似物,任务性质完全不同。公开集上的模型排名不能直接迁移。
  • QM9 是计算值:标签来自 DFT 计算而非实验测量,学得再准也只是在拟合另一个计算方法。

今天的替代选择

  • TDC Benchmark Group(见 244《TDC ADMET Group》):划分与指标更规范,覆盖更全,有排行榜。
  • Polaris:新一代基准平台,强调数据质量与评测严谨性。
  • 自家内部数据:最终选型必须在自家数据上验证,这是任何公开基准都替代不了的。

上手提示

  • 它的价值是「让实验可比」,不是「衡量真实能力」;
  • scaffold 划分 + 多种子均值 ± 标准差,两者缺一不可;
  • BBBP 等数据集存在标签质量问题,别过度解读小幅提升;
  • 更严格的评测转向 TDC Benchmark Group,最终选型看自家数据。

延伸资源