数据预处理概念的分享(一)

数据预处理

数据

记录数据

究竟何为数据呢?在IT领域,数据指的是数值数据,实体以0和1这两个二进制数表示。数据有各种各样的形式,主要包括以下3种。

  • 由数值和字符等构成的记录数据
  • 图片、语音和视频等多媒体数据
  • 表示数据之间关联的图数据

记录数据是一组数据,每组数据又包含多个数据类型不同的值。如图1-1所示,图中用实线框起来的一行(row)就是一条记录,各种类型的数据以某种单位被收录其中,比如图中的记录就收录了与一次预订信息相关的不同类型的数据。而图中用虚线框起来的一列(column)则是由相同类型的数据组合而成的记录。

记录数据示例

{%}

以前数据分析的对象大多是记录数据,但随着深度学习的问世,之前难以处理的多媒体数据也应用得越来越广泛。这是因为,深度学习可以自动实现一直以来由人进行的预处理操作,并且可以用较低的成本实现高精度的模型。不过,要想通过深度学习实现自动化的预处理,必须先准备大量的数据。假如对于某些问题,我们无法准备足够的数据1,那么就很难使用深度学习。此外,多媒体数据通常比记录数据大,计算成本容易变得很高,从商业的角度来看,这也是一个有待解决的问题。因此,虽然多媒体数据的应用日益广泛,但许多机构仍然优先使用记录数据进行分析。

针对需要大量数据的问题,目前人们正在研究迁移学习等模型重用方法以及只需较少数据的高效学习方法。

图数据曾在社会服务领域备受期待,然而除了选择强影响力人物等个别情况外,图数据的应用场景很少,目前还没有广泛运用到现实世界中。

因此,数据分析的主要对象至今仍是记录数据。但是,由于深度学习也可以应用于记录数据,所以有些人认为今后将不再需要对记录数据进行预处理。然而,预处理工作恐怕暂时不会被完全取代,因为记录数据除了用于构建作为深度学习主要用例的预测模型之外,还用于其他很多数据分析场景。另外,记录数据也一样难以满足自动化所需的数据量要求,在很多情况下,基于人为经验和领域知识(domain knowledge)的预处理构建的预测模型,其精度更高。

综上所述,记录数据的预处理未来仍将是数据分析中的一项重要技术。

数据类型

数据类型是指字符串或数值等数据格式。数据类型有很多种,看上去一样的数据,其数据类型不一定相同。

例如,代表性别的列中有一个表示男性的数据。如果该列的数据类型是字符串,那么该数据会被保存为“男性”这一字符串的二进制数据;如果该列的数据类型是分类型,那么数据的保存形式又会大不相同。分类型数据分为两部分:一部分是保存可能的数据值模式的主数据(全部保存在一列中);另一部分是表示数据值在主数据中对应哪个数据的索引数据(按每个数据值保存)。比如在表示性别的列中,主数据是[0 =男性, 1 =女性],其中的“男性”是用索引号0表示的,它是一个数值型数据。

在此之前,我们需要了解一下行和列的概念,这是因为行的预处理和列的预处理在处理内容上有很大不同。当以行为单位执行预处理时,处理的是类型不同的数据;当以列为单位执行预处理时,处理的却是类型相同的数据。

预处理的作用

预处理中有一个“预”字,是“预先”的意思,大家或许会把它想象成一项准备工作。没错,数据分析的预处理就是为数据分析进行的准备工作。那么数据分析究竟需要什么样的准备工作呢?所谓数据分析,大致可以分为3种类型。

  1. 创建特征、表和图
  2. 机器学习(无监督学习)
  3. 机器学习(有监督学习)

在详细介绍上述内容之前,这里先简单介绍一下机器学习。

机器学习

机器学习是指在输入数据后,根据算法进行分析,从而提取规则、知识表示和判断标准等的过程。具体来说,机器学习可以输出预测模型或输入数据的分组(聚类)标准。通过输出的预测模型,我们可以对未知数据进行预测,或者对给定的数据进行分组。机器学习技术有很多种,如多元回归分析、决策树、K-means和深度学习等。

