机器学习的数据清理的具体步骤详解

129 阅读6分钟

数据清理的步骤和技术会因数据集的不同而不同。 Data Cleaning for Machine Learning

让我们准备好清理我们的数据集吧!

更好的数据 > 更高级的算法

数据清理是每个人都在做的事情之一,但没有人真正谈论过。当然,它不是机器学习中 "最性感 "的部分。而且,也没有任何隐藏的技巧和秘密可以揭开。

然而,适当的数据清理可以使你的项目成功或失败。专业的数据科学家通常在这个步骤上花费很大的时间。

为什么呢?因为机器学习中的一个简单事实。

更好的数据胜过更高级的算法。

换句话说,"垃圾 "会让你 "垃圾"。如果你有一个经过适当清理的数据集,即使是简单的算法也能从数据中学习到令人印象深刻的见解。

显然,不同类型的数据将需要不同类型的清理。然而,本课所阐述的系统性方法总是可以作为一个良好的起点。

移除不需要的观察数据

数据清理的第一步是从你的数据集中删除不需要的观察值。具体来说,你要删除重复的不相关的观测值。

Duplicate Observations

重复的观测值

删除重复的观测值是很重要的,因为你不希望它们对你的结果或模型产生偏差。重复的观测值最经常出现在数据收集过程中。

  • 合并来自多个地方的数据集
  • 刮取数据
  • 从客户/其他部门接收数据

Irrelevant Observations

不相关的观察结果

不相关的观察是那些实际上不适合你要解决的具体问题的观察。例如,如果你只为单户住宅建立一个模型,你就不会想在里面看到公寓的观察结果。

这也是审查你的探索性分析图表的好时机。你可以看一下分类特征的分布图,看看是否有任何不应该出现的类。在工程特征之前检查不相关的观测值可以为你在以后的工作中节省很多麻烦。

修复结构性错误

数据清理的下一个桶涉及修复结构性错误。结构性错误是那些在测量、数据传输或其他类型的"不良内务 "中出现的错误

例如,你可以检查错别字不一致的大写字母。 这主要是对分类特征的关注,你可以看一下你的柱状图来检查。

这里有一个例子。

Structural Errors Before

正如你所看到的。

  • 'composition''Composition' 都指的是同一个屋顶,但被记录为两个不同的类别
  • 'asphalt''Asphalt'
  • 'shake-shingle''Shake Shingle'
  • 最后,'asphalt,shake-shingle' 可能也可以被归入'Shake Shingle'

在我们替换了错别字和不一致的大写字母后,类的分布就变得干净多了。

Fix Structural Errors After

最后,检查是否有误标的类,或真正应该是相同的独立类。它们没有出现在上面的数据集中,但是要注意缩写,例如。

  • 例如,如果’N/A’’Not Applicable’ 作为两个独立的类出现,你应该将它们合并。
  • 例如:’IT’’information_technology’ 应该是一个单一的类。

过滤不需要的异常值

离群值会给某些类型的模型带来问题。例如,线性回归模型比决策树模型对离群值更不稳定。一般来说,如果你有合法的 理由去除一个异常值,它将有助于你的模型的性能。

然而,异常值在被证明有罪之前无罪的。 你不应该仅仅因为它是一个 "大数字 "而删除一个异常值。 这个大数字可能对你的模型非常有参考价值。

我们怎么强调都不为过:你必须有一个很好的理由来删除一个离群点,比如可疑的测量值不太可能是真实数据。

Remove Outliers

他说得很有道理。

处理缺失数据

在应用机器学习中,缺失数据是一个具有欺骗性的棘手问题。

首先,要明确的是,你不能简单地忽略数据集中的缺失值。 你必须以某种方式处理它们,因为大多数算法不接受缺失值,这是非常实际的原因。

"常识 "在这里是不理智的

不幸的是,最常推荐的两种处理缺失数据的方法实际上是非常糟糕的。在最好的情况下,这些方法往往是无效的。在最坏的情况下,它们会完全破坏你的结果。

它们是

  1. 放弃有缺失值的观察值
  2. 根据其他观测值来估算缺失值。

丢弃缺失值是次优的,因为当你丢弃观察值时,你丢弃了信息。值缺失的事实本身就可能是有信息的。另外,在现实世界中,你经常需要对新的数据进行预测,即使有些特征是缺失的。

代入缺失值是次优的,因为该值原本是缺失的,但你把它填进去了。这也导致了信息的损失,无论你的归因方法多么复杂。即使你建立了一个归因模型,你也只是在强化已经由其他特征提供的模式。

Missing Data Puzzle Pieces

缺少数据就像缺少一块拼图。如果你放弃了它,那就等于假装拼图槽不在那里。如果你把它算进去,那就相当于从拼图的其他地方挤进去一块。

简而言之,你应该始终告诉你的算法,一个值最初是缺失的,因为"缺失 "本身几乎总是有信息的。

那么,你如何才能做到这一点呢?

Label as Missing Puzzle Pieces

关键是要告诉你的算法,这个值原来是缺失的。

缺失的分类数据

处理分类特征的缺失数据的最好方法是简单地将它们标记为’Missing’!

  • 你本质上是为该特征添加了一个新的类别。
  • 这就告诉算法,这个值是缺失的。
  • 这也绕过了没有缺失值的技术要求。

缺失的数字数据

对于缺失的数字数据,你应该标记和填充这些值。

  1. 用一个缺失性的指标变量来标记观察值。
  2. 然后,用0 填充原始缺失值,以满足无缺失值的技术要求。

通过使用这种标记和填充的技术,你基本上可以让算法估计出缺失的最佳常数,而不是仅仅用平均值来填充。

经过适当的数据清理,你会有一个强大的数据集,避免了许多最常见的陷阱。这真的可以让你在以后的工作中避免大量的麻烦,所以请不要急于这一步。

机器学习工作流程中的数据清理步骤就这样结束了。