概况起来,常遇到的数据存在噪声、冗余、关联性、不完整性等。本章将考虑这些问题,在使用算法学习之前,首先需要对数据进行分析,根据数据的不同情况,采用不同的方法对数据进行预处理,数据预处理常见的方法如下:
1. 数据清理:主要是指将数据中缺失的值补充完整、消除噪声数据、识别或删除离群点并解决不一致性。主要是达到如下目标:将数据格式标准化,异常数据清除,错误纠正,重复数据的清除。
2. 数据集成:主要是将多个数据源中的数据进行整合并统一存储。
3. 数据变换:主要是指通过平滑聚集,数据概化,规范化等方式将数据转换成适用于数据挖掘的形式。
4. 数据归约:数据挖掘时往往数据量非常大,因此在少量数据上进行挖掘分析就需要很长的时间,数据归约技术主要是指对数据集进行归约或者简化,不仅保持原数据的完整性,并且数据归约后的结果与归约前结果相同或几乎相同。
这些数据处理技术在数据挖掘之前使用,然后才能输入到机器学习算法中进行学习。这样大大提高了数据挖掘模式的质量,降低实际挖掘所需要的时间
0x00数据集成
我们日常使用的数据来源于各种渠道,有的是连续的数据,有的是离散数据、有的是模糊数据,有的是定性数据,有的是定量数据。数据集成就是将多文件或者多数据库中的异构数据进行合并,然后存放在一个统一的数据库中进行存储。在进行数据的集成过程中,一般需要考虑以下问题:
实体识别
主要指数据源来源不同,其中多的概念定义不一样
同名异意:数据源A的某个数据特征的名称和数据源B的某个数据特征是一样的但是表示的内容不一样。
异名同义:数据源A的某个特征的名称和数据源B的某个特征名称不一样,但是表达的内容不一样。
单位不统一:不同地数据源记录的单位不一样,比如统计身高、一个数据源以m为单位,一个使用英尺
冗余属性
指数据中存在冗余,一般分为一下两种
同一属性出现多次,比如两个数据源都记录每天的最高温度和最低温度,当数据集成时,就出现了两次。
同一属性命名不一致而导致数据重复
数据不一致
编码使用的不一致问题和数据表示的不一致问题,比如旧的***号15位,而新的时18位
0x01数据变换
数据变换是指将数据转换或统一成适合于机器学习的形式。就像人类学习一样,需要将采集的外部数据转换成我们可以接收的形式。
由于实际过程中采集的各种数据,形式多种多样,格式也不一致,这些都需要采用一定的数据预处理,使得他们符合机器学习的算法使用。
数据变换常用方法如下:
使用简单的数学函数对数据进行变换
对采集的原始数据使用各种简单的数学函数进行转换,常见的函数包括平方、开方、取对数、差分运算等(压缩变大或者压缩变小)。
归一化
特征归一化也叫做数据无量纲化,主要包括:总和标准化、标准差标准化、极大值标准化、极差标准化。这里需要说明的是,基于树的方法是不需要进行特征归一化的,例如GBDT,bagging、boosting等等,而基于参数的模型或基于距离的模型,则都需要进行特征归一化。
总和标准化
总和标准化处理后的数据介于(0,1)之间,并且它们的和为1。总和标准化的步骤和公式也非常简单:分别求出各聚类要素所定义的数据的总和,以各要素的数据除以该要素的数据总和,即:
经过总和标准化处理后所得的新数据满足: