数据科学简介:分数据、结构和数据科学管道(一)大数据应用

来源:互联网 / 作者:SKY / 2018-04-16 15:29 / 点击:
本文探讨了一种用于机器学习的通用数据管道,其中涵盖了数据工程、模型学习和操作。本系列的下一篇文章将探讨使用公有数据集进行预测的两种机器学习模型。

数据是一种商品,但是,如果无法处理数据,数据的价值就值得怀疑。数据科学是一个多学科领域,其目的是从所有形式的数据中提取价值。本文从数据、数据结构以及可用于将数据转换为价值的高级流程方面来探讨数据科学领域。

数据科学是一个流程。这并不是说数据是机械的,缺乏创造力的。但是,当您深入到数据处理的各个阶段,从再加工数据源和清理数据到机器学习及最终的可视化,您就会看到将原始数据转换为洞察过程中涉及到一些独特步骤。

您采用的步骤可能也会有所不同(参见图 1)。在探索性数据分析中,您可能有一个已清理好的、准备导入 R 中的数据集,您将您的结果可视化,但不会将模型部署到生产环境中。在另一个环境中,您可能处理真实的数据,除了数据扩展和准备之外,您还需要一个数据合并和清理流程,然后才能训练您的机器学习模型。

图 1. 数据科学管道

数据科学简介:分数据、结构和数据科学管道(一)

让我们首先分析一下数据科学管道的元素,以了解该流程。

数据及其结构

数据有多种形式,但总体上讲,它可以分为 3 类:结构化、半结构化和非结构化(参见图 2)。结构化数据是组织结构严谨的数据,存在于诸如数据库(或逗号分隔值 [CSV] 文件)之类的存储库中。这类数据可以轻松访问,而且数据的格式使其适用于查询和计算(通过使用结构化查询语言 (SQL) 或 Apache™ Hive™ 等语言)。非结构化数据根本没有任何内容结构(例如音频流或自然语言文本)。介于它们之间的是半结构化数据,这些数据可能包括元数据,或者可通过使用语义标签比非结构化数据更轻松地进行处理的数据。这类数据不是完全结构化的,因为最低级的内容可能仍是需要经过某种处理才有用的数据。

图 2. 数据模型

数据科学简介:分数据、结构和数据科学管道(一)

结构化数据是最有用的数据形式,因为可以直接对它进行处理。根据约略的估计,结构化数据仅占总数据的 20%。全球的大部分数据(80% 的可用数据)是非结构化或半结构化数据。

请注意,定义为非结构化数据的大部分数据实际上都拥有结构(比如一个包含元数据和内容标签的文档),但内容本身缺乏结构,而且无法直接使用。因此,它们被视为非结构化数据。

数据工程

2016 年的一次调查发现,数据科学家花了 80% 的时间来收集、清理和准备要用在机器学习中的数据。剩余 20% 时间花费在使用机器学习算法来挖掘数据或为数据建模上。尽管这是该流程最无趣的部分,但这种数据工程非常重要,而且会影响从机器学习阶段得到的结果的质量。

我将数据工程分为 3 个部分:整理、清理和准备。考虑到此阶段涉及的工作单调乏味,一些人将此流程称为数据再加工。

数据整理

数据整理流程的简单定义是,处理原始数据,让数据可用于数据分析或训练一个机器学习模型。数据工程的这部分可能包括从一个或多个数据集获取数据(并将数据集精简为所需的数据),规范化数据以便从多个数据集合并的数据能够保持一致,并将数据解析到某种结构或存储系统中供进一步使用。考虑来自一个联邦开放数据网站的公有数据集。此数据可能以电子表格文件形式存在,您需要将其导出为更容易被数据科学语言(CSV 或 JavaScript Object Notation)接受的格式。该数据源也可能是一个网站,自动化工具可从中抓取数据。最后,该数据可能来自多个来源,这要求您为结果数据集选择一种通用格式。

这个结果数据集可能需要进行后期处理,以便支持将其导入到分析应用程序中(比如 R Project for Statistical Computing、GNU Data Language 或 Apache Hadoop)。然后,您可以通过数据整理流程来识别、收集、合并和预处理一个或多个数据集,为数据清理做好准备。

数据清理

收集和合并数据集后,下一步是清理数据。未经处理的数据集通常是杂乱的,存在许多常见问题,包括缺少值(或太多值)、糟糕的或错误的分隔符(用于分隔数据)、不一致的记录,或者不够充足的参数。在一些情况下,数据无法修复,因此必须删除数据;在其他情况下,可以手动或自动更正数据。

当数据集的语法正确时,下一步就是确保它的语义也正确。在包含数字数据的数据集中,有一些需要更仔细地检查的异常值。可以通过统计分析,查看均值、平均值,以及标准差来发现这些异常值。搜索异常值是一种辅助的清理方法,旨在确保数据统一且准确。

数据准备

数据工程中的最后一步是数据准备(或预处理)。这一步假设您有一个已清理的数据集,它可能未准备好供机器学习算法进行处理。下面给出了两个可以应用此准备的示例。

在某些情况下,数据规范化可能很有用。通过使用规范化,您可以转换一个输入特征,将数据均匀分布到一个机器学习算法可接受的范围内。此任务可以像线性扩展一样简单(从一个任意的范围,给定一个从 -1.0 到 1.0 的域最小值和最大值)。您也可以应用更复杂的统计方法。数据规范化可以帮您避免在训练过程中卡在局部最优值上(在神经网络环境中)。

另一种有用的数据准备技术是将类别数据转换为数字值。可以考虑这样一个数据集,其中包含一组表示某个特征的符号(比如 {T0..T5})。作为一个字符串,这无法用作神经网络的输入,但可以使用 one-of-K 模式(也称为独热编码)来转换它。

在这种模式中(如图 3 所示),您识别特征的符号数量(在本例中为 6),然后创建 6 个特征来表示原始字段。对于每个符号,都只设置一个特征,这样就可以正确地表示该符号的不同元素。这样做的代价是增加了维度,但通过这么做,可以提供一个更适合机器学习算法的特征矢量。

图 3. 将字符串转换为一个独热矢量

数据科学简介:分数据、结构和数据科学管道(一)

一种替代方法是整数编码(其中 T0 可以为值 0,T1 为值 1,依此类推),但这种方法可能引入表示问题。例如,在实值输出中,0.5 表示什么?

机器学习

在此阶段,您将创建并验证一个机器学习模型。有时,机器学习模型是一款产品,它被部署在应用程序的上下文中来提供某种功能(比如分类或预测)。在其他情况下,机器学习算法只是一种实现目标的方法。在这些情况下,该产品不是经过训练的机器学习算法,而是它生成的数据。

本节将探讨机器学习模型的构造和验证。要进一步了解如何利用数据进行机器学习,请参阅从干净数据集中获取宝贵洞察。

模型学习

阅读延展

1
3