机器学习中的数据泄露(Data Leakage)

1.主要参考了这篇博客:

(311条消息) Kaggle教程 机器学习中级7 数据泄露_李乾文的博客-CSDN博客

我觉得可以用一句不太严谨的大白话来解释就是:

数据泄露就是使用了未来信息(对于时序预测任务)。

1、介绍

数据泄露是指,在训练数据中包含目标信息,但在预测时没有可用的类似数据。这会使得训练数据(或者验证数据)效果比较好,但实际生产(预测)时效果特别差。

也就是说,泄漏导致模型看起来很精确,但用模型做出来的决策却很不准确。

主要有两种泄露类型:target leakage(目标泄露) 和 train-test contamination(训练测试污染)

细节请跳转到链接中学习。我在这里主要对训练测试污染进行解释:

这段描述的是训练测试污染的问题,它指的是在进行机器学习模型的训练和验证时,如果不正确地处理训练数据和验证数据之间的关系,会导致模型在验证阶段表现良好,但在实际应用中表现不佳的情况。

举个例子来说明,假设你在进行数据预处理时,对整个数据集进行了缺失值填充操作,然后再将数据集划分为训练集和验证集。这样做的结果是,验证集中的数据在填充缺失值时已经受到了训练集数据的影响,从而使得模型在验证阶段获得了较好的性能指标。然而,当你使用该模型进行实际预测时,由于无法获取到验证集的信息,填充缺失值的方式将与训练过程中的方式不同,导致模型无法正确处理新数据的缺失值情况,从而导致性能下降。

为了避免训练测试污染的问题,建议在进行数据预处理时,将预处理步骤包含在模型训练的pipeline中。这样,在进行交叉验证时,每次将训练集和验证集划分后,都会对训练集进行独立的预处理操作,确保模型在验证阶段不会受到训练集的影响。

总之,正确处理训练数据和验证数据之间的关系,避免训练测试污染是确保模型能够在实际应用中有效泛化的重要步骤。

猜你喜欢

转载自blog.csdn.net/weixin_43332715/article/details/131690381