· Xiaojing Yang · Machine Learning · 3 min read

EN

Pipelines 与 Data Leakage

为什么预处理应该放进验证 pipeline,而不是在划分前对全数据提前处理。

核心观点

Data leakage 是评估数据的信息偷偷进入了训练决策。

1. 泄漏问题

Data leakage 会让弱模型看起来很强。经典错误是在 split 或 cross-validation 之前,就用全数据拟合预处理步骤。

安全 pipeline
原始数据
还没学习任何东西
Split / CV fold
分开 train 和 validation
只在 train 上拟合预处理
Scaler、vectorizer、imputer
转换 validation
使用 train-fitted 步骤
评估
没有 validation 信息泄漏

2. 泄漏例子

泄漏来源为什么危险
split 前 scalingvalidation 分布影响训练变换
CV 前 feature selectionvalidation 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 不只是让代码更整洁,它是在保护评估。

面试回答模板

如果面试问到这个概念,我会分四层回答:

  1. 先给短定义;
  2. 再讲直觉;
  3. 指出常见失败模式;
  4. 最后连接到真实评估或部署决策。

参考资料

Share:
Back to Blog

Related Posts

View All Posts »