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。
延伸资源
- 加载工具:172《DeepChem》、220《DeepChem MolNet Loaders》;更规范的基准:173《TDC》;
- 评测陷阱:169《Benchmark 陷阱》;数据清洗见「分子表示」模块。