为何要做数据预处理?真实的数据是非常dirty的。低质量的数据导致低质量的挖掘结果。
什么样的数据就是dirty的呢?不完整、前后不一致、不正确的或含噪声的、冗余、不平衡……
数据质量的三要素:准确性、完整性、一致性
数据清理(data cleaning)通过填写缺失的值,光滑噪声数据,识别或删除离群点,并解决不一致性来“清理”数据。
要注意数据缺失有一种原因是Not Applicable(N/A)
如何处理缺失的数据?
如何处理数据噪声?
分箱(binning):分箱方法通过考察数据的“近邻”(即周围的值)来光滑有序数据值。
这些有序的值被分布到一些“桶”或箱中。由于分箱方法考察近邻的值,因此它进行局部光滑。下图表示了一些分箱技术。在该例中,price数据首先排序并被划分到大小为3的等烦的箱中(即每个箱包含3个值)。对于用箱均值光滑,箱中每一个值都被替换为箱中的均值。例如,箱1中的值4、8和15的均值是9,因此,该箱中的每一个值都被替换为9。类似地,可以使用用箱中位数光滑。
回归(regression):也可以用一个函数拟合数据来光滑数据。这种技术称为回归。线性回归涉及找出拟合两个属性(或变量)的“最佳”直线,使得一个属性可以用来预测另一个。多元线性回归是线性回归的扩充,其中涉及的属性多于两个,并且数据拟合到一个多维曲面。
离群点分析(outlier analyis):可以通过如聚类来检测离群点。聚类将类似的值组织成群或“簇”。直观地,落在簇集合之外的值被视为离群点
离群点vs异常点 异常点一定是离群点,离群点不一定是异常点。
判断离群点?
计算该点离周围点的平均距离,再计算周围点到它周围点的距离,如果大于就说明该点是离群点。
假定你想在分析中使用来自多个数据源的数据。这涉及集成多个数据库、数据立方体或文件,即数据集成(data integration)。代表同一概念的属性在不同的数据库中可能具有不同的名字,导致不一致性和冗余。
包含大量冗余数据可能降低知识发现过程的性能或使之陷入混乱。显然,除了数据清理之外,必须采取措施避免数据集成时的冗余。通常,在为数据仓库准备数据时,数据清理和集成将作为预处理步骤进行。还可以再次进行数据清理,检测和删去可能由集成导致的冗余。
如何把分散在多个数据库中的重复项找出来?
如果把每一条数据与所有数据比较,工作量太大。只维持一个滑动窗口,将每个新进入窗口的项与滑动窗口内的数据去比较就好了。
滑动窗口(局部的比较)---->隐含的假设(高度相似的数据是挨着的)
先用key去排序,再用滑动窗口机制
冗余是数据集成的另一个重要问题。一个属性(例如,年收入)如果能由另一个或另一组属性“导出”,则这个属性可能是冗余的。属性或维命名的不一致也可能导致结果数据集中的冗余。
有些冗余可以被相关分析检测到。给定两个属性,这种分析可以根据可用的数据,度量一个属性能在多大程度上蕴涵另一个。对于标称数据,我们使用χ²(卡方)检验。对于数值属性,我们使用相关系数(correlation coefficient)和协方差(covariance),它们都评估一个属性的值如何随另一个变化。
为分析而选取的数据集是巨大的,这肯定会降低数据挖掘过程的速度。有什么办法能降低数据集的规模,而又不损害数据挖掘的结果吗?”数据归约(data reduction)得到数据集的简化表示,它小得多,但能够产生同样的(或几乎同样的)分析结果。数据归约包括维归约和数值归约。
在维归约中,使用数据编码方案,以便得到原始数据的简化或“压缩”表示。例子包括数据压缩技术(例如,小波变换和主成分分析),以及属性子集选择(例如,去掉不相关的属性)和属性构造(例如,从原来的属性集导出更有用的小属性集)。
在数值归约中,使用参数模型(例如,回归和对数线性模型)或非参数模型(例如,直方图、聚类、抽样或数据聚集),用替代的、较小的数据表示形式替换原数据。
不同特征(属性)的选择是否有利于降低系统的不确定性,从量化的角度来说就是信息增益。特征(属性)的信息增益越大,说明该特征的效能越高。
提高属性的选取速度
注意:选取五个最优的属性,但它们的组合不一定最好
离散小波变换(DWT)是一种线性信号处理技术,用于数据向量X时,将它变换成不司的数值小波系数向量X′。两个向量具有相同的长度。当这种技术用于数据归约时,每个元组看做一个n维数据向量,即x=(x₁,x₂,x₃,…,xn),描述n个数据库属性在元组上的n个测量值。
" 如果小波变换后的数据与原数据的长度相等,这种技术如何能够用于数据压缩?"关键在于小波变换后的数据可以截短。仅存放一小部分最强的小波系数,就能保留近似的压缩数据。例如,保留大于用户设定的某个阈值的所有小波系数,其他系数置为0。这样,结果数据表示非常稀疏,使得如果在小波空间进行计算的话,利用数据稀疏特点的操作计算得非常快。
假设待归约的数据由用n个属性或维描述的元组或数据向量组成。主成分分析(principal components analysis)或PCA(又称Karhunen-Loeve或K-L方法)搜索k个最能代表数据的n维正交向量,其中k≤n。这样,原数据投影到一个小得多的空间上,导致维归约。与属性子集选择(3.3.3节)通过保留原属性集的一个子集来减少属性集的大小不同,PCA通过创建一个替换的、较小的变量集“组合”属性的基本要素。原数据可以投影到该较小的集合中。PCA常常能够揭示先前未曾察觉的联系,并因此允许解释不寻常的结果。
基本过程如下:
(1)对输入数据规范化,使得每个属性都落入相同的区间。此步有助于确保具有较大定义域的属性不会支配具有较小定义域的属性。
(2)PCA计算k个标准正交向量,作为规范化输入数据的基。这些是单位向量,每一个都垂直于其他向量。这些向量称为主成分。输入数据是主成分的线性组合。
(3)对主成分接"重要性”或强度降序排列。主成分本质上充当数据的新坐标系,提供关于方差的重要信息。也就是说,对坐标轴进行排序,使得第一个坐标轴显示数据的最大方差,第二个显示数据的次大方差,如此下去。例如,图3.5显示原来映射到轴x1和x2的给定数据集的前两个主成分Y1和Y2。这一信息帮助识别数据中的组群或模式。
(4)既然主成分根据“重要性"降序排列,因此可以通过去掉较弱的成分(即方差较小的那些)来归约数据。使用最强的主成分,应当能够重构原数据的很好的近似。
PCA可以用于有序和无序的属性,并且可以处理稀疏和倾斜数据。多于二维的多维数据可以通过将问题归约为二维问题来处理。主成分可以用做多元回归和聚类分析的输入。与小波变换相比,PCA能够更好地处理稀疏数据,而小波变换更适合高维数据。
注意对于对于不带标签的数据,降维采用PCA,而对于带标签的数据,降维采用的是线性判别分析(LDA)
用于分析的数据集可能包含数以百计的属性,其中大部分属性可能与挖掘任务不相关,或者是冗余的。遗漏相关属性或留下不相关属性都可能是有害的,会导致所用的挖掘算法无所适从。这可能导致发现质量很差的模式。此外,不相关或冗余的属性增加了数据量,可能会减慢挖掘进程。
属性子集选择通过删除不相关或冗余的属性(或维)减少数据量。属性子集选择的目标是找出最小属性集,使得数据类的概率分布尽可能地接近使用所有属性得到的原分布。
属性子集的选择基本启发式方法包括以下技术:
(1)逐步向前选择:该过程由空属性集作为归约集开始,确定原属性集中最好的属性,并将它添加到归约集中。在其后的每一次迭代,将剩下的原属性集中的最好的属性添加到该集合中。
(2)逐步向后删除:该过程由整个属性集开始。在每一步中,删除尚在属性集中最差的属性。
(3)逐步向前选择和逐步向后删除的组合:可以将逐步向前选择和逐步向后删除方法结合在一起,每一步选择一个最好的属性,并在剩余属性中删除一个最差的属性。
(4)决策树归纳:决策树算法(例如,ID3,C4.5和CART)最初是用于分类的。决策树归纳构造一个类似于流程图的结构,其中每个内部(非树叶)结点表示一个属性上的测试,每个分枝对应于测试的一个结果;每个外部(树叶)结点表示一个类预测。在每个结点上,算法选择“最好”的属性,将数据划分成类。
回归和对数线性模型可以用来近似给定的数据。在(简单)线性回归中,对数据建模,使之拟合到一条直线。例如,可以用以下公式,将随机变量y(称做因变量)表示为另一随机变量x(称为自变量)的线性函数。
多元回归是简单线性回归的扩充,允许两个或多个自变量的线性函数对因变量y建模。
直方图使用分箱来近似数据分布,是一种流行的数据归约形式。
在数据归约中,用数据的簇代表替换实际数据。
数据的类型:连续性、离散型、ordinal型、Norminal型(symbols:{teacher、worker、salesman}{red、blue、green})、文本型
注意数据的编码方式:不良的编码方式可能让简单问题复杂化
注意:图中这种编码方式所有项(颜色)是等距的
由于数据库很大,I/O速度成为瓶颈,所以“采样”(挑少量数据进行处理)
采样也能调整数据样本的平衡程度
对于数据挖掘而言,离散化与概念分层产生是强有力的工具,因为它们使得数据的挖掘可以在多个抽象层上进行。规范化、数据离散化和概念分层产生都是某种形式的数据变换(data transformation)。数据变换操作是引导挖掘过程成功的附加的预处理过程。
在数据变换中,数据被变换或统一成适合于挖掘的形式。数据变换策略包括如下几种:
(1)光滑(smothing):去掉数据中的噪声。这类技术包括分箱、回归和聚类。
(2)属性构造(或特征构造):可以由给定的属性构造新的属性并添加到属性集中,以帮助挖掘过程。
(3)聚集:对数据进行汇总或聚集。例如,可以聚集日销售数据,计算月和年销售量。
通常,这一步用来为多个抽象层的数据分析构造数据立方体。
(4)规范化:把属性数据按比例缩放,使之落人一个特定的小区间,如-1.0~1.0或
0.0~1.0
(5)离散化:数值属性(例如,年龄)的原始值用区间标签(例如,0-10,11-20等)或概念标签(例如,youth,adult,senior)替换。这些标签可以递归地组织成更高层概念,导致数值属性的概念分层。下图显示了属性price的一个概念分层。对于同一个属性可以定义多个概念分层,以适合不同用户的需要。
(6)由标称数据产生概念分层:属性,如sreet,可以泛化到较高的概念层,如city或country。许多标称属性的概念分层都蕴含在数据库的模式中,可以在模式定义级自动定义。
规范化试图赋予所有属性相等的权重,对于涉及神经网络的分类算法或基于距离度量的分类(如最近邻分类)和聚类,规范化特别有用。
v ′ = v − m i n m a x − m i n ( n e w _ m a x − n e w _ m i n ) + n e w _ m i n v^\prime=\frac{v-min}{max-min}(new\_max-new\_min)+new\_min v′=max−minv−min(new_max−new_min)+new_min
v ′ = v − μ σ v^\prime=\frac{v-μ}{σ} v′=σv−μ