Advertisement

数据预处理|数据清洗与转换的实战技巧

阅读量:

作者:禅与计算机程序设计艺术

数据预处理(Data Preprocessing)是一个非常重要的环节。因为只有经过良好的数据预处理,才能保证后续的机器学习任务的高效、准确性及可靠性。而数据清洗与转换,一般都属于数据预处理的一种子任务,它主要用于对数据进行检查、过滤、转换、标准化等操作。

在数据预处理过程中,往往会遇到各种各样的问题,比如缺失值、异常值、类别不平衡、重复数据、数据类型不一致、空间分布不均衡等等,这些问题可能导致最终训练出的模型在实际应用中出现偏差或无法满足需求。因此,要想提升机器学习模型的性能,就需要充分地了解数据预处理的各种方法,并把这些方法运用到机器学习算法上,提升模型的鲁棒性、泛化能力及效果。

本文将从以下几个方面介绍如何预处理数据:

数据准备:即获取、整理、导入数据,并做适当的特征工程。如对缺失值进行处理、数据的变换、编码方式等;

数据清洗:即删除、修改或合并数据中的无意义或错误的值。如去除异常值、缺失值、重复数据、偏斜类别等;

数据转换:即把数据从一种形式转换成另一种形式。如将文本数据转换成词频向量、将时间序列数据转换成固定长度的连续序列等;

数据标准化:即把数据按照某种规则转化成均值为0、标准差为1的数值形式。如将原始数据缩放到相同的范围内等;

数据归一化:即把数据按某个刻度进行缩放,使其具有零均值和单位方差。如对不同尺寸、比例的图像进行同等处理;

数据集分割:即划分训练集、验证集和测试集,用于模型训练、模型选择、模型评估和超参数优化等。如按照时间序列切分数据、随机划分数据等;

数据采样:即采样过程,用于降低数据大小、降低计算复杂度、增强模型的鲁棒性、泛化能力和效果。如降低采样率、随机取样、数据过采样和欠采样等;

数据增强:即对原始数据进行数据生成的方式,增加模型的多样性。如通过旋转、翻转、裁剪、模糊、加噪声等方式生成更多的样本;

模型部署:即部署模型前的最后一步,对模型的参数、结构等进行最后的调整。如通过网页上传模型或模型微调等方式发布模型。

通过这些方法,可以帮助读者提升机器学习模型的性能,实现更好的业务效果。

2.基本概念术语说明

2.1 数据预处理步骤简介

数据预处理通常包括以下几个阶段:

数据加载(Loading Data): 将原始数据读取到内存中,确保其完整性和正确性。

数据探索(Exploring Data): 通过各种分析手段了解数据,识别出潜在的问题和异常值,并基于此作进一步处理。

数据清洗(Cleaning Data): 对数据进行各种检查、处理和清洗,确保其质量和准确性。

数据转换(Transforming Data): 把数据从一种形式转换成另一种形式。

数据标准化(Scaling Data): 把数据按照某种规则转化成均值为0、标准差为1的数值形式。

数据归一化(Normalization): 把数据按某个刻度进行缩放,使其具有零均值和单位方差。

数据集分割(Splitting Data): 把数据划分为多个子集,用于模型训练、模型选择、模型评估和超参数优化。

数据采样(Sampling Data): 采样过程,用于降低数据大小、降低计算复杂度、增强模型的鲁棒性、泛化能力和效果。

数据增强(Enriching Data) : 对原始数据进行数据生成的方式,增加模型的多样性。

2.2 数据类型

在数据预处理过程中,经常会遇到以下几种数据类型:

  • 结构化数据(Structured Data): 有结构化的表格或者文件,每个字段代表一个特定的属性,例如客户信息表,商品销售数据。
  • 非结构化数据(Unstructured Data): 不太符合表格结构的数据,例如文本文档、音频文件、视频流。
  • 半结构化数据(Semistructured Data): 在结构化和非结构化之间存在一定的不可避免性,例如HTML页面或者XML文件。
  • 多模态数据(Multimodal Data): 表示不同来源、类型、维度的数据集合,例如图像、文本、视频、音频。

结构化数据是最容易理解、处理和使用的,它以二维表格的形式呈现,每行为一个记录,每列为一个属性,属性类型一般有整数、浮点数、字符串、日期等。结构化数据需要遵循关系型数据库设计原则,即一张表代表一个实体对象,其中的字段定义了其属性。

