需要帮助了解数据泄漏

数据挖掘 数据挖掘 特征缩放 k-nn 数据泄露
2022-02-25 10:28:01

我是这个东西的新手,所以如果我的问题很愚蠢,我很抱歉~

我需要帮助了解 X_train 和 X_test 之间的数据泄漏是什么以及它发生的确切时间。我目前正在使用 KNN imputer 填充缺失值的数据集。我需要缩放数据以进行 knn 插补,并且在插补过程之后进行训练-测试-拆分并应用机器学习模型。我读到在缩放期间可能会发生数据泄漏,因此我们应该在拆分后缩放,fit_transform 训练集,并且只转换测试集我不确定在我的情况下这将如何工作,因为我正在缩放数据以能够估算缺失值,并且我稍后实际上到达了训练-测试-拆分阶段。我应该以我做事的方式担心数据泄露吗?

这是代码:

在此处输入图像描述

虽然在这里我在插补后立即进行拆分 + 应用 DT 算法,但我还有其他步骤,例如特征选择,所以直到很久以后我才会到达训练-测试-拆分和决策树部分。

2个回答

当您在训练集中拥有不应该拥有的信息时,就会发生数据泄漏。例如,这可能是训练集中包含在测试集中的信息。一般来说,数据泄漏可以提供一个“好得令人难以置信”的模型,但由于它是使用“欺骗性”信息构建的,所以不可信。在这里找到更多信息

  1. 将数据拆分为训练和测试
  2. 根据训练数据集拟合你的 imputer(使用 just fit)
  3. 使用拟合的 imputer 并在训练数据集中填充缺失值(使用变换)
  4. 根据训练数据集训练你的决策树
现在您已完成训练步骤。开始测试以下
  1. 使用在步骤 2 中训练的 imputer 和 transform 函数来替换测试数据集中的缺失值
  2. 使用经过训练的决策树进行测试预测并评估模型在看不见的测试数据集上的性能

数据应该在一开始就被拆分。正如“unseen”的名称所示,我们在训练模型时不应该使用来自测试数据集的任何信息;否则就是数据泄露。