数据泄露
数据泄露是指,在训练数据中包含目标信息,但在预测时没有可用的类似数据。这会使得训练数据(或者验证数据)效果比较好,但实际生产(预测)时效果特别差。
有两种泄露类型:target leakage(目标泄露) 和 train-test contamination(训练测试污染)
当测试集上的预测结果准确率特别高,比如95%以上时,要检查一下是否数据泄露了。
target leakage
预测包含未来才知道的数据时,会发生目标泄露。
train-test contamination
比如在切分训练集 / 测试集之前,就使用了如均值插值法处理缺失值,那么训练集中其实就已经包含了测试集的信息。
例子
生病与吃药
用是否吃药,来预测是否会得病。
**数据泄露:**生病的才会吃药,所以用是否吃药来预测是否得病贼准。
原料消耗与产值
用当月皮革使用量,来预测鞋带的需求量。
**数据泄露:**咋一看没有直接联系,其实,皮革使用量 -> 鞋子产量 -> 鞋带需求量,这是确定的关系。预测未来一个月时,你根本拿不到当月的皮革使用量。
正确的做法,应该把皮革使用量,换成皮革预算。
病人与感染率
用手术数据中医生的感染率,来预测病人的感染率。
这里既有数据泄露,又有训练测试污染。