GS训练验证与数据泄漏 - SpiralKernel/bioinfo-wiki GitHub Wiki
GS训练验证与数据泄漏
更新:2026-10-13;状态:可用;验证范围:验证逻辑与官方资料核对;嵌套随机/家系划分已运行,家系不重叠检查已通过。
先定义候选群体,再设计外层验证和内层调参;训练表型之外的信息也可能泄漏。
先写部署问题
要预测的是已有家系的新个体、新家系、未来世代,还是新环境中的表现?不同问题对应不同验证划分。随机个体划分可以评价训练与候选存在相近亲缘时的预测;它不能自动代表跨家系或跨世代能力。亲缘共享本身不必然是数据泄漏,关键是验证场景是否符合实际目标。
| 部署目标 | 可以考虑的外层划分 | 额外检查 |
|---|---|---|
| 同一群体、相近亲缘候选 | 随机个体留出 | 重复记录必须跟随同一个体 |
| 未见过的新家系 | 按家系分组 | 家系ID是否真实代表遗传结构,是否仍有跨组亲缘 |
| 下一世代 | 按出生时间或世代 | 训练信息是否在预测时已经可用 |
| 新环境 | 环境留出或基因型×环境特定划分 | 是预测新基因型、新环境,还是两者同时未见 |
同一数据可以报告多种场景,但应分别命名,不把不同任务的相关排成算法优劣榜。
外层评价,内层选择
先固定外层测试折;仅在外层训练集里进行内层验证,选择lambda、先验、核带宽和特征。选定后,用整个外层训练集重拟合,再预测外层测试集。不同软件使用同一外层折文件。
中心化、缺失填充、表型变换及监督位点筛选应按训练流程拟合并应用到测试。纯基因型的参考构建或允许使用候选基因型的转导场景可以另作设计,但要提前说明;不能与训练限定场景混称同一验证。
常见隐蔽泄漏
- 先对全体表型做GWAS挑标记,再交叉验证GS。
- 同一个体多次测量分别进入训练和测试;或同一材料的不同重复当独立个体。
- 用完整数据算好的EBV、去回归目标或环境校正值作为每个折的训练标签,其中包含测试个体及其未来后代信息。
- 看外层测试表现后反复选模型、删个体,再把同一测试集称为独立验证。
- 为每个测试折单独重新定义遗传基准,再把折间GEBV无条件混合排序。
应交付的验证记录
保存划分ID、随机种子、重复次数、每折训练/测试样本数和共享家系数。报告每折指标及其汇总;小样本或相关个体下,普通独立个体bootstrap可能不合适,可按设计考虑家系或其他独立单位重采样。比较模型尽量使用相同划分上的配对差值。
合成家系数据贯通GS使用外层5折、内层3折;家系模式的两层划分均按家系完成。它展示的是一组人工数据,不给出普遍优胜软件结论。
进一步读数据泄漏与交叉验证、育种值GEBV准确度与可靠度;通用实践见scikit-learn关于数据泄漏的官方说明及分组验证文档。