什么是数据泄露
![什么是数据泄露](https://static001.geekbang.org/infoq/fd/fdbce1d64128b8a07d509236c1ff9dd7.png)
这里和大家说一个概念:data leakage(数据泄露)。这里数据泄露并不指的是隐私数据的泄露,而是特指机器学习中数据(训练数据和验证数据)存在异常情况。
1.什么是 data leakage
Kaggle 比赛会有些参赛队员因为找个某到魔性特征(magic feature)而获得冠军,magic feature 的存在可能就预示参赛数据存在 data leakage。
data leakage 的外在表现: 你训练的模型的准确率异常的好,例如达到 100%。但是实际线上预测的效果却很差。所以当你的模型表现超出你的预期的时候,不要高兴的太早,请认真分析下你的数据。
data leakage 的分类:
预测 data leakage
数据验证 data leakage。
2. 预测 data leakage
模型预测是构建一个因到果的映射过程,这种 leakage 一般发生在模型的数据使用了由【果】发生后产生的一些特征,这些特征和【果】有非常强的相关,预测出来的模型就会变成有【果】到【果】的映射。例如,我们要预测【是否是糖尿病患者】这个【果】,肥胖程度、体力活动程度、饮食结构、病毒感染等可能都是正常的【因】。但是如果你用了【是否打过胰岛素】这个作为【因】,就会出现这种 leakage, 因为糖尿病患者确诊后都会去打胰岛素,存在倒果为因的现象。在模型部署的时候你会发现这些特征你根本获取不到。
3.数据验证 data leakage
这种 leakage 一般是由于在拆分训练集和测试(验证)集存在不当处理导致的。
例如你在做了预处理操作(如归一化,缺失值补充等)之后再拆分数据,这个时候训练集和验证集就可能存在某种关联,验证集一定程度上就缺失完全独立的假设,训练出来的模型可能就会在验证集有很好的分数,但是线上部署则不然。
4.如何避免 data leakage
如果你的模型的性能出奇的好,停下来分析下数据看看是不是存在 data leakage
仔细分析下那些和预测目标强相关的特征
尽量保证验证集和模型训练的训练的独立性,特别是交叉验证的时候。
参考:https://www.kaggle.com/dansbecker/data-leakage
![](https://static001.geekbang.org/infoq/f2/f2c9c7e540641ee8f1d054adb8ea29c5.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
版权声明: 本文为 InfoQ 作者【AIWeker-人工智能微客】的原创文章。
原文链接:【http://xie.infoq.cn/article/0de8e82fc8ddfd1305c6c4da2】。文章转载请联系作者。
评论