在数据挖掘过程中,数据预处理工作量占到整个过程的60%。
数据清洗
缺失值处理
- 删除记录
- 数据插补
- 不处理
异常值处理
- 删除含有异常值的记录
- 视为缺失值
- 平均值修正
- 不处理
很多情况下,要先分析异常值出现的可能原因,再判断异常值是否应该舍弃,如果是正确数据,可以直接用于数据挖掘。
数据集成
将多个数据源合并存放在一个一致的数据存储(如数据仓库)中的过程。
实体识别
同名异义
异名同义
单位不统一
冗余属性识别
同一属性多次出现
同一属性命名不一致导致重复
数据变换
对数据规范化
简单函数变换
对原始数据进行某些数学函数变换,常用的变换包括平方、开方、取对数、查分运算等。
常用来将不具有正态分布的数据变换成具有正态分布的数据。在时间序列分析中,有时简单的对数变换或者查分运算就可以将非平稳序列转换成平稳序列。
规范化
消除指标之间的量纲和取值范围差异的影响,将数据按照比例进行缩放,使之落入一个特定的区域,便于进行综合分析。
数据规范化对于基于距离的挖掘算法尤为重要。
- 最小-最大规范化:也称离差标准化,对原始数据的线性变换,将数值映射到[0,1]之间。
- 零-均值规范化:经过处理的数值均值为0,标准差为1。
- 小数定标规范化:通过移动属性值的小数位数,将属性值映射到[-1, 1]之间,移动的小数位数取决于属性值绝对值的最大值。
data_n1 = (data - data.min())/(data.max() - data.min()) #最小-最大规范化
data_n2 = (data - data.mean())/data.std() #零-均值规范化
data_n3 = data/10**np.ceil(np.log10(data.abs().max())) #小数定标规范化
连续属性离散化
一些数据挖掘算法,特别是分类算法(ID3,Apriori),要求数据是分类属性形式。需要将连续属性变换成分类属性,即连续属性离散化。
离散化过程
连续属性的离散化就是在数据的取值范围内设定若干个离散的划分点,将取值范围划分为一些离散化的区间,最后用不同的符号或整数值代表落在每个子区间中的数据值。两个主要任务:
- 确定分类数
- 如何将连续属性值映射到这些分类值
常用的离散化方法
- 等宽法
- 等频法
- 基于聚类的方法
属性构造
为了提取更多有用的信息,挖掘更深层次的模式,提高挖掘结果的精度,利用已有的属性集构造出新的属性。
小波变换
小波变换是一种新型的数据分析工具,是近年来兴起的信号分析手段,小波分析的理论和方法在信号处理、图像处理、语音处理、模式识别、量子物理等领域得到越来越广泛的应用,是工具方法上的重大突破。
小波变换可以把非平稳信号分解为表达不同层次、不同频带信息的数据序列,即小波系数。选择适当的小波系数,即完成了信号的特征提取。
- 基于小波变换的特征提取方法
- 小波基函数
小波基函数是一种具有局部支集的函数,并且平均值为0,小波基函数满足ψ(0)=∫ψ(t)dt=0。常用的小波基有Harr小波基,db系列小波基。
- 小波变换
数据规约
- 降低无效、错误数据对建模的影响,提高建模的准确性
- 少量且具有代表性的数据将大幅缩减数据挖掘所需的时间
- 降低存储数据的成本
属性规约
通过属性合并来创建新属性维数,或者直接通过删除不相关的属性(维)来减少数据维数,从而提高数据挖掘的效率、降低计算成本。目标是寻找出最小的属性子集。
逐步向前选择、逐步向后删除和决策树归纳是属于直接删除不相关属性(维)方法。主成分分析是一种用于连续属性的数据降维方法,它构造了原始数据的一个正交变换,新空间的基底去除了原始空间基底下数据的相关性,只需使用少数新变量(主成分)就能够解释原始数据中的大部分变异。
数值规约
通过选择替代的、较小的数据来减少数据量,包括有参数方法和无参数方法两类。有参数方法时使用一个模型来评估数据,只需要存放参数,而不需要存放实际数据,例如回归(线性回归和多元回归)和对数线性模型(近似离散属性集中的多为概率分布)。无参数方法就需要存放实际数据,例如直方图、聚类、抽样(采样)。
- 直方图:将属性值压缩到多个桶中,每个桶是该属性的一个连续区间
- 聚类:将数据元组视为对象,划分成簇,用簇替换实际数据。有效性依赖于簇的定义是否符合数据的分布性质
- 抽样:用比原始数据小得多的随机样本(子集)表示原始数据集。1)s个样本无放回简单随机抽样;2)s个样本有放回简单随机抽样;3)聚类抽样;4)分层抽样
- 参数回归:简单线性模型和对数线性模型可以用来近似描述给定的数据。线性模型对数据建模,使之拟合一条直线。