非结构化数据也称“海量”数据,存储在磁盘、网络、或云端。除了以数据文件形式存在之外,还有一些文件存储在关系数据库中,另外一些文件直接作为数据交换协议传输。非结构化数据经常难以处理,因为没有固定的模式和标准,且处理起来比较麻烦。对于非结构化数据的处理通常依赖于数据挖掘的方法,包括文本分析、知识图谱等。

半结构化数据可以理解为结构化数据和非结构化数据之间的交叉点,其包含的是富文本、JSON、XML等格式的数据。半结构化数据可以解析成结构化数据,再进行进一步的处理。对于半结构化数据的处理通常需要借助第三方库或工具进行处理。

多模态数据是指不同来源、类型、维度的数据集合,例如图像、文本、视频、音频,它们之间往往存在共性,例如同一张图片可能由视觉特征和语义特征组成,不同的文本则可能包含不同风格的表达。多模态数据经常是综合分析的重要来源,并且涉及到的技术越来越多。

2.3 数据预处理常用方法

(一)缺失值处理

缺失值(Missing Value)是指数据集中某些变量没有被赋值或记录,造成的数据不完整或异常。通常,缺失值的处理可以有三种策略:

删除该条记录:如果某条记录中存在缺失值,则完全丢弃该条记录。

用替代值填充缺失值:对于缺失值较少的变量,可以使用其均值、众数或其他统计量进行填充。但若缺失值较多,则应该考虑采用更加复杂的插补或重构方法。

直接忽略缺失值:对于缺失值较多的变量,可以选择直接忽略该变量,这样可能会损失很多信息。但是也可能引入额外的误差,所以这种方法通常只用于特殊场景。

(二)异常值检测和处理

异常值(Outlier)是指数据中明显偏离平均值或期望值的观测值,这些值对于数据集的分析影响甚至超过了正常值。对于异常值的发现和处理,通常可以通过以下两种策略进行:

基于统计量的异常值检测:计算变量的统计量(如均值、方差),对异常值进行判断。

基于距离的异常值检测:基于变量的距离分布,如密度分布、曼哈顿距离等,判定异常值。

对于异常值的处理,通常可以选择直接删除或标记为异常值,也可以采用更复杂的手段(如基于聚类的异常值合并)。

(三)类别型变量编码

类别型变量(Categorical Variable)是指具有分类性质的数据,它的取值可以是类、种、族、科目等。在机器学习过程中,类别型变量一般需要转换为数字表示,这一转换过程称为编码。常用的编码方式包括独热编码、哑编码、倒置编码、顺序编码等。

1. 独热编码(One-Hot Encoding)

独热编码是一种简单有效的编码方式,将每个类别分别映射成为一个二进制值,然后将所有二进制值连接起来形成新的变量。独热编码可以解决两类问题:

变量之间的互相影响:如果两个变量之间存在着一定联系,那么使用独热编码之后,他们的系数就不会为0,这就是对变量之间的相关性进行建模;

缺失值的补全:当某些类别的值缺失时,可以用0填充。

2. 替代编码(Dummy Coding)

替代编码也是一种简单有效的编码方式,将每个类别替换为一组指标变量。也就是说,每个类别都对应一个虚拟的指标,当该类别为1时,其他所有的指标都为0。这种编码方法可以方便地处理类别数目比较多的问题。

3. 倒置编码(Inversion Coding)

倒置编码是将每个类别变量与其反映类别数目的指标变量进行关联。这种编码方法能够捕获类别间的依赖关系,同时又能够很好地处理缺失值。

4. 顺序编码(Ordered Coding)

顺序编码是将每个类别按照其出现的先后顺序编码。这种编码方法利用了类别的排序特性,能够很好地表示类别间的序关系。

(四)文本特征抽取

文本特征抽取(Text Feature Extraction)是指根据文本数据提取有意义的特征,用于进一步的数据分析和模型训练。其中,文本数据经常存在很多噪声,如停用词、词干提取、文本摘要等,这些文本处理方法都可以提取出有用的特征。文本特征抽取的主要方法包括词袋模型、词嵌入模型、主题模型等。

1. 词袋模型

词袋模型(Bag of Words Model)是一种简单有效的特征抽取方法。它将每个文档转换成一个向量,向量的每一维对应一个单词,向量的元素数量等于词汇表的大小。向量的元素的值就是这个词在当前文档中出现的次数。

2. 词嵌入模型

词嵌入模型(Word Embedding Model)是通过统计词汇的上下文关系来得到单词的表示。它利用了词的语义信息,能够捕获到短语、句子、文档的全局信息。目前,词嵌入模型主要有两种:基于概率语言模型和神经网络语言模型。

3. 主题模型

主题模型(Topic Model)是一种自动提取文本主题的模型。它对大规模文本数据进行分析,找出文本中隐藏的主题结构。主题模型包含了词分布假设(Latent Dirichlet Allocation,LDA)、潜在狄利克雷分布(Latent Semantic Analysis,LSA)等。

(五)数据变换

数据变换(Data Transformation)是指将原始数据按照某种规则变换成其他形式的过程。通常包括以下几种:

编码转换:将标签变量从文本形式转换为数值形式。

归一化转换:将数据按照某个刻度进行缩放,使其具有零均值和单位方差。

离散化转换:将连续变量离散化成类别变量。

分桶转换:将连续变量分桶,比如将年龄分成青少年、成熟人群、老年人群。

反馈回路转换:通过反馈回路,控制系统输出信号,达到稳态。

(六)数据标准化

数据标准化(Standardization)是指对数据进行统一化处理,让数据服从正态分布,这对于许多统计分析和机器学习算法都十分重要。数据标准化通常包括如下三个步骤:

中心化(Mean Normalization):将数据减去均值,使数据中心落在坐标轴原点;

缩放(Scaling to unit variance):将数据除以其标准差,使得数据方差为1;

逆变换(Undoing the transformation):将标准化后的数据还原到原始的形式。

(七)数据归一化

数据归一化(Normalization)是指对数据进行线性变换,使数据符合指定的分布。数据归一化通常包括以下三个步骤:

Min-Max Scaling(最小最大值缩放):将数据缩放到[0,1]区间,使数据处于同一量纲;

Mean normalization(均值规范化):将数据减去均值,使数据中心落在坐标轴原点;

Z-score standardization(Z分数标准化):将数据除以标准差,并转换为标准正太分布。

(八)数据集分割

数据集分割(Dataset Splitting)是指将数据集划分成不同的子集,用于模型训练、模型选择、模型评估和超参数优化等。数据集分割通常包括以下几个步骤:

按时间顺序切分:按照时间的先后顺序将数据集分割成不同的子集,比如训练集、验证集、测试集;

随机划分:将数据集随机划分成不同的子集,比如训练集、验证集、测试集;

按比例切分:按照比例将数据集划分成不同的子集,比如训练集、验证集、测试集;

按类别分割:将数据集划分成不同类别的子集,比如男生、女生、游戏爱好者等。

(九)数据采样

数据采样(Data Sampling)是指从已有的数据集中按照一定规则采样出一个子集。通过数据采样可以降低数据集的规模,从而获得更稳定的结果。数据采样通常包括以下几种方法:

欠采样(Under Sampling):对样本个数少的类别进行欠采样,使得训练集中每个类别的样本数目相似;

过采样(Over Sampling):对样本个数多的类别进行过采样,使得训练集中每个类别的样本数目相似;

放回采样(Replacment Sampling):对每一个样本,有一定概率不进行采样,以达到不丢失数据机会的目的。

(十)数据增强

数据增强(Data Augmentation)是指通过对已有数据进行合成或生成的方式,增加数据集的大小,弥补数据集的不足。数据增强可以提高模型的泛化能力和鲁棒性。数据增强通常包括以下几种方法:

随机旋转:对图像、声音、视频等进行随机旋转,使数据在一定角度上发生扭曲;

随机裁剪:对图像、声音、视频等进行随机裁剪,使数据在一定尺寸上发生变化;

随机缩放:对图像、声音、视频等进行随机缩放,使数据在一定程度上发生变形;

图像水平翻转:对图像进行水平翻转,扩充数据集;

颜色抖动:对图像进行颜色抖动,增强数据集的多样性。

全部评论 (0)

还没有任何评论哟~