4. 数据划分与泄漏控制

在蛋白突变效应预测中,模型在测试集上表现优异却在真实湿实验验证中大幅掉分,最常见的原因不是模型容量不足,而是数据划分方式引入了信息泄漏。所谓泄漏,是指训练集与测试集之间存在本应被隔离的相似性或依赖关系,使模型在评估阶段“偷看”了测试信息。本节围绕三种主流划分策略——同源划分、位置划分、突变类型划分——说明它们各自隔离什么、适用什么场景,以及工程评估中最容易踩的陷阱。

一、为什么随机划分几乎总是过于乐观

假设我们有一个包含 5000 条单点突变的数据集,覆盖 200 个同源蛋白。若直接按 8:2 随机切分,同一个蛋白的不同突变位点会同时出现在训练集和测试集里。模型只要记住“这个蛋白第 57 位附近偏好疏水残基”这类局部模式,就能在测试集上取得很高分数,但它并没有学到可迁移的突变效应规律。更隐蔽的是,同源蛋白之间序列相似度可达 40% 以上,随机划分会让近同源序列跨集分布,导致评估结果被同源冗余严重污染。

因此,划分策略的核心问题是:我们希望模型泛化到什么样的新数据上? 如果目标是预测全新蛋白上的突变,就必须按蛋白(或同源簇)划分;如果目标是预测同一蛋白上未测过的位点,就按位置划分;如果目标是预测训练中未出现的突变类型,就按突变类型划分。三者回答的是不同的泛化问题,不能混用。

二、同源划分:隔离进化冗余

同源划分(homology-based split)先对全部蛋白序列做聚类,常用 MMseqs2 或 CD-HIT,以序列一致性阈值(如 30%、50%)将序列归入同一簇,再以簇为单位整体划入训练、验证或测试集。这样可保证同一簇内的近同源序列不会跨集出现。

实际操作中,阈值选择直接影响难度:阈值越高(如 90%),簇更细,测试集仍可能包含与训练集中等相似的蛋白,评估偏乐观;阈值越低(如 25%),簇更粗,测试集与训练集差异更大,评估更严格,但可能因簇过大导致训练数据不足。工程上建议同时报告多个阈值下的结果,例如 30% 和 50% 两档,以观察性能随同源距离的变化趋势。

# 示例:用 MMseqs2 聚类后按簇划分(示意参数)
mmseqs easy-cluster sequences.fasta clusterRes tmp \
  --min-seq-id 0.3 -c 0.8 --cov-mode 1
# 输出 clusterRes_cluster.tsv: 每行 repSeq \t memberSeq
# 再按 repSeq 分组,将整簇分配到 train/val/test

需要注意,同源划分只隔离了序列相似性,并不能隔离结构相似或功能相似但序列差异较大的蛋白。若数据集中存在大量同一蛋白家族的不同成员,仍可能残留功能层面的泄漏。

三、位置划分:隔离位点记忆

位置划分(position-based split)以残基位置为单位,将同一蛋白的不同位点分到不同集合。它适用于评估“模型能否预测同一蛋白上未测位点的突变效应”。实现时通常按位点编号分组,确保同一位点的所有突变只出现在一个集合中。

位置划分的风险在于:如果训练集包含某位点的邻近位点,而这两个位点在三维结构上空间相邻,模型可能通过空间耦合间接获得信息。因此,位置划分最好结合结构信息,将空间距离小于阈值(如 8 Å)的位点归入同一组,再整体划分。否则,评估结果会因空间泄漏而偏高。

四、突变类型划分:隔离替换偏好

突变类型划分(mutation-type split)按突变类型(如 A→V、G→D)或按氨基酸替换矩阵中的类别分组,将某些突变类型整体留作测试。它回答的是“模型能否泛化到训练中未见的替换类型”。例如,训练集只包含疏水→疏水突变,测试集包含疏水→带电突变,可检验模型对理化性质变化的推断能力。

这种划分对数据量要求较高,因为每种突变类型的样本数可能很少。若某类型样本不足,测试集方差会很大,指标不稳定。工程上可先统计各突变类型的样本分布,再决定是否合并稀有类型或采用分层抽样。

三种数据划分策略的隔离对象与泄漏风险 同源划分 按序列相似度聚类,整簇划分 簇A 簇B 隔离:进化冗余 残留风险:结构/功能相似 阈值:30% / 50% 双档报告 位置划分 按残基位点分组,整组划分 位点 12 / 45 / 78 … 隔离:位点记忆 残留风险:空间邻近耦合 建议:8 Å 内位点同组 突变类型划分 按替换类型分组,整类留出 疏水→疏水 疏水→带电 隔离:替换偏好 残留风险:稀有类型方差大 建议:先统计类型分布 工程评估中的四类典型陷阱 陷阱1:随机划分 同蛋白跨集,指标虚高 陷阱2:预处理泄漏 全局归一化/特征选择 陷阱3:重复样本 同一突变多来源重复 陷阱4:阈值调参 在测试集上选阈值 正确做法:划分前完成去重与聚类;所有预处理仅在训练集拟合;验证集用于调参,测试集只评估一次 报告时同时给出随机划分与严格划分的差距,差距越大说明泄漏越严重

五、工程评估陷阱与操作建议

陷阱一:随机划分。 这是最普遍的问题。只要数据集中存在同一蛋白的多个突变,随机划分就会让模型记住蛋白身份。判断方法:比较随机划分与同源划分的指标差距,若差距超过 0.1(以 Spearman 相关系数计),说明泄漏显著。

陷阱二:预处理泄漏。 全局归一化、全局特征选择、全局缺失值填充都会把测试集信息带入训练。正确做法是:先划分,再在训练集上拟合归一化参数和特征选择器,然后应用到验证集和测试集。对于蛋白突变数据,常见的全局操作包括按数据集统计氨基酸频率、按全量数据做 PCA 降维等,都必须改为仅用训练集拟合。

陷阱三:重复样本。 同一突变可能来自多个数据库或多次实验,若不去重,同一记录会跨集出现。建议在划分前按“蛋白ID + 位点 + 突变后残基”三元组去重,并保留实验条件最完整的一条。

陷阱四:在测试集上调阈值。 很多工程流程会用测试集选择分类阈值或早停轮数,这等价于把测试集当验证集。正确做法是:训练集训练,验证集调参和选阈值,测试集只在最终评估时使用一次。

实用检查清单:① 划分前是否按三元组去重?② 是否按同源簇或位点分组?③ 归一化/特征选择是否只在训练集拟合?④ 验证集与测试集是否严格分离?⑤ 是否报告了随机划分与严格划分的差距?

最后需要强调,三种划分策略并非互斥。实际工程中常采用组合策略:先按同源簇划分,再在簇内按位置分组,最后检查突变类型分布是否均衡。评估时至少报告两套结果——一套随机划分作为上界参考,一套严格划分作为真实泛化估计。两者差距越小,说明模型学到的规律越可迁移,越值得进入湿实验验证。