在数据科学中以正确的方式处理数据

数据挖掘 机器学习
2022-03-06 06:33:30

据我所知,人们说如果我在将数据拆分为训练/测试数据集后对其进行预处理会更正确。我的问题是

1.是不是意味着我们检测数据的缺陷+在拆分后对其进行预处理?如果是/否,为什么?

2.如果我在拆分之前检测数据的缺陷,然后在拆分后对缺陷进行预处理,可以吗?如果是/否,不是,为什么?

1个回答

所有这些方法指南的目标都是避免数据泄露

示例:假设我们要对短消息(例如推文)进行分类。在检查数据时,我们会发现各种表情符号::-), :|, :-/... 在预处理阶段,我们将数据中的所有表情符号替换为特殊标记<smiley>(或更具体的标记)。

  • 如果对整个数据进行检测/替换,则测试集中每次出现的笑脸都会被替换为<smiley>.
  • 如果在训练集上进行检测/替换,即使经过预处理,测试中也可能会留下一些笑脸,因为一些不常见的笑脸并没有出现在训练集中。

在第一种情况下存在数据泄漏:我们修复了测试集中的一些问题,即使这对于实际的新数据来说是不可能的(这里是在训练集中没有看到的笑脸变体)。在第二种情况下,测试集是“不完美的”,即它就像是由“新鲜的”未见过的数据组成的,因此评估会更加现实。

这个例子说明了为什么首先分离数据总是更安全,在训练数据上设计预处理步骤,然后对测试数据应用完全相同的预处理步骤。

在实践中,在某些情况下,对整个数据应用一些通用预处理会更方便。决定取决于任务和数据:有时数据泄漏的风险非常小,可以忽略不计。然而,重要的是要记住,即使是预处理的设计也可能是数据泄漏的来源。