机器学习进阶文档深度页
数据泄漏
训练或选择流程获得真实预测时不可用的信息,使离线评价虚高。
学习前需要掌握
训练测试边界内容待补充
背景与问题
泄漏模型上线后失效,因为它依赖的隐藏信息不再存在。泄漏分数高并不说明模型能力强。
概念定义
泄漏可来自预处理、特征选择、重复实体、未来特征、测试复用或目标编码进入输入。
直观理解
模型在考试前以任何方式看到了试卷统计、答案线索或重复题。
核心原理
对每个有状态步骤追问“它 fit 了哪些样本”;对每个特征追问“预测时点是否可用”。
数学表达
核心表达
对每个有状态步骤追问“它 fit 了哪些样本”;对每个特征追问“预测时点是否可用”。
变量含义
变量定义与本页概念定义一致,代码中的同名变量保持相同语义。
计算步骤
- 1画出数据流
- 2标出所有 fit
- 3检查时间和实体
- 4将预处理放入 Pipeline
代码对应位置
示例 1数据泄漏 示例:对应文档中的可靠评价或训练流程。
计算与实现步骤
- 1
画出数据流
- 2
标出所有 fit
- 3
检查时间和实体
- 4
将预处理放入 Pipeline
- 5
封存测试集
- 6
进行输入可用性审查
代码实现
示例 1
数据泄漏 示例
数据泄漏 示例
scikit-learn
example_01.py用途:对应文档中的可靠评价或训练流程。
pipeline=make_pipeline(SimpleImputer(strategy="median"),StandardScaler(),LogisticRegression())
scores=cross_val_score(pipeline,X,y,cv=cv)代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
对应文档中的可靠评价或训练流程。
X- 完整特征矩阵,每行一个样本、每列一个特征。
y- 目标标签或连续目标值。
scores- 交叉验证各折的评价分数。
Step 1 · 1–2 行
数据边界和划分方式是代码含义的一部分。
pipeline=make_pipeline(SimpleImputer(strategy="median"),StandardScaler(),LogisticRegression())
scores=cross_val_score(pipeline,X,y,cv=cv)代码与数学原理
减去训练均值并除以训练标准差,对应代码中的 mean/std 或 StandardScaler。
预期输出或运行结果
每折预处理只在训练折拟合,避免常见泄漏。
常见错误 · 5 条
- 不要在测试集上调用 fit 或 fit_transform;测试集只能复用训练参数。
- 全数据标准化
- 全数据特征选择
- 重复用户跨折
- 测试集调参
实际应用
- 实验审计
- 特征审查
常见错误
全数据标准化
全数据特征选择
重复用户跨折
测试集调参
文档来源
07|模型评估与调参原始文档
学习资料/learning_tech/07_evaluation_tuning.md- §10 常见数据泄漏
推荐学习资料
暂未收录相关资料
参考库不会生成虚假资源或无效外部链接。