第2章 数据预处理
2.2 描述性数据汇总
(2-1)
Ø 分布式度量(distributive measure)是一种可以通过如下方法技术度量(即函数):将数据集划分成较小的子集,计算每个自己的度量,然后合并计算结果,得到原(整个)数据集的度量值。Sum()和count()都是分布式度量,因为它们都可以用这种方法技术。其他例子包括max()和min()。
Ø 代数度量(algebraic measure)是可以通过应用一个代数函数于一个或多个分布度量计算的度量。因此,average(或mean())是代数度量(algebraic measure),因为它可以通过sum()/count()计算。当我们技术数据立方体的时候,sum()和count()可以在预计算时保留。这样,导出数据立方体的average是直截了当的。
Ø 有时,集合中每个值xi与一个权值wi相关联,i = 1,…,N。权值反映对应值的显著性、重要性或出现频率。在这种情况下,我们可以计算加权算数均值(weighted arithmetic mean)或加权平均(weighted average)。加权平均是代数度量的又一个例子。
(2-2)
Ø 整体度量(holistic measure)是必须对整个数据集计算的度量。整体度量不能通过将给定数据划分成自己并合并每个子集上度量得到的值来计算。中位数是整体度量的一个例子。计算整体度量的开销比计算上述分布式度量的开销大得多。
(2-3)
(2-4)
Ø 因为Q1、中位数和Q3不包含数据端点(例如尾)信息,分布形状的更完整概括可以通过提供最高和最低数据值得到。这称作五数概括。分布的五数概括(five-number summary)由中位数,四分位数Q1和Q3,最小和最大观测值组成,按以下次序写为Minimum, Q1, Median, Q3, Maximum。
图2-3 在给定的时间段 AllElectronics的4个分店销售的商品单价的盒图
Ø 当 处理数量适中的观测值时,值得个别地绘出潜在的离群点。在盒图中这样做:仅当这些值超过四分位数不到1.5×IQR时,胡须扩展到最高和最低观测值。否 则,胡须出现在四分位数的1.5×IQR之内的最极端的观测值处终止。剩下的情况个别地绘出。盒图可以用来比较若干个可比数据集。图2-3给出在给定的时 间段, AllElectronics的4个分店销售的商品单价数据的盒图。对于分店1,我们看到销售商品单价的中位数是80美元,Q1是60美元,Q3是100 美元。注意,该分店的两个边远的观测值个别地绘制,因为它们的值175和202超过IQR的1.5倍,这里IQR = 40。对于大型数据集的挖掘,盒图的有效计算,甚至是近似的盒图(基于五数概括的近似)仍然是一个具有挑战性的问题。
(2-6)
其中,是观测值的均值。标准差σ是方差σ2的平方根。
表2-1 AllElectronics的一个分店销售的商品单价数据集
图2-4 表2-1中数据集的直方图
Ø 分位数图(quantile plot)是一种观察单变量数据分布的简单有效方法。每个观测值xi与一个百分数fi配对,指出大约100fi%的数据小于或等于xi。我们说“大约”,因为可能没有一个精确的小数值fi,使得数据的fi%小于或等于xi。注意,0.25分位数对应于四分位数Q1,0.50分位数对应于中位数,而0.75分位数对应于Q3。
Ø 散布图(scatter plot)是确定两个数值属性之间看上去是否有联系、模式或趋势的最有效的图形方法之一。为构造散布图,每个值对视为一个代数坐标对,并作为一个点画在平面上。图2-7显示表2-1中数据集的散布图。散布图是一种观察双变量数据有用的方法,用于观察点的簇和离群点,或考察相关联系的可能性。在图2-8中,我们看到两个不同数据集中两个属性之间的正相关和负相关的例子。图2-9显示了三种情况,每个数据集的两个属性之间都不存在相关联系。
2.3 数据清理
Ø 现实世界的数据一般是不完整的、有噪声的和不一致的。数据清理例程试图填充缺失的值,光滑噪声并识别离群点,并纠正数据中的不一致。
2.3.1 缺失值
Ø 想像你需要分析AllElectronics的销售和顾客数据。你注意到许多元组的一些属性,如顾客的income,没有记录值。怎样才能为该属性填上丢失的值?我们看看下面的方法:
n (1)忽略元组:当缺少类标号时通常这样做(假定挖掘任务涉及分类)。除非元组有多个属性缺少值,否则该方法不是很有效。当每个属性缺少值的百分比变化很大时,它的性能特别差。
n (2)人工填写缺失值:一般,该方法很费时,并且当数据集很大,缺少很多值时,该方法可能行不通。
n (3)使用一个全局常量填充缺失值:将缺失的属性值用同一个常数(如“Unknown”或-∞”)替换,则挖掘程序可能误以为它们形成了一个有趣的概念,因为它们都具有相同的值“Unknown”。因此,尽管该方法简单,但是它并不十分可靠。
n (4)使用属性的均值填充缺失值:例如,假定AllElectronics顾客的平均收入为56 000美元,则使用该值替换income中的缺失值。
n (5)使用与给定元组属同一类的所有样本的属性均值:例如,将顾客按credit_risk分类,则用具有相同信用度给定元组的顾客的平均收入替换income中的缺失值。
n (6)使用最可能的值填充缺失值:可以用回归、使用贝叶斯形式化的基于推理的工具或决策树归纳确定。例如,利用数据集中其他顾客的属性,可以构造一棵决策树来预测income的缺失值。决策树、回归和贝叶斯推理将在第6章详细介绍。
Ø 方法3~6使数据偏置。填入的值可能不正确。然而,方法6是流行的策略,与其他方法相比,它使用已有数据的大部分信息来预测缺失值。在估计income的缺失值时,通过考虑其他属性的值,有更大的机会保持income和其他属性之间的联系。
Ø 重要的是要注意,在某些情况下,缺失值并不意味数据有错误!
n 例如,在申请信用卡时,可能要求申请人提供驾驶执照号。没有驾驶执照的申请者自然使该字段为空。
n 表格应当允许填表人使用诸如“无效”等值。
n 软件例程也可以用来发现其他空值,如“不知道”、“?”或“无”。
n 理想地,每个属性都应当有一个或多个关于空值条件的规则。这些规则可以说明是否允许空值,并且/或者说明这样的空值应当如何处理或转换。
n 字段也可能故意留下空白,如果它们在商务处理的最后一步未提供值的话。
n 因此,尽管在得到数据后,尽我们所能来清理数据,但数据库和数据输入的好的设计将有助于在第一现场最小化缺失值或错误的数量。
2.3.2 噪声数据
Ø “什么是噪声?”噪声(noise)是被测量的变量的随机误差或方差。给定一个数值属性,如price,我们怎样才能“光滑”数据,去掉噪声?我们看看下面的数据光滑技术。
n (1)分箱(binning):分箱方法通过考察数据的“近邻”(即周围的值)来光滑有序数据的值。有序值分布到一些“桶”或箱中。由于分箱方法考察近邻的值,因此进行局部光滑。图2-11图示了一些分箱技术。在该例中,price数据首先排序并划分到大小为3的等频箱中(即每箱包含3个值)。用箱均值光滑,箱中每一个值都被箱的均值替换。例如,箱1中的值4, 8和15的均值是9。因此,该箱中的每一个值都替换为9。类似地,可以使用用箱中位数光滑。此时,箱中的每一个值都被箱中位数替换。用箱边界光滑,箱中的最大和最小值同样被视为箱边界。箱中的每一个值都被最近的边界值替换。一般来说,宽度越大光滑效果越大。箱也可以是等宽的,每个箱值的区间范围是个常量。分箱也可以作为一种离散化技术使用,将在2.6节进一步讨论。
图2-11 数据光滑的分箱方法
n (2)回归:可以用一个函数(如回归函数)拟合数据来光滑数据。线性回归涉及找出拟合两个属性(或变量)的“最佳”线,使得一个属性可以用来预测另一个。多元线性回归是线性回归的扩展,其中涉及的属性多于两个,并且数据拟合到一个多维曲面。回归将在2.5.4节和第6章进一步讨论。
n (3)聚类:可以通过聚类检测离群点,将类似的值组织成群或“簇”。直观地,落在簇集合之外的值视为离群点(图2-12)。第7章专门研究聚类和离群点分析。
图2-12
Ø 许 多数据光滑的方法也是涉及离散化的数据归约方法。例如,上面介绍的分箱技术减少了每个属性的不同值数量。对于基于逻辑的数据挖掘方法(如决策树归纳),反 复地对排序后的数据进行比较,这充当了一种形式的数据归约。概念分层是一种数据离散化形式,也可以用于数据光滑。例如,price的概念分层可以把实际的price值映射到价格便宜、适中和昂贵,从而减少了挖掘过程所处理的值的数量。数据离散化将在2.6节讨论。有些分类方法如神经网络,有内置的数据光滑机制。分类是第6章的主题。
2.3.3 数据清理作为一个过程
Ø 数据清理作为过程的第一步是偏差检测(discrepancy detection)。
n 导致偏差的因素可 能有多种,包括具有很多可选字段的设计糟糕的数据输入表单、人为输入错误、有意的错误(例如,不愿意泄露自己的信息)、以及数据退化(如过时的地址)。偏 差也可能源于不一致的数据表示和编码的不一致使用。记录数据的设备错误和系统错误是另一种偏差源。当数据(不适当地)用于不同于当初的目的时,也可能出现 错误。数据集成也可能导致不一致(例如,给定的属性在不同的数据库具有不同的名称)。
Ø “关于数据的数据”称作元数据。
Ø 字段过载(field overloading)是另一种错误源,通常是由如下原因导致:开发者将新属性的定义挤压到已经定义的属性的未使用(位)部分(例如,使用一个属性未使用的位,该属性取值已经使用了32位中的31位)。
Ø 还应当根据唯一性规则、连续性规则和空值规则考察数据。唯一性规则是说给定属性的每个值都必须不同于该属性的所有其他值。连续性规则是说属性的最低和最高值之间没有缺失的值,并且所有的值还必须是唯一的(例如检验数)。空值规则说明空白、问号、特殊符号或指示空值条件的其他串(例如,给定属性的值不能使用)的使用,以及如何处理这样的值。正如2.3.1节所提及的,缺失值的原因可能包括(1)被要求提供属性值的人拒绝提供和/或发现没有所要求的信息(例如,非司机未填写license-number属性);(2)数据输入者不知道正确的值;(3)值在稍后提供。空值规则应当说明如何记录空值条件,例如数值属性存放0、字符属性存放空白或其他使用方便的约定(诸如“不知道”或“?”这样的项应当转换成空白)。
Ø 数据清洗工具(Data scrubbing tool)使用简单的领域知识(如邮政地址知识和拼写检查)检查并纠正数据中的错误。在清理多个数据源的数据时,这些工具依赖分析和模糊匹配技术。数据审计工具(Data auditing tool)通过分析数据发现规则和联系及检测违反这些条件的数据来发现偏差。它们是数据挖掘工具的变种。例如,可以使用统计分析来发现相关,或通过聚类识别离群点。
Ø 有些数据不一致可以使用其他外部材料人工地加以更正。例如,数据输入时的错误可以使用纸上的记录加以更正。然而,大部分错误需要数据变换。这是数据清理过程的第二步。即,一旦发现偏差,通常我们需要定义并使用(一系列)变换来纠正它们。
Ø 商业工具可以支持数据变换步骤。数据迁移工具(Data migration tool)允许说明简单的变换,如将串“gender”用“sex”替换。ETL(Extraction/Transformation/Loading,提取/变换/装入)工具允许用户通过图形用户界面(GUI)说明变换。通常,这些工具只支持有限的变换,因此,我们常常可能选择为数据清理过程的这一步编写定制的程序。
Ø 随着我们对数据的了解增加,重要的是要不断更新元数据以反映这种知识。这有助于加快对相同数据存储的未来版本的数据清理速度。
2.4 数据集成和变换
数据挖掘经常需要数据集成—合并来自多个数据存储的数据。数据还可能需要转换成适于挖掘的形式。本节介绍数据集成和数据变换。
2.4.1 数据集成
Ø 数据分析任务多半涉及数据集成。数据集成合并多个数据源中的数据,存放在一个一致的数据存储(如数据仓库)中。这些数据源可能包括多个数据库、数据立方体或一般文件。
Ø 在数据集成时,有许多问题需要考虑。模式集成和对象匹配可能需要技巧。来自多个信息源的现实世界的等价实体如何才能匹配?这涉及实体识别问题。例如,数据分析者或计算机如何才能确信一个数据库中的customer_id和另一个数据库中的cust_number指的是相同的属性?每个属性的元数据包括名字、含义、数据类型和属性的允许取值范围,以及处理空白、零或null值的空值规则(见2.3节)。这样的元数据可以用来帮助避免模式集成的错误。元数据还可以用来帮助变换数据(例如,pay_type的数据编码在一个数据库中可以是“H”和“S”,而在另一个数据库中是1和2)。因此,这一步也与前面介绍的数据清理有关。
Ø 冗余是另一个重要问题。一个属性(如年收入)可能是冗余的,如果它能由另一个或另一组属性“导出”。属性或维命名的不一致也可能导致结果数据集中的冗余。
Ø 有些冗余可以被相关分析检测到。给定两个属性,这种分析可以根据可用的数据度量一个属性能在多大程度上蕴涵另一个。对于数值属性,通过计算属性A和B之间的相关系数(又称皮尔逊积矩系数(Pearson product coefficient),用发明者Karl Pearson的名字命名),我们可以估计这两个属性的相关度rA,B。即
Ø 注意,相关并不意味因果关系。也就是说,如果A和B是相关的,这并不意味A导致B或B导致A。例如,在分析人口统计数据库时,我们可能发现一个地区的医院数与汽车盗窃数是相关的。这并不意味一个导致另一个。实际上,二者必然地关联到第三个属性—人口。
Ø 统计检验假设A和B是独立的。检验基于显著水平,具有(r-1)×(c-1)自由度。如果可以拒绝该假设,则我们说A和B是统计相关的或关联的。
Ø 数据语义的异构和结构对数据集成提出了巨大挑战。由多个数据源小心地集成数据能够帮助降低和避免结果数据集中的冗余和不一致。这有助于提高其后挖掘过程的准确率和速度。
2.4.2数据变换
Ø 数据变换将数据转换或统一成适合于挖掘的形式。数据变换可能涉及如下内容:
n 光滑:去掉数据中的噪声。这种技术包括分箱、回归和聚类。
n 聚集:对数据进行汇总或聚集。例如,可以聚集日销售数据,计算月和年销售量。通常,这一步用来为多粒度数据分析构造数据立方体。
n 数据泛化:使用概念分层,用高层概念替换低层或“原始”数据。例如,分类的属性,如街道,可以泛化为较高层的概念,如城市或国家。类似地,数值属性如年龄,可以映射到较高层概念如青年、中年和老年。
n 规范化:将属性数据按比例缩放,使之落入一个小的特定区间,如-1.0~1.0或0.0~1.0。
n 属性构造(或特征构造):可以构造新的属性并添加到属性集中,以帮助挖掘过程。
Ø 通过将属性值按比例缩放,使之落入一个小的特定区间,如0.0~1.0,对属性规范化。对于涉及神经网络或距离度量的分类算法(如最近邻分类)和聚类,规范化特别有用。如果使用神经网络后向传播算法进行分类挖掘(见第6章),对于训练元组中量度每个属性的输入值规范化将有助于加快学习阶段的速度。对于基于距离的方法,规范化可以帮助防止具有较大初始值域的属性(如income)与具有较小初始值域的属性(如二元属性)相比权重过大。
2.5数据规约
Ø 数据归约技术可以用来得到数据集的归约表示,它小得多,但仍接近保持原数据的完整性。这样,对归约后的数据集挖掘将更有效,并产生相同(或几乎相同)的分析结果。
Ø 数据归约的策略如下:
n (1)数据立方体聚集:聚集操作用于数据立方体结构中的数据。
n (2)属性子集选择:可以检测并删除不相关、弱相关或冗余的属性或维。
n (3)维度归约:使用编码机制减小数据集的规模。
n (4)数值归约:用替代的、较小的数据表示替换或估计数据,如参数模型(只需要存放模型参数,而不是实际数据)或非参数方法,如聚类、抽样和使用直方图。
n (5)离散化和概念分层产生:属性的原始数据值用区间值或较高层的概念替换。数据离散化是一种数据归约形式,对于概念分层的自动产生是有用的。离散化和概念分层产生是数据挖掘强有力的工具,允许挖掘多个抽象层的数据。
2.5.1 数据立方体聚集
Ø 数据立方体提供对预计算的汇总数据进行快速访问,因此,适合联机数据分析处理和数据挖掘。
Ø 在最低抽象层创建的立方体称为基本方体(base cuboid)。基本方体应当对应于感兴趣的个体实体,如sales或customer。换言之,最低层应当是对于分析可用的或有用的。最高层抽象的立方体称为顶点方体(apex cuboid)。对于图2-14的销售数据,顶点方体将给出一个汇总值—所有商品类型、所有分店三年的总销售额。对不同抽象层创建的数据立方体称为方体(cuboid),因此数据立方体可以看作方体的格(lattice of cuboids)。每个较高层抽象将进一步减少结果数据的规模。当回答数据挖掘查询时,应当使用与给定任务相关的最小可用方体。
2.5.2 属性子集选择
Ø 遗漏相关属性或留下不相关属性都是有害的,会导致所用的挖掘算法无所适从。这可能导致发现质量很差的模式。此外,不相关或冗余的属性增加可能会减慢挖掘进程。
Ø 属性子集选择通过删除不相关或冗余的属性(或维)减小数据集。属性子集选择的目标是找出最小属性集,使得数据类的概率分布尽可能地接近使用所有属性得到的原分布。对减小的属性集挖掘还有其他优点。它减少了出现在发现模式的属性数目,使得模式更易于理解。
Ø “如何找出原属性的一个‘好的’子集?”对于n个属性,有2^n个可能的子集。穷举搜索找出属性的最佳子集可能是不现实的,特别是当n和数据类的数目增加时。因此,对于属性子集选择,通常使用压缩搜索空间的启发式算法。通常,这些方法是贪心算法,在搜索属性空间时,总是做看上去当时最佳的选择。策略是做局部最优选择,期望由此导致全局最优解。在实践中,这种贪心方法是有效的,并可以逼近最优解。
Ø “最好的”(和“最差的”)属性通常使用统计显著性检验来确定。这种检验假定属性是相互独立的。也可以使用其他属性评估度量,如建立分类决策树使用信息增益度量。
Ø 属性子集选择的基本启发式方法包括以下技术,其中一些图示在图2-15中。
Ø 逐步向前选择:该过程由空属性集作为归约集开始,确定原属性集中最好的属性,并将它添加到归约集中。在其后的每一次迭代步,将剩下的原属性集中最好的属性添加到该集合中。
Ø 逐步向后删除:该过程由整个属性集开始。在每一步,删除尚在属性集中最差的属性。
Ø 向前选择和向后删除的结合:可以将逐步向前选择和向后删除方法结合在一起,每一步选择一个最好的属性,并在剩余属性中删除一个最差的属性。
Ø 决策树归纳:决策树算法,如ID3、C4.5和CART最初是用于分类的。决策树归纳构造一个类似于流程图的结构,其中每个内部(非树叶)节点表示一个属性的测试,每个分枝对应于测试的一个输出;每个外部(树叶)节点表示一个类预测。在每个节点,算法选择“最好”的属性,将数据划分成类。
n 当决策树归纳用于属性子集选择时,由给定的数据构造决策树。不出现在树中的所有属性假定是不相关的。出现在树中的属性形成归约后的属性子集。
n 方法的结束标准可以不同。该过程可以使用一个度量阈值来决定何时停止属性选择过程。
2.5.3 维度规约
Ø 维度归约使用数据编码或变换,以便得到原数据的归约或“压缩”表示。如果原数据可以由压缩数据重新构造而不丢失任何信息,则该数据归约是无损的。如果我们只能重新构造原数据的近似表示,则该数据归约是有损的。有一些很好的串压缩算法。尽管它们通常是无损的,但是只允许有限的数据操作。本节,我们介绍另外两种流行、有效的有损的维归约方法:小波变换和主成分分析。
Ø 小波变换
n 离散小波变换(DWT)是一种线性信号处理技术,当用于数据向量X时,将它变换成数值上不同的小波系数向量X'。两个向量具有相同的长度。当这种技术用于数据归约时,每个元组看作一个n维数据向量,即X = (x1, x2, …, xn),描述n个数据库属性在元组上的n个测量值。
n DWT与离散傅里叶变换(DFT)有密切关系,DFT是一种涉及正弦和余弦的信号处理技术。然而一般地说,DWT是一种更好的有损压缩。也就是说,对于给定的数据向量,如果DWT和DFT保留相同数目的系数,DWT将提供原数据的更准确的近似。因此,对于等价的近似,DWT比DFT需要的空间小。不像DFT,小波空间局部性相当好,有助于保留局部细节。
n 只有一种DFT,但有若干族DWT。图2-16显示了一些小波族。流行的小波变换包括Haar-2, Daubechies-4和Daubechies-6变换。应用离散小波变换的一般过程使用一种分层金字塔算法(pyramid algorithm),它在每次迭代将数据减半,导致很快的计算速度。该方法如下:
u (1)输入数据向量的长度L必须是2的整数幂。必要时(L≥n),通过在数据向量后添加0,这一条件可以满足。
u (2)每个变换涉及应用两个函数。第一个使用某种数据光滑,如求和或加权平均。第二个进行加权差分,产生数据的细节特征。
u (3)两个函数作用于X中的数据点对,即用于所有的测量对(x2i, x2i+1)。这导致两个长度为L/2的数据集。一般,它们分别代表输入数据的光滑后的版本或低频版本和它的高频内容。
u (4)两个函数递归地作用于前面循环得到的数据集,直到得到的数据集长度为2。
u (5)由以上迭代得到的数据集中选择值,指定其为数据变换的小波系数。
n 等价地,可以将矩阵乘法用于输入数据,以得到小波系数。所用的矩阵依赖于给定的DWT。矩阵必须是标准正交的,即列是单位向量并相互正交,使得矩阵的逆是它的转置。尽管受篇幅限制,这里我们不再讨论,但这种性质允许由光滑和光滑-差数据集重构数据。通过将矩阵因子分解成几个稀疏矩阵,对于长度为n的输入向量,“快速DWT”算法的复杂度为O (n)。
n 小波变换可以用于多维数据,如数据立方体。可以按以下方法做:首先将变换用于第一个维,然后第二个,如此下去。计算复杂性关于立方体中单元的个数是线性的。对于稀疏或倾斜数据和具有有序属性的数据,小波变换给出很好的结果。据报道,小波变换的有损压缩比当前的商业标准JPEG压缩好。小波变换有许多实际应用,包括指纹图像压缩、计算机视觉、时间序列数据分析和数据清理。
Ø 主成分分析
n 假定待归约的数据由n个属性或维描述的元组或数据向量组成。主成分分析(principal components analysis)或PCA(又称Karhunen-Loeve或K-L方法)搜索k个最能代表数据的n维正交向量,其中k≤n。这样,原来的数据投影到一个小得多的空间,导致维度归约。不像属性子集选择通过保留原属性集的一个子集来减少属性集的大小,PCA通过创建一个替换的、更小的变量集“组合”属性的基本要素。原数据可以投影到该较小的集合中。PCA常常揭示先前未曾察觉的联系,并因此允许解释不寻常的结果。
n 基本过程如下:
u (1)对输入数据规范化,使得每个属性都落入相同的区间。此步有助于确保具有较大定义域的属性不会支配具有较小定义域的属性。
u (2)PCA计算k个标准正交向量,作为规范化输入数据的基。这些是单位向量,每一个方向都垂直于另一个。这些向量称为主成分。输入数据是主成分的线性组合。
u (3)对主成分按“重要性”或强度降序排列。主成分基本上充当数据的新坐标轴,提供关于方差的重要信息。也就是说,对坐标轴进行排序,使得第一个坐标轴显示数据的最大方差,第二个显示次大方差,如此下去。例如,图2-17显示原来映射到轴X1和X2的给定数据集的前两个主成分Y1和Y2。这一信息帮助识别数据中的分组或模式。
u (4)既然主成分根据“重要性”降序排列,就可以通过去掉较弱的成分(即方差较小)来归约数据的规模。使用最强的主成分,应当能够重构原数据的很好的近似。
Ø PCA计算开销低,可以用于有序和无序的属性,并且可以处理稀疏和倾斜数据。多于2维的多维数据可以通过将问题归约为2维问题来处理。主成分可以用作多元回归和聚类分析的输入。与小波变换相比,PCA能够更好地处理稀疏数据,而小波变换更适合高维数据。
2.5.4 数值规约
Ø “我们能通过选择替代的、‘较小的’数据表示形式来减少数据量吗?”数值归约技术确实可以用于这一目的。这些技术可以是参数的,也可以是非参数的。参数方法使用一个模型估计数据,只需要存放数据参数,而不是实际数据。(离群点也可能存放。)对数线性模型是一个例子,它估计离散的多维概率分布。存放数据归约表示的非参数方法包括直方图、聚类和抽样。
Ø 回归和对数线性模型
回归和对数线性模型可以用来近似给定的数据。在(简单)线性回归中,对数据建模,使之拟合到一条直线。例如,可以用以下公式,将随机变量y(称作响应变量)建模为另一随机变量x(称为预测变量)的线性函数
y = wx + b
其中,假定y的方差是常量。在数据挖掘中,x和y是数值数据库属性。系数w和b(称作回归系数)分别为直线的斜率和Y轴截距。系数可以用最小二乘方法求解,它最小化分离数据的实际直线与直线估计之间的误差。多元线性回归是(简单)线性回归的扩充,允许响应变量y建模为两个或多个预测变量的线性函数。
对数线性模型(log-linear model)近似离散的多维概率分布。给定n维(例如用n个属性描述)元组的集合,可以把每个元组看作n维空间的点。可以使用对数线性模型基于维组合的一个较小子集,估计离散化的属性集的多维空间中每个点的概率。这使得高维数据空间可以由较低维空间构造。因此,对数线性模型也可以用于维归约(由于低维空间的点通常比原来的数据点占据较少的空间)和数据光滑(因为与较高维空间的估计相比,较低维空间的聚集估计较少受抽样方差的影响)。
回归和对数线性模型都可以用于稀疏数据,尽管它们的应用可能是受限制的。虽然两种方法都可以处理倾斜数据,但是回归可望更好。当用于高维数据时,回归可能是计算密集的,而对数线性模型表现出很好的可伸缩性,可以扩展到10维左右。回归和对数线性模型将在6.11节进一步讨论。
Ø 直方图
直方图使用分箱来近似数据分布,是一种流行的数据归约形式。直方图曾在2.2.3节介绍过。属性A的直方图将A的数据分布划分为不相交的子集或桶。如果每个桶只代表单个属性值/频率对,则该桶称为单桶。通常,桶表示给定属性的一个连续区间。
“如何确定桶和属性值的划分?”有一些划分规则,包括如下:
n 等宽:在等宽直方图中,每个桶的宽度区间是一致的
n 等频(或等深):在等频直方图中,创建桶,使得每个桶的频率粗略地为常数(即每个桶大致包含相同个数的邻近数据样本)。
n V最优:给定桶的个数,如果我们考虑所有可能的直方图,则V最优直方图是具有最小方差的直方图。直方图的方差是每个桶代表的原来值的加权和,其中权等于桶中值的个数。
n MaxDiff: 在MaxDiff直方图中,考虑每对相邻值之间的差。桶的边界是具有b-1个最大差的对,其中b是用户指定的桶数。
V最优和MaxDiff直方图看来是最准确和最实用的。对于近似稀疏和稠密数据,以及高倾斜和均匀的数据,直方图是高度有效的。上面介绍的单属性直方图可以推广到多属性。多维直方图可以表现属性间的依赖。业已发现,这种直方图能够有效地近似多达5个属性的数据。对于高维的多维直方图的有效性尚需进一步研究。对于存放具有高频率的离群点,单桶是有用的。
Ø 聚类
聚类技术将数据元组视为对象。它将对象划分为群或簇,使一个簇中的对象相互“相似”,而与其他簇中的对象“相异”。通常,相似性基于距离函数,用对象在空间中的“接近”程度定义。簇的“质量”可以用直径表示,直径是簇中任意两个对象的最大距离。质心距离是簇质量的另一种度量,定义为由簇质心(表示“平均对象”,或簇空间中的平均点)到每个簇对象的平均距离。
在数据库系统中,多维索引树主要用于对数据的快速访问。它也能用于分层数据的归约,提供数据的多维聚类。这可以用于提供查询的近似回答。对于给定的数据对象集,索引树递归地划分多维空间,其树根节点代表整个空间。通常,这种树是平衡的,由内部节点和树叶节点组成。每个父节点包含关键字和指向子女节点的指针,子女节点一起表示父节点代表的空间。每个树叶节点包含指向它所代表的数据元组的指针(或实际元组)。
这样,索引树可以在不同的分辨率或抽象层存放聚集和细节数据。它提供了数据集的分层聚类,其中每个簇有一个标记,存放该簇包含的数据。如果我们把父节点的每个子女看作一个桶,则索引树可以看作一个分层的直方图。例如,考虑图2-20所示B+树的根,具有指向数据键986,3396,5411,8392和 9544的指针。假设该树包含10 000个元组,其键值由1~9999。树中的数据可以用6个桶的等频直方图近似,其键值分别从 1~985,986~3395,3396~5410,5411~8391,8392~9543,9544~9999。每个桶大约包含10 000/6个数据项。类似地,每个桶进一步分成更小的桶,允许在更细的层次聚集数据。作为一种数据归约形式使用多维索引树依赖于每个维上属性值的次序。二维或多维索引树包括R树、四叉树和它们的变形。它们都非常适合处理稀疏数据和倾斜数据。
Ø 抽样
抽样可以作为一种数据归约技术使用,因为它允许用数据的小得多的随机样本(子集)表示大型数据集。假定大型数据集D包含N个元组。我们看看可以用于数据归约的、最常用的对D的抽样方法,如图2-21所示。
Ø s个样本无放回简单随机抽样(SRSWOR):从D的N个元组中抽取s个样本(s < N),其中D中任意元组被抽取的概率均为1/N,即所有元组的抽取是等可能的。
Ø s个样本有放回简单随机抽样(SRSWR):该方法类似于SRSWOR,不同在于每次一个元组从D中抽取后,记录它,然后放回原处。也就是说,一个元组抽取后,放回D,以便它可以再次被抽取。
Ø 聚类抽样:如果D中的元组分组放入M个互不相交的 “簇”,则可以得到s个簇的简单随机抽样(SRS),其中s < M。例如,数据库中元组通常一次检索一页,这样每页就可以视为一个簇。例如,可以将SRSWOR用于页,得到元组的簇样本,由此得到数据的归约表示。也可以利用其他携带更丰富语义信息的聚类标准。例如,在空间数据库,可以基于不同区域位置上的邻近程度地理地定义簇。
Ø 分层抽样:如果D划分成互不相交的部分,称作层,则通过对每一层的SRS就可以得到D的分层样本。特别是当数据倾斜时,这可以帮助确保样本的代表性。例如,可以得到关于顾客数据的一个分层样本,其中分层对顾客的每个年龄组创建。这样,具有顾客最少数目的年龄组肯定能够被表示。
采用抽样进行数据归约的优点是,得到样本的花费正比于样本集的大小s,而不是数据集的大小N。因此,抽样的复杂度子线性(sublinear)于数据的大小。其他数据归约技术至少需要完全扫描D。对于固定的样本大小,抽样的复杂度仅随数据的维数n线性地增加;而其他技术,如使用直方图,复杂度随n指数增长。
用于数据归约时,抽样最常用来估计聚集查询的回答。在指定的误差范围内,可以确定(使用中心极限定理)估计一个给定的函数所需的样本大小。样本的大小s相对于N可能非常小。对于归约数据集的逐步求精,抽样是一种自然选择。通过简单地增加样本大小,这样的集合可以进一步求精。