如何理解数据科学的中的数据泄露(Data Leakage)

数据科学竞赛中有时会出现这样的奇特景观:某只队伍,靠着对极个别feature的充分利用,立即将对手超越,成功霸占冠军位置,而且与第二名的差距远超第二名与第十名的差距。然而,这些feature却不是在因果关系上顺利解释预测值的‘因’,反而是预测值的‘果’。

1. Data Leakage定义

存在和利用这种倒‘因’为‘果’的feature的现象,叫数据竞赛中的Data Leakage

这里的Data Leakage 跟其他场合说的数据安全数据泄漏完全不一样。从字面上理解,我们说的Data Leakage不是数据泄漏,而是因果关系的纰漏,是由于数据准备过程中出现的失误,使模型沿着有纰漏的,甚至是颠倒的因果关系进行预测,但得到极好的预测结果。

2. Data Leakage案例

Data Leakage 在数据科学竞赛中时常发生。

INFORMS 2010 Data Mining Challenge (预测患者是否有肺炎),Kaggle里面的the IJCNN 2011 Social Network Challenge (预测人们在社交网络中的关系类型),已经男性前列腺癌数据中,都存在不同程度的Data Leakage。

案例1

在男性前列腺癌数据中,有个feature叫PROSSUG,代表着这个患者是否接受过前列腺的手术,这个feature很难说是病人患前列腺癌的‘原因’(患心脏病的原因是接受过心脏手术?),而更像是一个标记,当然与病人是否患有前列腺癌极度相关。依靠着这样的feature训练出来的模型,肯定能够得到很好的预测结果,但对实际了解男性前列腺癌的成因,没有一点帮助。

Data Leakage不仅在竞赛中会发生,在实际工作中也会出现。

案例2

Chris老师就举过一个非常经典的例子。在处理电信用户流失的时候,用原有的数据集轻轻松松就可以把AUC达到0.99以上。这让人非常警惕。于是Chris老师仔细查看了一下模型和数据,原来数据中有一个权重极高的feature是“3个月内的缴费纪录”。很多流失用户的账户内,这个feature的值是0。再进一步,他跟会计核实了一下,在会计记账中,这个feature 代表的是用户已经流失后的三个月的缴费纪录,那肯定就是0了。这是典型的因果关系颠倒

3. Data Leakage的原因

以此我们可以看出,Data Leakage 基本都是在准备数据的时候,或者数据采样的时候出了问题,误将与结果直接相关或存在颠倒因果关系的feature纳入了数据集。这样的纰漏,比较难以发现。

这真是让人欢喜让人忧。

竞赛选手们肯定希望自己能够找到Data Leakage, 这样排名就可以大幅度提升。但对于竞赛主办方,或者实际工作中的数据科学家,则要千方百计识别Data Leakage,要不然比赛会被引入歧途,还会影响日常工作质量。

4. 必须重视因果性

我们再把讨论往前推一步:大数据,是要相关性,还是因果性?

某数据应用学院专门组织过讨论,集中批判一本畅销书《大数据时代》。这本书的主要观点就是,在大数据时代,要放宽对因果性的要求,充分利用相关性去挖掘数据的价值。我们上面的案例分析再一次证明,这样的观点是危险的。

而且,在数据科学家的Skillset中,为什么除了计算机技能统计分析外,还要加一个“行业知识”?这其实是要求数据科学家能够利用行业知识来判断数据模型中的因果关系是否有价值,还是落脚到因果关系上。

5、令一种直观的理解

数据泄露就是说用了不该用的数据,比如

  1. 在训练模型时,利用了测试集的数据、信息
  2. 在当前使用了未来的数据
  3. 在交叉验证进行调参时,使用了验证集的信息参与模型建立

具体说下第三点,比如对特征进行标准化,正确的方法应该是在训练集上标准化,然后应用到验证集上,而非先标准化,再划分验证集。即:标准化为,(数值-均值)/标准差,这个“均值”和“标准差”应该是训练集的“均值”和“标准差”。“数值”是测试集里的数值。

猜你喜欢

转载自blog.csdn.net/anshuai_aw1/article/details/83989117