近来由于工作的原因,结合过往的经历和相关资料,总结了数据预处理常用的流程和方法。
(2)没有高质量的数据,就没有高质量的挖掘结果(高质量的决策必须依赖于高质量的数据;数据仓库需要对高质量的数据进行一致地集成)
(3)原始数据中存在的问题:
不一致—— 数据内含出现不一致情况,在编码或是命名上存在差异
重复
不完整—— 感兴趣的属性缺少属性值或仅包含聚集数据
含噪声—— 数据中存在着错误、或异常(偏离期望值)的数据
高维度
(4)数据质量的多维度度量
精确度、完整度、一致度; 可信度,高附加值,可访问性等等
1. 数据清洗(DataCleaning):数据清洗的目的不只是要消除错误、冗余和数据噪音。其目的是要将按不同的、不兼容的规则所得的各种数据集一致起来。 ---- 去噪声和无关数据
2. 数据集成(DataIntegration)是将多文件或多数据库运行环境中的异构数据进行合并处理,解决语义的模糊性。该部分主要涉及数据的选择、数据的冲突问题以及不一致数据的处理问题。---- 将多个数据源中的数据结合起来存放在一个一致的数据存储中
3. 数据变换(DataTransformation):是找到数据的特征表示,用维变换或转换来减少有效变量的数目或找到数据的不变式,包括规格化、规约、切换和投影等操作。---- 把原始数据转换成为适合数据挖掘的形式
4. 数据规约(DataReduction):是在对发现任务和数据本身内容理解的基础上,寻找依赖于发现目标的表达数据的有用特征,以缩减数据模型,从而在尽可能保持数据原貌的前提下最大限度的精简数据量。其主要有两个途径:属性选择和数据抽样,分别针对数据库中的属性和记录 。---- 压缩数据
(2)统一多数据源的属性编码
(3)去除唯一属性
(4)去除重复属性
(5)去除可忽略字段
(6)合理选择关联字段
通过填补遗漏数据、消除异常数据、平滑噪声数据,以及纠正不一致数据,去掉数据中的噪音、填充空值、丢失值和处理不一致数据
数据清洗的路子:刚拿到的数据 —-> 和数据提供者讨论咨询 —–> 数据分析(借助可视化工具)发现脏数据 —->清洗脏数据(借助MATLAB或者Java/C++语言) —–>再次统计分析(Excel的dataanalysis不错的,最大小值,中位数,众数,平均值,方差等等,以及散点图) —–> 再次发现脏数据或者与实验无关的数据(去除)—–>最后实验分析 —-> 社会实例验证 —->结束。
1)处理缺失值方法:
a.忽略元祖,挖掘任务涉及分类任务中如果缺少类标号时通常这样做
b.人工填写缺失值,量大时行不通
c.使用一个全局常量填充缺失值,简单但不可靠
d.使用属性的均值填充缺失值
e.使用与给定元组属同一类的所有样本的属性均值
f.使用最有可能的值填充缺失值,可以用回归,使用贝叶斯形式化的基于推理的工具或决策树归纳确定,是流行的做法。
一般说来,处理空缺数据的方法可以分为两大类。一类是数据删除,即在分析中忽略那些包含空缺值的数据记录。此方法的缺点在于忽略某些原始数据可能导致数据发生偏离;另一类是填充空缺值,这类填充方法在统计学领域已有大量研究并且发展出多种填充方法,如:使用与给定元组属同一类的所有样本的平均值、中位值填充空缺值,或者采用默认值进行填充
对于判定为异常值的字段,如果值分布比较均匀,使用平均值、中位值替换,当然对于较分散,或记录数据较多,可以删除一定数量的记录,但当要删除的记录数占总记录数的比重较大时建议不要删除这些记录,否则可能影响将来的数据挖掘
去掉大量重复记录对于数据挖掘是非常有益的,数据中的重复记录包括两种情况:1)记录完全性同,2)可能是同一对象实体的不同表现形式,它们的某些字段表示形式可能不同。
针对以上两种情况,检测出的重复记录可用不同方法处理:对于完全相同的记录,可以把一条作为正确的,删除其它重复的记录;对于同一对象实体的不同表现形式而形成重复记录的情况,可以选择特征属性进行判定,如果某些特征属性相同,就可以认为是重复记录,也可以先修正表示形式不同的字段的内容,归结为完全重复的记录,再进行处理,对于这种情况,两条记录是否重复需要通过特征字段值的匹配来决定。
2)处理噪声数据:
噪声:一个测量变量中的随机错误或偏差
引起不正确属性值的原因:
a.数据收集工具的问题
b.数据输入错误
c.数据传输错误
d.技术限制
e.命名规则的不一致
处理方法:
a.分箱,分箱方法通过考察数据的“近邻”(即周围的值)来光滑有序数据的值,有序值分布到一些“桶”或箱中。由于分箱方法考察近邻的值,因此进行局部光滑。几种分箱技术:用箱均值光滑、用箱边界光滑、用箱中位数光滑。
分箱:分箱方法是一种简单常用的预处理方法,通过考察相邻数据来确定最终值。所谓“分箱”,实际上就是按照属性值划分的子区间,如果一个属性值处于某个子区间范围内,就称把该属性值放进这个子区间所代表的“箱子”内。把待处理的数据(某列属性值)按照一定的规则放进一些箱子中,考察每一个箱子中的数据,采用某种方法分别对各个箱子中的数据进行处理。在采用分箱技术时,需要确定的两个主要问题就是:如何分箱以及如何对每个箱子中的数据进行平滑处理。
分箱的方法:有4种:等深分箱法、等宽分箱法、最小熵法和用户自定义区间法。
统一权重,也成等深分箱法,将数据集按记录行数分箱,每箱具有相同的记录数,每箱记录数称为箱子的深度。这是最简单的一种分箱方法。
统一区间,也称等宽分箱法,使数据集在整个属性值的区间上平均分布,即每个箱的区间范围是一个常量,称为箱子宽度。
用户自定义区间,用户可以根据需要自定义区间,当用户明确希望观察某些区间范围内的数据分布时,使用这种方法可以方便地帮助用户达到目的。
分箱过程:
(1)首先排序数据,并将它们分到不同的箱子中
(2)然后按箱的平均值平滑、按箱中值平滑、按箱的边界平滑等
数据平滑方法:按平均值平滑、按边界值平滑和按中值平滑。
(1)按平均值平滑
对同一箱值中的数据求平均值,用平均值替代该箱子中的所有数据。
(2)按边界值平滑
用距离较小的边界值替代箱中每一数据。
(3)按中值平滑
取箱子的中值,用来替代箱子中的所有数据。
b.回归:可以用一个函数(如回归函数)拟合数据来光滑数据。线性回归涉及找出拟合两个属性(或变量)的“最佳”线,是的一个属性可以用来预测另一个。多元线性回归是线性回归的扩展,其中涉及的属性多于两个,并且数据拟合到一个多维曲面。
几种发现异常的方法:
1. 基于契比雪夫定理的统计学方法:这种方法可以随机选取样本数据进行分析,加快了检测速度,但是这是以牺牲准确性为代价的。
2. 模式识别的方法:基于数据挖掘和机器学习算法来查找异常数据,主要牵涉关联规则算法。
3. 基于距离的聚类方法(聚类分析是一种新兴的多元统计方法,是当代分类学与多元分析的结合。聚类分析是将分类对象置于一个多维空间中,按照它们空间关系的亲疏程度进行分类。通俗的讲,聚类分析就是根据事物彼此不同的属性进行辨认,将具有相似属性的事物聚为一类,使得同一类的事物具有高度的相似性。):这也是数据挖掘中的算法,重点在于它的类的评测标准为Edit距离,来发现数据集中的重复纪录。
4. 增量式的方法:如果数据源允许,我们可以采取随机的方法获取元组。这允许给异常检测算法一个随机元组流的输入。一些异常检测算法对这种输入可以使用增量、统计学方式,可以发现更多的异常。从数据源中获得元组,然后转换之后作为异常检测算法的输入。
异常的清洗过程主要统分为六个步骤:
① 元素化(elementizing):将非标准的数据,统一格式化成结构数据。
② 标准化(standardizing):将元素标准化,根据字典消除不一致的缩写等等。
③ 校验(verifying):对标准化的元素进行一致性校验,即在内容上修改错误。
④ 匹配(matching):在其它记录中寻找相似的记录,发现重复异常。
⑤ 消除重复记录:根据匹配结果进行处理,可以删除部分记录或者多个记录合并为一个更完整信息的记录。
⑥ 档案化(documenting):将前5个步骤的结果写入元数据存储中心。这样可以更好地进行后续的清理过程,使得用户容易理解数据库以及更好地进行切片、切块等操作。
a.模式集成和对象匹配,实体识别问题:来自多个信息源的现实世界的等价实体如何才能匹配?元数据可以帮助避免模式集成的错误。
b.冗余:有些冗余可以被相关分析检测到。通过计算属性A,B的相关系数(皮尔逊积矩系数)来判断是否冗余;对于离散数据,可通过卡方检验来判断两个属性A和B之间的相关联系。
c.数据值冲突的检测与处理
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)离散化和概念分层产生
数据归约的方法: 1.数据立方体聚集:把聚集的方法用于数据立方体。2.维归约:检测并删除不相关、弱相关或冗余属性。3.数据压缩:选择正确的编码压缩数据集。4.数值压缩:用较小的数据表示数据,或采用较短的数据单位,或者用数据模型代表数据。5.离散化和概念分层生成:使连续的数据离散化,用确定的有限个区段值代替原始值;概念分层是指用较高层次的概念替换低层次的概念,以此来减少取值个数。
数据立方体聚集 :是数据的多维建模和表示,由维和事实组成。
维归约:去掉不相关的属性,减少数据挖掘处理的数据量。
属性子集选择的基本方法包括以下几种: 1.逐步向前选择2.逐步向后删除3.向前选择和向后删除结合4.判定树归纳5.基于统计分析的归约
一:为什么要预处理数据?
(1)现实世界的数据是肮脏的(不完整,含噪声,不一致)(2)没有高质量的数据,就没有高质量的挖掘结果(高质量的决策必须依赖于高质量的数据;数据仓库需要对高质量的数据进行一致地集成)
(3)原始数据中存在的问题:
不一致—— 数据内含出现不一致情况,在编码或是命名上存在差异
重复
不完整—— 感兴趣的属性缺少属性值或仅包含聚集数据
含噪声—— 数据中存在着错误、或异常(偏离期望值)的数据
高维度
(4)数据质量的多维度度量
精确度、完整度、一致度; 可信度,高附加值,可访问性等等
二:数据预处理的方法
数据预处理的主要方法有基于粗糙集理论的约简方法;基于概念树的数据浓缩方法;信息论思想和知识发现;基于统计分析的属性选取方法;遗传算法。而常见的数据预处理方法有:数据清洗、数据集成、数据变换和数据归约:1. 数据清洗(DataCleaning):数据清洗的目的不只是要消除错误、冗余和数据噪音。其目的是要将按不同的、不兼容的规则所得的各种数据集一致起来。 ---- 去噪声和无关数据
2. 数据集成(DataIntegration)是将多文件或多数据库运行环境中的异构数据进行合并处理,解决语义的模糊性。该部分主要涉及数据的选择、数据的冲突问题以及不一致数据的处理问题。---- 将多个数据源中的数据结合起来存放在一个一致的数据存储中
3. 数据变换(DataTransformation):是找到数据的特征表示,用维变换或转换来减少有效变量的数目或找到数据的不变式,包括规格化、规约、切换和投影等操作。---- 把原始数据转换成为适合数据挖掘的形式
4. 数据规约(DataReduction):是在对发现任务和数据本身内容理解的基础上,寻找依赖于发现目标的表达数据的有用特征,以缩减数据模型,从而在尽可能保持数据原貌的前提下最大限度的精简数据量。其主要有两个途径:属性选择和数据抽样,分别针对数据库中的属性和记录 。---- 压缩数据
三:数据选取参考原则
(1)尽可能富余属性名和属性值明确的含义(2)统一多数据源的属性编码
(3)去除唯一属性
(4)去除重复属性
(5)去除可忽略字段
(6)合理选择关联字段
通过填补遗漏数据、消除异常数据、平滑噪声数据,以及纠正不一致数据,去掉数据中的噪音、填充空值、丢失值和处理不一致数据
数据清洗的路子:刚拿到的数据 —-> 和数据提供者讨论咨询 —–> 数据分析(借助可视化工具)发现脏数据 —->清洗脏数据(借助MATLAB或者Java/C++语言) —–>再次统计分析(Excel的dataanalysis不错的,最大小值,中位数,众数,平均值,方差等等,以及散点图) —–> 再次发现脏数据或者与实验无关的数据(去除)—–>最后实验分析 —-> 社会实例验证 —->结束。
四:数据清理
试图填充缺失值,光滑噪声并识别离群点,并纠正数据中的不一致。1)处理缺失值方法:
a.忽略元祖,挖掘任务涉及分类任务中如果缺少类标号时通常这样做
b.人工填写缺失值,量大时行不通
c.使用一个全局常量填充缺失值,简单但不可靠
d.使用属性的均值填充缺失值
e.使用与给定元组属同一类的所有样本的属性均值
f.使用最有可能的值填充缺失值,可以用回归,使用贝叶斯形式化的基于推理的工具或决策树归纳确定,是流行的做法。
一般说来,处理空缺数据的方法可以分为两大类。一类是数据删除,即在分析中忽略那些包含空缺值的数据记录。此方法的缺点在于忽略某些原始数据可能导致数据发生偏离;另一类是填充空缺值,这类填充方法在统计学领域已有大量研究并且发展出多种填充方法,如:使用与给定元组属同一类的所有样本的平均值、中位值填充空缺值,或者采用默认值进行填充
对于判定为异常值的字段,如果值分布比较均匀,使用平均值、中位值替换,当然对于较分散,或记录数据较多,可以删除一定数量的记录,但当要删除的记录数占总记录数的比重较大时建议不要删除这些记录,否则可能影响将来的数据挖掘
去掉大量重复记录对于数据挖掘是非常有益的,数据中的重复记录包括两种情况:1)记录完全性同,2)可能是同一对象实体的不同表现形式,它们的某些字段表示形式可能不同。
针对以上两种情况,检测出的重复记录可用不同方法处理:对于完全相同的记录,可以把一条作为正确的,删除其它重复的记录;对于同一对象实体的不同表现形式而形成重复记录的情况,可以选择特征属性进行判定,如果某些特征属性相同,就可以认为是重复记录,也可以先修正表示形式不同的字段的内容,归结为完全重复的记录,再进行处理,对于这种情况,两条记录是否重复需要通过特征字段值的匹配来决定。
2)处理噪声数据:
噪声:一个测量变量中的随机错误或偏差
引起不正确属性值的原因:
a.数据收集工具的问题
b.数据输入错误
c.数据传输错误
d.技术限制
e.命名规则的不一致
处理方法:
a.分箱,分箱方法通过考察数据的“近邻”(即周围的值)来光滑有序数据的值,有序值分布到一些“桶”或箱中。由于分箱方法考察近邻的值,因此进行局部光滑。几种分箱技术:用箱均值光滑、用箱边界光滑、用箱中位数光滑。
分箱:分箱方法是一种简单常用的预处理方法,通过考察相邻数据来确定最终值。所谓“分箱”,实际上就是按照属性值划分的子区间,如果一个属性值处于某个子区间范围内,就称把该属性值放进这个子区间所代表的“箱子”内。把待处理的数据(某列属性值)按照一定的规则放进一些箱子中,考察每一个箱子中的数据,采用某种方法分别对各个箱子中的数据进行处理。在采用分箱技术时,需要确定的两个主要问题就是:如何分箱以及如何对每个箱子中的数据进行平滑处理。
分箱的方法:有4种:等深分箱法、等宽分箱法、最小熵法和用户自定义区间法。
统一权重,也成等深分箱法,将数据集按记录行数分箱,每箱具有相同的记录数,每箱记录数称为箱子的深度。这是最简单的一种分箱方法。
统一区间,也称等宽分箱法,使数据集在整个属性值的区间上平均分布,即每个箱的区间范围是一个常量,称为箱子宽度。
用户自定义区间,用户可以根据需要自定义区间,当用户明确希望观察某些区间范围内的数据分布时,使用这种方法可以方便地帮助用户达到目的。
分箱过程:
(1)首先排序数据,并将它们分到不同的箱子中
(2)然后按箱的平均值平滑、按箱中值平滑、按箱的边界平滑等
数据平滑方法:按平均值平滑、按边界值平滑和按中值平滑。
(1)按平均值平滑
对同一箱值中的数据求平均值,用平均值替代该箱子中的所有数据。
(2)按边界值平滑
用距离较小的边界值替代箱中每一数据。
(3)按中值平滑
取箱子的中值,用来替代箱子中的所有数据。
b.回归:可以用一个函数(如回归函数)拟合数据来光滑数据。线性回归涉及找出拟合两个属性(或变量)的“最佳”线,是的一个属性可以用来预测另一个。多元线性回归是线性回归的扩展,其中涉及的属性多于两个,并且数据拟合到一个多维曲面。
c.聚类:通过聚类检测离群点
几种发现异常的方法:
1. 基于契比雪夫定理的统计学方法:这种方法可以随机选取样本数据进行分析,加快了检测速度,但是这是以牺牲准确性为代价的。
2. 模式识别的方法:基于数据挖掘和机器学习算法来查找异常数据,主要牵涉关联规则算法。
3. 基于距离的聚类方法(聚类分析是一种新兴的多元统计方法,是当代分类学与多元分析的结合。聚类分析是将分类对象置于一个多维空间中,按照它们空间关系的亲疏程度进行分类。通俗的讲,聚类分析就是根据事物彼此不同的属性进行辨认,将具有相似属性的事物聚为一类,使得同一类的事物具有高度的相似性。):这也是数据挖掘中的算法,重点在于它的类的评测标准为Edit距离,来发现数据集中的重复纪录。
4. 增量式的方法:如果数据源允许,我们可以采取随机的方法获取元组。这允许给异常检测算法一个随机元组流的输入。一些异常检测算法对这种输入可以使用增量、统计学方式,可以发现更多的异常。从数据源中获得元组,然后转换之后作为异常检测算法的输入。
异常的清洗过程主要统分为六个步骤:
① 元素化(elementizing):将非标准的数据,统一格式化成结构数据。
② 标准化(standardizing):将元素标准化,根据字典消除不一致的缩写等等。
③ 校验(verifying):对标准化的元素进行一致性校验,即在内容上修改错误。
④ 匹配(matching):在其它记录中寻找相似的记录,发现重复异常。
⑤ 消除重复记录:根据匹配结果进行处理,可以删除部分记录或者多个记录合并为一个更完整信息的记录。
⑥ 档案化(documenting):将前5个步骤的结果写入元数据存储中心。这样可以更好地进行后续的清理过程,使得用户容易理解数据库以及更好地进行切片、切块等操作。
五:数据集成
数据集成:数据分析任务多半涉及数据集成。数据集成合并多个数据源中的数据,存放在一个一致的数据存储(如数据仓库)中。这些数据源可能包括多个数据库、数据立方体或一般文件。数据集成有三个主要问题:a.模式集成和对象匹配,实体识别问题:来自多个信息源的现实世界的等价实体如何才能匹配?元数据可以帮助避免模式集成的错误。
b.冗余:有些冗余可以被相关分析检测到。通过计算属性A,B的相关系数(皮尔逊积矩系数)来判断是否冗余;对于离散数据,可通过卡方检验来判断两个属性A和B之间的相关联系。
c.数据值冲突的检测与处理
六:数据变换
数据变换:将数据转换或统一成适合于挖掘的形式。涉及如下内容: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)离散化和概念分层产生
数据归约的方法: 1.数据立方体聚集:把聚集的方法用于数据立方体。2.维归约:检测并删除不相关、弱相关或冗余属性。3.数据压缩:选择正确的编码压缩数据集。4.数值压缩:用较小的数据表示数据,或采用较短的数据单位,或者用数据模型代表数据。5.离散化和概念分层生成:使连续的数据离散化,用确定的有限个区段值代替原始值;概念分层是指用较高层次的概念替换低层次的概念,以此来减少取值个数。
数据立方体聚集 :是数据的多维建模和表示,由维和事实组成。
维归约:去掉不相关的属性,减少数据挖掘处理的数据量。
属性子集选择的基本方法包括以下几种: 1.逐步向前选择2.逐步向后删除3.向前选择和向后删除结合4.判定树归纳5.基于统计分析的归约
数据压缩:方法分为两类:无损压缩和有损压缩
数值归约常用的方法: 1.直方图2.聚类3.抽样:不放回简单随机抽样、放回简单随机抽样、聚类抽样和分层抽样4.线性回归5.非线性回归