无监督学习和有监督学习

无监督学习指的是没有监督数据的机器学习,而有监督学习指的是有监督数据的机器学习。监督数据又称为学习数据或训练数据,下文我们将统一称为训练数据。使用训练数据对机器学习模型进行训练,并将新数据输入到经过训练的机器学习模型中,即可使模型输出对应于新输入数据的预测结果。在测量模型的精度时,这部分新输入的数据称为测试数据。此外,在使用机器学习模型时输入的数据目前还没有通用的名称,将其称为“应用数据”。在有监督学习中,训练数据和应用数据的不同之处在于前者带标签,后者不带标签。在把训练数据用于训练机器学习模型时,需要给出标签,而应用数据本来就没有标签,我们需要将其输入机器学习模型,从而预测出对应的标签。测试数据则和训练数据一样带有标签,但我们只在测试模型精度时使用测试数据,无须像应用数据那样将其输入到机器学习模型中。在无监督学习中,因为没有预测对象,所以训练数据和应用数据没有差别。另外,我们将输入到机器学习模型中的列称为解释变量或特征量(feature)。

如上所述,在无监督学习中,输入训练数据后,模型会输出新数据。例如,聚类等无监督学习会根据输入的训练数据计算数据之间的距离,然后根据距离对数据进行分类,最终输出与各个输入数据对应的类别编号。如果要对应用数据执行跟训练数据同样的转换,那么可以通过在已经训练好的无监督学习模型中输入应用数据来实现。而有监督学习是通过训练数据训练机器学习模型,然后在训练好的模型中输入应用数据,从而输出与应用数据相对应的预测结果。比如,多元回归分析等有监督学习模型就是利用训练数据,训练用于预测的线性函数参数,然后在线性预测模型中输入应用数据,从而输出与每个应用数据对应的预测值。图1-2对无监督学习和有监督学习进行了汇总。

无监督学习和有监督学习

{%}

用于数据分析的3种预处理

开头提到了3种类型的数据分析,下面就来介绍一下这3种数据分析对应的预处理工作的目的和内容。

用于“1.创建特征、表和图”的预处理

此类预处理旨在准备可以进行特征计算或轻松转换为表和图的数据。数据必须具有所需的全部列,并且具有所需范围的、按照易于处理的单位进行聚合的行。假设你的公司经营着多家商店,你肯定想知道每家商店的月平均销售额和最大销售额。对于此类聚合分析,可以像这样进行预处理:为每家商店创建月销售额记录,从而轻松获取想要了解的信息。此外,通过准备每月不同年龄的顾客数等与销售额相关的特征,我们还可以很轻松地统计出销量与特征之间的关系。

用于“2.无监督学习”的预处理

此类预处理的目的也在于准备数据,只不过准备的是拥有无监督学习模型所需的解释变量的数据。和上一条一样,准备的数据要包含所需的列和所需范围的行。不仅如此,还需要根据机器学习模型的种类将这些数据转换成适合机器学习模型处理的数据类型。例如,把“性别”列从字符串数据转换为分类型数据之后,机器学习模型才能认识到“性别”列只有男性和女性这两种值。此外,在进行聚类时,我们需要计算数据之间的距离,如果不同列的数据值差异较大,则某个列的数据值会对距离计算结果产生较大影响。为解决这一问题,我们需要采用归一化方法进行预处理,将列值的范围对齐。

用于“3.有监督学习”的预处理

此类预处理的目的在于准备有监督学习模型所需的训练数据、测试数据和应用数据。执行与应用数据相同的处理,再加上预测的标签数据,即可生成训练数据和测试数据。另外,训练数据和测试数据本质上是相同的数据,所以我们可以对准备好的数据进行拆分,从而得到训练数据和测试数据。

