【问题标题】:Is this important to clean test data?这对清理测试数据很重要吗?
【发布时间】:2020-02-25 10:18:56
【问题描述】:

在训练数据中,我进行了特征工程并清理了我的数据。对测试数据做同样的事情重要吗? 我知道在测试数据中也需要一些基本的修改,如标签编码、依赖/独立特征分割等。但是我们真的需要在进行预测之前清理测试数据吗?

【问题讨论】:

  • 你能说得更具体一点吗?我们在谈论什么类型的数据?清洁是什么意思?
  • 清理意味着去除异常值、填充缺失值、规范化数据等

标签: python machine-learning data-science data-cleaning


【解决方案1】:

我无法用“是”或“否”回答您,所以让我从您的所有训练/测试/开发集上的数据分布开始。 根据 Andrew ng 教授的说法,测试集和开发集应该来自同一个分布 (Youtube),但训练集可以来自不同的分布 (Check it here),而且这通常是一件好事。 有时清理训练集非常有用,并且还应用了一些基本操作来加速训练过程(例如不清理的归一化),但我们谈论的训练数据可以而且应该有成千上万个示例,所以有时你可以不要手动检查您的数据并清理它,因为它可能根本不值得; 我是什么意思?好吧,让我给你举个例子:

假设您正在构建一个猫分类器(Cat 或 no-Cat),并且您的准确率为 90%,这意味着您有 10% 的错误。 在进行错误分析(Check it here) 之后你会发现:

  1. 6% 的错误是由错误标记的图像引起的(无猫图像
    标记为猫,反之亦然)。
  2. 44% 是由图像模糊造成的。
  3. 50% 是由标记为猫的 Big Cats 图像引起的。 在这种情况下,您将花费所有时间修复标签错误的图像,这将在最佳情况下提高您的性能 (0.6%)(因为它是整个 10% 错误的 6%),所以不值得纠正错误标记的数据。

我举了一个关于错误标记数据的示例,但总的来说,我指的是任何类型的清理和修复。

但清理测试集中的数据可能更容易,如果可能的话,应该对测试/开发集进行清理,因为您的测试集将真实地反映系统的性能时间数据。 您在问题中提到的操作不是很干净,而是用于加快学习过程或使数据适合算法,并且应用它们取决于数据的形状和类型(图像、语音记录、单词。 .),以及您要解决的问题。

最后作为答案,我可以告诉你:

  • 三者中数据的形式和形状应该相同 集(因此应用标签编码应该适用于整个数据,而不仅仅是 用于训练数据,也用于输入数据 预测,因为它会改变输出标签的形状)。
  • 要素的数量应始终相同。
  • 任何更改应用于数据的(形状、形式、特征数量...)的操作都应应用于您将在系统中使用的每个样本。

【讨论】:

    【解决方案2】:

    这取决于:

    规范化数据:如果您对训练数据进行了规范化,那么可以,按照您对训练数据进行规范化的方式对测试数据进行规范化。但请注意不要重新调整您在训练数据上调整的任何参数。

    填充缺失值:同上。将测试数据视为训练数据,但不要重新调整任何参数。

    去除异常值:可能不会。测试集的目的是估计你的模型在看不见的数据上的表现。所以去除异常值可能不是一个好主意。

    一般来说:只对您的测试数据执行您可以/也将在应用您的模型时对看不见的数据执行的操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-05
      • 1970-01-01
      • 2013-04-25
      • 2016-07-31
      相关资源
      最近更新 更多