← 返回学术指南

SCI投稿准备 · 2026/10/22

机器学习模型训练数据的预处理,拟合步骤如何防泄漏?

机器学习预处理必须先拆分,再在训练折拟合填补、标准化、PCA或筛选,测试数据只接受已固定变换。

模型研究先对全体样本做缺失值填补、标准化和特征筛选,然后才随机拆成训练与测试。即使分类器只在训练集拟合,测试集的信息已经进入了前面的参数估计,性能可能偏高。投稿方法不能只写“按八比二划分数据”;要逐步说明每个预处理器在哪里学习参数、如何应用到验证和测试样本。

scikit-learn官方的常见陷阱文档建议先拆分,再在训练数据上拟合变换,随后只对测试集执行相同变换。均值、方差、缺失值填补规则、主成分方向和特征选择名单都属于可能被学出的参数。若先用全样本均值标准化,测试集已影响缩放;若用全样本标签筛特征,测试结局也参与了选择。把这些步骤包进交叉验证的每个训练折,而不是在交叉验证外运行一次,才能让每个验证折保持未参与拟合。

给每一步预处理做一张小账本:它究竟在谁身上学了参数?每行列变换名称、是否查看结局、拟合所用样本、保存的参数文件,以及验证和测试时是否只执行变换。单纯按固定物理单位换算,不从数据学习参数,风险与PCA不同;但若类别编码字典由全体数据频率生成,也可能携带测试分布信息。论文应根据实际代码判断,不要用“无监督预处理”四个字一概免除泄漏检查。

患者有多次影像或重复检测时,拆分单位必须先定。若同一患者的一次检查进入训练、另一次进入测试,即使所有预处理器只在训练折拟合,患者层面的信息仍可能泄漏。按患者、家庭、机构或时间分组的需要由实际应用场景决定。不要为了保住样本数而把相近的衍生文件分到两侧。数据拆分日志应能追到原始标识,同时在对外共享时保护隐私。

发现泄漏后,要从模型选择环节重跑,不能只替换最后一张测试表。特征名单、超参数、早停轮次可能都曾受错误预处理影响;需在新管线中重新选择,再使用独立测试集。报告原错误如何发现、哪些结果受到影响,以及修正后主要结论是否改变。旧库存文章讨论模型输出概率能否叫“风险”,本篇处理概率生成前的数据管线信息边界。

结果表可附训练折、验证折和最终测试的样本数、预处理拟合次数,以及软件管线版本。若有外部医院数据,确认没有用外部集重新拟合开发阶段的标准化参数,除非研究目的就是明确评估一个更新后的流程。评估集使用预定的缺失值策略,不应看完外部数据分布后选最有利办法。模型参数与变换参数都要一同冻结。

交稿前打开最终运行脚本,沿数据流找每个fit或估计参数的步骤:运行前测试样本是否已进入该步骤?在交叉验证中,每一折是否重新拟合?再抽一名患者核对其全部记录只在同一侧。若代码与方法段不一致,先修代码并重算结果,让“独立测试”真正发生在所有学习步骤之后。