· Xiaojing Yang · Machine Learning · 3 min read
ENPipelines 与 Data Leakage
为什么预处理应该放进验证 pipeline,而不是在划分前对全数据提前处理。
核心观点
Data leakage 是评估数据的信息偷偷进入了训练决策。
1. 泄漏问题
Data leakage 会让弱模型看起来很强。经典错误是在 split 或 cross-validation 之前,就用全数据拟合预处理步骤。
还没学习任何东西
分开 train 和 validation
Scaler、vectorizer、imputer
使用 train-fitted 步骤
没有 validation 信息泄漏
2. 泄漏例子
| 泄漏来源 | 为什么危险 |
|---|---|
| split 前 scaling | validation 分布影响训练变换 |
| CV 前 feature selection | validation labels 指导特征选择 |
| 重复文档 | 模型见过近似测试样本 |
| 时间泄漏 | 用未来信息预测过去 |
| target leakage | 特征直接编码标签 |
3. sklearn 例子
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score
pipe = Pipeline([
("scale", StandardScaler()),
("clf", LogisticRegression(max_iter=1000)),
])
scores = cross_val_score(pipe, X, y, cv=5)4. AI/NLP 连接
NLP 里的泄漏可能来自去重失败、用全语料学习 preprocessing vocabulary、话题重叠、prompt examples 过度接近测试项,或者 LLM 预训练中的 benchmark contamination。
Pipeline 思维
每一个会学习的预处理步骤都应该在 training fold 内部。
研究思维
每一个评估分数都需要 leakage audit。
总结
Pipeline 不只是让代码更整洁,它是在保护评估。
面试回答模板
如果面试问到这个概念,我会分四层回答:
- 先给短定义;
- 再讲直觉;
- 指出常见失败模式;
- 最后连接到真实评估或部署决策。