179

MoleculeNet 工具链:分子机器学习数据怎么用

MoleculeNet 提供标准分子数据集与划分,是建立可比实验的起点。这篇列清主要数据集的规模与任务类型,并说明它作为 benchmark 的已知问题。

MoleculeNet 是分子机器学习最早被广泛采用的基准集合(Wu et al., Chemical Science 2018),把量子力学、物理化学、生物活性、生理毒性四类任务打包成统一格式。多数论文里的 BBBP、ESOL、Tox21、HIV 等名字都来自这里,通常通过 DeepChem 加载。

怎么加载

import deepchem as dc

# 回归:水溶解度
tasks, (tr, va, te), transformers = dc.molnet.load_delaney(
    featurizer="ECFP", splitter="scaffold")

# 分类:血脑屏障通透性
tasks, (tr, va, te), transformers = dc.molnet.load_bbbp(
    featurizer="GraphConv", splitter="scaffold")

也可用 PyG 的 torch_geometric.datasets.MoleculeNet 或直接下 CSV 自己处理。后者往往更可控——不同库的默认划分和预处理不完全一致,跨库比较容易出错。

主要数据集速查

数据集 任务 规模 类型
ESOL (Delaney) 水溶解度 logS ~1,128 回归
FreeSolv 水合自由能 ~642 回归
Lipophilicity logD7.4 ~4,200 回归
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 二分类(高度不平衡)
QM9 12 个量子化学性质 ~134,000 多任务回归

用它的正确姿势

  • 必须用 scaffold 划分:随机划分下几乎所有模型都能刷出漂亮 AUC,区分度极低。原论文也推荐骨架划分。
  • 多随机种子报均值 ± 标准差:BBBP、BACE 这类只有一两千个分子的集,不同种子间波动常达 0.02~0.05 AUC,单次跑分的排名基本是噪声。
  • 不平衡集看对指标:HIV 阳性率约 3.5%,看 ROC-AUC 会显得很好,应同时看 PR-AUC。

已知问题:别把它当金标准

  • 标签质量参差:BBBP 被多次指出存在标注错误和重复分子;ClinTox 的标签定义也有争议。
  • 规模太小:多数集只有一两千个分子,模型间差异常淹没在噪声里,「刷榜」的边际意义很低。
  • 与真实项目分布脱节:公开集是跨项目的杂合分子,而实际项目面对的是同一系列的类似物,任务难度和分布完全不同。
  • 更现代的替代:需要更严格的评测时,用 TDC 的 Benchmark Group(见 173《TDC》)或 Polaris 等新一代基准,划分与指标更规范。

关键要点

  • MoleculeNet 的价值是「让实验可比」,不是「衡量真实能力」;
  • 永远用 scaffold 划分 + 多种子均值 ± 标准差;
  • 知道 BBBP 等集存在标签质量问题,别过度解读小幅提升;
  • 要更严格的评测,转向 TDC Benchmark Group。

延伸资源