与前面一样,这里也需要根据机器学习模型的种类进行预处理,从而将数据转换成适合机器学习模型处理的数据类型。假设有一个逻辑回归模型,其输入是性别和年龄,输出是关于用户对广告的反应的预测。逻辑回归模型是线性函数的线性模型,其实就是对线性函数施加对数变换,将线性模型的连续输出映射到0和1的二值输出。在该逻辑回归模型中,当选择性别和年龄作为输入时,能呈现出“年龄越大越容易受广告影响”“女性更容易受广告影响”等趋势,但无法呈现出“年龄越接近30岁越容易受广告影响”“30多岁的女性更容易受广告影响”等趋势。因此,必须进行预处理,将年龄数据转换为分类型数据,或者将年龄和性别组合成新的分类特征值。

综上所述,预处理工作的目的主要有3类,由于所需数据因后续处理的不同而不同,所以采用的预处理方法也有所不同。预处理的种类比较多,我们可以按照如下步骤选取:首先,明确数据分析的目的,判断用于实现该目的的分析属于上面3种预处理中的哪一种;然后,结合数据和所用机器学习模型的特性,确定所需的预处理方法。此外,我们需要完成的预处理工作中也会包含一些常用的基本的预处理,大多数预处理工作可以通过组合基本的预处理来实现。

预处理的流程

为了让大家掌握预处理的流程,我们根据处理对象将预处理分为以下两类。

  • 对数据结构的预处理
  • 对数据内容的预处理
对数据结构的预处理

对数据结构的预处理是指对多行数据及其全部属性列进行的处理操作。数据预处理的前期阶段通常涉及大量数据操作,比如提取特定数据、连接数据,或者通过特定规则将多行数据聚合为一行。下面是几个具体例子。

  • 通过随机采样随机提取行
  • 把购买记录和产品主数据以产品ID为主键连接,生成包含产品信息的购买记录
  • 为有监督学习模型拆分训练数据和测试数据,由于关于用户对广告的反应的数据较少,所以通过过采样增加数据
对数据内容的预处理

对数据内容的预处理是指针对每行中的数据值执行的处理操作。在处理内容方面,这类预处理与对数据结构的预处理不同,它是可以针对每一行独立进行处理的小规模数据操作,因此通常在数据预处理流程的后半部分执行,我们也经常通过改变条件反复对其进行调整。比如,将表示日期和时间的列转换为表示月份的列,或者通过数值列的组合计算来生成新的数值列。下面是几个具体例子。

  • 将表示年龄的数值转换为表示年代的、具有10个区间的分类型数据

  • 将表示日期的数据转换为表示星期的数据

  • 通过两点的经纬度计算两点间的距离

预处理的步骤

前面说过,根据处理对象的不同,预处理可分为两类。下面,我们基于这一点介绍一下预处理的大致步骤。

如上一节所述,预处理工作会因后续数据分析的内容而异。虽然预处理种类繁多,但也存在一些典型模式和步骤。

预处理的典型模式

{%}

在典型模式中,我们首先要通过提取目标数据减少数据量。如果还没有提取目标数据就先连接了主数据或对数据内容进行了转换,那么那些原本不需要处理的数据也会被施加预处理,这会导致计算成本增加。当然,如果需要根据连接主数据后的数据值或样本量筛选目标数据,那么把提取目标数据的操作放到后面也是可以的。

在提取目标数据后,要先对数据进行连接或聚合,从而得到用于分析的数据。然后,对数据内容进行预处理。

如果将数据用于聚合或BI(Business Intelligence,商业智能)工具的输入信息,那么只需进行最低程度的数据内容转换(如转换数据类型等)即可完成预处理;如果将数据用作机器学习模型的输入信息,则需要根据模型的特性进行各种各样的预处理。此外,因为我们还需要根据机器学习模型的结果多次添加或更改数据,所以数据预处理的工作最好放在完成数据添加或更改之后的最后阶段进行。

如果是为有监督学习做准备的预处理,则还需要将准备好的数据拆分为训练数据和测试数据。而应用数据可以免去这项处理,只要进行和训练数据、测试数据相同的预处理即可。

推荐参考书籍:数据预处理从入门到实战

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值