机器学习工作流程(第2部分) - 数据预处理

本译文自EROGOLhttp://www.erogol.com 发表的 ML WORK-FLOW (Part2) - Data Preprocessing ,文中版权、图像代码的数据均归作者所有。为了本土化,本文略作修改。

尽量保持我承诺的日期。下面详细介绍了我提出的机器学习工作流程的第一步讨论,即数据预处理。

数据预处理是一个重要的步骤,其中的主要目的是提高原始数据质量,然后再深入研究技术问题。即使这个步骤涉及到非常简单的任务,但是如果没有这个,你可能会在最后看到错误的结果。

我也在工作流程中说过,数据预处理是ML以外的统计工作。也就是是说,数据预处理需要在做出任何可能的决定之前进行良好的数据推理和分析。这些组件不是ML课程的主题,而是一个统计数据。因此,如果你的目标是在整个ML上,不要忽视统计数据。

我们可以将数据预处理分成5个不同的部分;

  1. 数据集成
  2. 数据清理
  3. 数据转换
  4. 数据离散化
  5. 数据减少

数据集成

将来自不同来源的不同格式数据转换成之后要使用的统一格式。这些不同的来源可能被称为不同的数据库,甚至有可能是excel表。为了这一简单的想法,出现了几套不同的商业软件,即ETL(提取 - 转换 - 加载)工具。这些工具使您能够从单一视角到达不同的来源,并将数据与已定义的均一化数据流合并。令人遗憾的是,数据集成本身递归地包括其他标题。更明确地说,您的集成流程的任何子组件都可以包含我们在下面解释的更多数据预处理过程之一。

根据你的问题,在前期就定义数据格式是很重要的 。如果您对方便的格式不太确定,请去调查一下。否则,整合起来就很困难。特别是对于大量的数据以及下一步操作,将会耗费非常长的时间。

数据清理

填写数据,属性或类别标签中的缺失值。最简单的方法是使用其他行的均值或中值或相同类实例的均值或中值。(一般而言,中位值对异常值是稳健的)。也许另一种方法是像类标签一样训练一个预测缺失值的模型。

识别异常值并消除噪音。异常值和嘈杂的实例正在欺骗AdaBoost等许多ML算法。因此,您需要在进一步的处理之前纠正数据。甚至,在删除异常值后,需要再次重复所有预处理,例如,如果通过包含异常值来填充缺失的值,这些也是错误的,需要重新定义。

对于异常移除,一种常见的方法是对数据进行聚类并移除可怜的聚类。此外,您可以使用特定的异常值检测算法(如我的宝贝RSOM 或LOF)。另一个选择是适合回归模型,将数据对齐直到这个去除异常值。

正确的数据不一致。这需要一般的专业知识。您应该咨询您的业务合作伙伴或客户。

数据转换

标准化 - 缩放 - 标准化。根据您的进一步步骤(如特征提取),您可能需要将数据转换为不同的比例或域。这对于最终获得高质量的判别特征非常重要。特别是,如果你使用自动化的特征提取算法,一般来说,他们期望某些数据格式,然后又做不到。

构建新的属性。例如,如果您拥有客户的体重和身高值,那么添加BMI作为新的属性是非常合理的。这样的属性构造在领域中需要一定程度的经验和统计知识,但是却带来了很大的性能提升。

数据离散化

在某些情况下,对于特定的ML算法,连续值是有问题的。即使我试图用合理的算法来避免数据的离散化,特别是对于推理而言,离散化是非常必要的。

使用无监督的等分装箱。不用做任何详细的考虑就将数字数据划分成相同的大小或范围,

有监督的离散化。通过对值进行排序并通过在值之间观察类分布来放置值之间的铰链来使用类边界。您也可以使用熵度量来定义分区。现在,您定义了一些候选值分区集合,但是您可以选择具有最佳熵值的最佳信息增益值。我的选择是使用具有连续值的决策树从构建的树的节点定义值分区。

数据减少

减少实例的数量。有时候,你更喜欢使用数据的子集而不是整个数据。在这种情况下,抽样模式适合您。尽管有许多不同的抽样方法,但我更喜欢最天真的随机抽样。如果我需要更多强大的结果与多个子集,我更喜欢使用引导与替换。

减少属性的数量。 请不要试图用巧克力的消费情况来预测一个国家的诺贝尔奖的数量(这是真实的故事)。

虽然这需要一定程度的专业知识,但是你依然可以把不相关的数据从数据中删除。如果您犹豫不决,请等待特征选择。

作为一个侧面说明,ML中还有一个子议题,如何将复杂的问题分解一个个子问题,以便通过简单的子问题解决整个问题。

原文链接:http://www.erogol.com/ml-work-flow-part2-data-preprocessing/

原文作者:EROGOL

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏深度学习

机器学习教材中的 7 大经典问题

一、神经网络不宜超过三层 这是最有名错误判断,现在的教科书几乎已经不再有这样的结论,但如果看15年、20年前的机器学习教科书,会有一个很有趣的结论:神经网络不能...

3348
来自专栏IT杂记

Geohash介绍及针对具体需求的改良

1. Geohash介绍 1.1. 应用场景 POI(Point of Interest):某个地图点周围的美食娱乐等的搜索; 热点分析:统计某个地图区域的热度...

2169
来自专栏机器之心

学界 | 杜克大学NIPS 2017 Oral论文:分布式深度学习训练算法TernGrad

机器之心报道 作者:吴欣 为了提高分布式深度学习的速度和效率,杜克大学「进化智能研究中心」陈怡然和李海教授的博士生温伟提出了 TernGrad 分布式训练算法...

3409
来自专栏深度学习

机器学习中的七大经典问题

这是最有名错误判断,现在的教科书几乎已经不再有这样的结论,但如果看15年、20年前的机器学习教科书,会有一个很有趣的结论:神经网络不能超过三层。这和我们现在说的...

39212
来自专栏机器学习算法原理与实践

强化学习(三)用动态规划(DP)求解

    在强化学习(二)马尔科夫决策过程(MDP)中,我们讨论了用马尔科夫假设来简化强化学习模型的复杂度,这一篇我们在马尔科夫假设和贝尔曼方程的基础上讨论使用动...

633
来自专栏腾讯架构师的专栏

给 AI 换个“大动力小心脏”之 OCR 异构加速

我们设计了多FPGA芯片协同 的异构加速架构,能快速适配 业务OCR模型变化,检测识别 整体性能为GPU P4 130%, 处理延时仅为P4的1/10。

1911
来自专栏机器之心

业界 | 英伟达官方解读:Volta Tensor Core GPU实现AI性能新里程碑

1645
来自专栏AI科技评论

浅谈神经网络训练方法,Deepmind更青睐正向传播

深度学习的神经网络训练方法有除了典型的反向传播,也有被Deepmind青睐的正向传播,以及以BAM网络背后的双向传播,本文将对这些训练方法进行简单的探讨,如果你...

3376
来自专栏新智元

陈天奇团队新研究:自动优化深度学习工作负载

20810
来自专栏cloudskyme

一文搞懂HMM(隐马尔可夫模型)

什么是熵(Entropy) 简单来说,熵是表示物质系统状态的一种度量,用它老表征系统的无序程度。熵越大,系统越无序,意味着系统结构和运动的不确定和无规则;反之,...

3618

扫码关注云+社区