什么是数据泄露?
在机器学习模型的开发过程中,技术错误是常见的。即使是无意中的错误,也可以通过检测来发现。因为大多数错误会直接反映在模型的性能上,所以它们的影响很容易被察觉。然而,数据泄漏的影响更加隐蔽。除非模型被部署到公众中,否则很难察觉到它的存在。因为模型在现实场景中面临的情况是看不见的。
数据泄露可能会给建模者带来一种错觉,即通过两个数据集中的极高评估指标获得了模型一直在寻找的最佳状态。然而,一旦将模型投入生产,它的性能不仅可能比测试运行时更差,而且还需要花费更多时间来检查和调整算法。作为机器学习建模者,在开发和生产阶段可能会面临自相矛盾的结果。
数据泄漏的原因和影响
这种信息的引入是无意的,它是在数据收集、汇总和准备过程中产生的。它通常是微妙而间接的,因此很难检测和消除。在训练过程中,模型会捕获这种额外信息与目标值之间的相关性或强关系,以学习如何进行预测。然而,一旦释放出来,这些额外信息并不可用,导致模型的失败。
在数据聚合和准备阶段,有时会应用一些统计转换,如插补和数据缩放,这些转换利用统计数据分布。因此,如果我们在对训练和测试集进行处理之前,对整个数据集应用这些修正,就不能得到相同的结果。在这种情况下,测试数据的分布将影响训练数据的分布。
举个例子,我们可以将时间序列数据视为包含某个特征的100个值的数据序列。如果我们将这个序列分成2个相同含有50个值的组,那么这两个组的平均值和标准偏差等统计属性将不会相同。在时间序列预测任务中,我们可以应用k折交叉验证来评估模型的性能。这个过程可能会在验证集中引入过去的数据实例,在训练集中引入未来的实例。
同样,在实际生产环境中,没有数据泄漏的机器学习模型通常比测试结果更好,并且受到数据泄漏的影响较小。