数据预处理(完整步骤)
原文:http://dataunion.org/5009.html
一:为什么要预处理数据?
(1)现实世界的数据是肮脏的(不完整,含噪声,不一致)
(2)没有高质量的数据,就没有高质量的挖掘结果(高质量的决策必须依赖于高质量的数据;数据仓库需要对高质量的数据进行一致地集成)
(3)原始数据中存在的问题:
不一致 —— 数据内含出现不一致情况
重复
不完整 —— 感兴趣的属性没有
含噪声 —— 数据中存在着错误、或异常(偏离期望值)的数据
高维度
二:数据预处理的方法
(1)数据清洗 —— 去噪声和无关数据
(2)数据集成 —— 将多个数据源中的数据结合起来存放在一个一致的数据存储中
(3)数据变换 —— 把原始数据转换成为适合数据挖掘的形式
(4)数据规约 —— 主要方法包括:数据立方体聚集,维度归约,数据压缩,数值归约,离散化和概念分层等。
(5)图说事实
三:数据选取参考原则
(1)尽可能富余属性名和属性值明确的含义
(2)统一多数据源的属性编码
(3)去除唯一属性
(4)去除重复属性
(5)去除可忽略字段
(6)合理选择关联字段
(7)进一步处理:
通过填补遗漏数据、消除异常数据、平滑噪声数据,以及纠正不一致数据,去掉数据中的噪音、填充空值、丢失值和处理不一致数据
四:用图说话,(我还是习惯用统计图说话)
数据清洗的路子:刚拿到的数据 —-> 和数据提供者讨论咨询 —–> 数据分析(借助可视化工具)发现脏数据 —->清洗脏数据(借助MATLAB或者Java/C++语言) —–>再次统计分析(Excel的data analysis不错的,最大小值,中位数,众数,平均值,方差等等,以及散点图) —–> 再次发现脏数据或者与实验无关的数据(去除) —–>最后实验分析 —-> 社会实例验证 —->结束。
一 数据清理
试图填充缺失值,光滑噪声并识别离群点,并纠正数据中的不一致。
1)处理缺失值方法:
a.忽略元祖,挖掘任务涉及分类任务中如果缺少类标号时通常这样做
b.人工填写缺失值,量大时行不通
c.使用一个全局常量填充缺失值,简单但不可靠
d.使用属性的均值填充缺失值
e.使用与给定元组属同一类的所有样本的属性均值
f.使用最有可能的值填充缺失值,可以用回归,使用贝叶斯形式化的基于推理的工具或决策树归纳确定,是流行的做法。
2)数据光滑技术:噪声是被测量的变量的随机误差或方差
a.分箱,分箱方法通过考察数据的“近邻”(即周围的值)来光滑有序数据的值,有序值分布到一些“桶”或箱中。由于分箱方法考察近邻的值,因此进行局部光滑。几种分箱技术:用箱均值光滑、用箱边界光滑、用箱中位数光滑。
b.回归:可以用一个函数(如回归函数)拟合数据来光滑数据。线性回归涉及找出拟合两个属性(或变量)的“最佳”线,是的一个属性可以用来预测另一个。多元线性回归是线性回归的扩展,其中涉及的属性多于两个,并且数据拟合到一个多维曲面。
c.聚类:通过聚类检测离群点
3)数据清理作为一个过程的方法:过程的第一步是偏差检测,有大量商业工具帮助我们进行偏差检测,数据清洗工具、数据审计工具、数据迁移工具、ETL工具。新的数据清理方法强调加强交互性,如Potter‘s Wheel,集成了偏差检测和数据变换。
二 数据集成和变换
1)数据集成:数据分析任务多半涉及数据集成。数据集成合并多个数据源中的数据,存放在一个一致的数据存储(如数据仓库)中。这些数据源可能包括多个数据库、数据立方体或一般文件。数据集成有三个主要问题:a.模式集成和对象匹配,实体识别问题:来自多个信息源的现实世界的等价实体如何才能匹配?元数据可以帮助避免模式集成的错误。b.冗余:有些冗余可以被相关分析检测到。通过计算属性A,B的相关系数(皮尔逊积矩系数)来判断是否冗余;对于离散数据,可通过卡方检验来判断两个属性A和B之间的相关联系。c.数据值冲突的检测与处理
2)数据变换:将数据转换或统一成适合于挖掘的形式。涉及如下内容:
a.光滑:去掉数据的噪声,包括分箱,回归和聚类
b.聚集:对数据进行汇总或聚集。这一步通常用来为多粒度数据分析构造数据立方体
c.数据泛化:使用概念分层,用高层概念替换底层或“原始”数据。
d.规范化:又称为归一化,feature scaling特征缩放。将属性数据按比例缩放,使之落入一个小的特定区间。规范化方法:
1.最小-最大规范化:v‘=[(v-min)/(max-min)]*(new_max-new_min)+new_min
2.z-score规范化(或零均值规范化):v‘=(v-属性A的均值E)/属性A的标准差∽
3.小数定标规范化:v‘=v/10的j次方,j是使Max(|v‘|)<1的最小整数
e.属性构造(或特征构造):可以构造新的属性并添加到属性集中,以帮助挖掘过程。
三 数据归约
数据集可能非常大!面对海量数据进行复杂的数据分析和挖掘将需要很长的时间。数据归约技术可以用来得到数据集的归约表示,它小很多,但仍接近保持原数据的完整性。数据归约策略如下:
1)数据立方体聚集:聚集操作用于数据立方体结构中的数据。数据立方体存储多维聚集信息。
2)属性子集选择,参见文本分类概述中特征选择算法
3)维度归约:使用数据编码或变换,以便得到原数据的归约或“压缩”表示。归约分为无损的和有损的。有效的有损维归约方法为:小波变换和主成分分析
4)数值归约:通过选择替代的、‘较小的’数据表示形式来减少数据量
5)离散化和概念分层产生