数据挖掘不充分 数据挖掘相关问题_归约


一、数据预处理

1.1 为什么进行数据预处理

数据质量涉及许多因素,包括准确性、完整性、一致性、时效性、可信性和可解释性。很多时候,我们希望使用数据挖掘技术分析的数据是不完整的(缺少属性值或某些感兴趣的属性,或仅包含聚集数据)、不正确的或含有噪声的(包含错误或存在偏离期望的值),并且是不一致的(例如,用于商品分类的部门编码存在差异)。

1.2 数据清洗主要解决的问题


数据挖掘不充分 数据挖掘相关问题_数据挖掘不充分_02


数据清洗过程通过填写缺失的值,光滑噪声数据,识别或删除离群点并解决不一致性来“清理”数据。

1.2.1 缺失值的处理

1)忽略元组:直白点就是这条数据不要了。当缺少标签的时候通常我们会这么做。当元组有多个属性缺少时,我们也考虑采用这种方式。其余时候不推荐。

2)人工填写:费时费力,当数据集不大时可以考虑,一旦数据集大了,我想没人会这么干。

3)使用一个全局常量填充缺失值:虽然该方法简单,但并不十分可靠。

4)使用属性的中心度量(如均值或中位数)填充缺失值:对于正常的(对称的)数据分布而言,可以使用均值,而倾斜数据分布应该使用中位数

5)使用与给定元组属同一类的所有样本的属性均值或中位数:例如将顾客信用分等级,将具有相同信用等级的顾客平均收入替换income中的缺失值。如果给定类数据分布是倾斜的,则中位数是更好的选择。

6)使用最可能的值填充缺失值:可以使用回归、使用贝叶斯形式化方法的基于推理的工具或决策树归纳确定。例如,可以构造一棵决策树来预测income的缺失值。

方法3)~6)使数据有偏,填入的值可能不正确。方法6)是最流行的策略,与其他方法相比,它使用已有数据的大部分信息来预测缺失值。在估计income的缺失值时,有更大的机会保持income和其他属性之间的联系。

1.2.2 噪声数据

噪声是被测量的变量的随机误差或方差。

1)分箱:分箱方法通过考察数据的“近邻”(即周围的值)来光滑有序数据值。这些有序的值被分布到一些“桶”或箱中。由于分箱方法考察近邻的值,因此它进行局部光滑。我们常用的是箱均值光滑、箱中位数光滑以及箱边界光滑(箱中每一个值都被替换为最近的边界值,所谓边界值即箱中最大和最小的值)。

分箱有两种策略,一种是所谓的等深(频)分箱,即每个箱子里放相同的数据;另一种是等宽分箱,例如一串数字的取值为10-20之间,我们将这串数字分为5个箱子,第一个箱子放10-12之间的数字,第二个箱子放12-14之间的数......这里我们并不在意每个箱子里具体有多少个数字。

2)回归:用一个函数拟合数据来光滑数据。多元线性回归将数据拟合到一个多维曲面。

3)离群点分析:可以通过如聚类来检测离群点。

许多数据光滑的方法也用于数据离散化和数据归约。例如,上面介绍的分箱技术减少了每个属性的不同值的数量。对于基于逻辑的数据挖掘方法(如决策树归纳),它反复地在排序后的数据上进行比较,这充当了一种形式的数据归约。概念分层是一种数据离散化形式,也可以用于数据光滑(例如将实际价格划分为便宜、适中和昂贵,从而减少了数据挖掘过程需要处理的值的数量)。

1.3 数据归约

数据归约策略包括维归约、数量归约和数据压缩。

1)维归约:减少所考虑的随机变量或属性的个数。维归约的方法包括小波变换主成分分析,它们把原数据变换或投影到较小的空间。属性子集选择是一种维归约方法,其中不相关、弱相关或冗余的属性或维被检测和删除。

note:小波变换和主成分分析的原理我先放在一边了,本质上这两个事情搞的是同一件事情——降维,防止维灾难。书中有这样一句话,小波变换的有损压缩优于JPEG压缩,我记得JPEG这东西用到了傅里叶变换和哈夫曼编码,以后如果研究这方面倒是可以仔细看看,先不细究了。

2)数量归约:用替代的、较小的数据表示形式替换原数据。

3)数据压缩:使用变换,以便得到原数据的归约或“压缩”表示。如果我们能近似重构原数据,则该数据归约称为有损的;如果原数据能够从压缩后的数据重构,而不损失信息,则该数据归约称为无损的。

这里书中展开写了很多,不一一赘述了。

二、数据仓库

2.1 基本概念

2.1.1 单元格(cell):在一个数据立方体中,当每一个维上都确定一个维成员,那么就可以唯一确定多维空间中的一个点,这个点就称为数据单元。一个数据单元可以有多个度量值,比如一个三维立方体,有三个维度:日期维、地区维、产品维,那么“2008年8月8日”、“北京”、“冰箱”,就可以确定一个数据单元,这个数据单元上的度量值可以是利润、销售额、销售数量等。

2.1.2 方体(cuboid):多维数据模型的空间展现就是数据方体,也称为多维立方体。一个数据方体由多个维和度量组成。n维立方体可以看做由一系列的n-1维立方体组成。

2.1.3 立方体(cube):方体组合在一起就是立方体,举个例子。


数据挖掘不充分 数据挖掘相关问题_数据挖掘不充分_03


每一个点都是一个方体。上图是五个方体x-D方体构成一个数据立方体。

2.1.4 数据立方体

1)维:一个单位想要记录的透视或实体。

概念分层:定义一个映射序列,将低层概念集映射到较高层、更一般的概念。下图就是维location的一个概念分层。


数据挖掘不充分 数据挖掘相关问题_数据_04


形成数据库模式中属性的全序或偏序的概念分层称作模式分层。许多应用共有的概念分层,如time的概念分层,可以在数据挖掘系统中预先定义。

也可以通过将给定维或属性的值离散化或分组来定义概念分层,产生集合分组分层

2)度量

数据立方体度量是一个数值函数,该函数可以对数据立方体空间的每个点求值。通过对给定点的各维-值对聚集数据,计算该点的度量值。度量根据其所用的聚集函数可以分三类:分布的、代数的和整体的。

i)分布的:如果将函数用于n个聚集值得到的结果与将函数用于整个数据集(不划分)得到的结果一样,则该函数可以用分布方式计算。例如,对于数据立方体,sum()可以分布计算:首先将数据立方体划分成子立方体的集合,对每个子立方体计算sum(),然后对这些子立方体得到的值求和。因此,sum()是分布聚集函数。同理,count()、min()以及max()都是分布聚集函数

ii)代数的:一个聚集函数如果能够用一个具有M个参数的代数函数计算(其中M是有界正函数),而每个参数都可以用一个分布聚集函数得到,则它是代数的。例如,avg()可以用sum()/count()计算,其中sum()和count()都是分布聚集函数。类似地,可以证明minN和maxN(在给定的集合中分别找到N个最小和最大值)都是代数聚集函数

iii)整体的:一个聚集函数如果描述它的子聚集所需的存储没有一个是常数界,则它是整体的。也就是说,不存在一个具有M个参数多的代数函数进行这一计算。整体函数常见的栗子包括median()、mode()和rank()。一个度量如果是由整体聚集函数得到的,则它是整体的。

2.2 典型的OLAP操作

i)上卷:上卷操作是相对下钻操作而言的,下钻可以看到更多更细节的数据,因此上卷操作就是看到更少更综合的数据。因此,上卷操作也分为两种一种是上卷到更高层次的数据;另一种是减少维度。

ii)下钻:下钻操作就是在某个分析的过程中,用户可能需要从更多的维或者某个维的更细层次上观察数据,这时候就需要通过下钻操作来实现。比如将日期维从季度层次下钻到月份层次。下钻前用户只能看到季度数据,而下钻后就可以看到月份数据。

下钻操作主要有两种类型一是在现有的维下钻取更细节一层的数据。比如日期维上的季度数据下钻到月份数据。二是增加更多的维,比如现在只分析了三个维度的数据,但是问题仍然无法解决,这时候就需要更多维的数据。

iii)切片:就是在数据方体的某一维上选定一个维成员的动作,即限定多维数组某一个维度只取一个特定的值。比如地区维,选定“北京”这一个维成员,这样就得到一个切片。

iv)切块:就是在数据方体的某一维上选定某个区间的全部维成员的动作,即限定多维数组某一个维度只取一定区间的值。比如地区维,选定“北京”、“上海”、“杭州”,这样就得到一个切块。当这一个区间只有一个维成员时,就得到一个切片。因此切块可以由多个切片操作叠合而成。

v)旋转:改变数据方体维的次序的动作称为旋转。旋转操作对数据不做任何改变,只是改变立方体摆放的视角。


数据挖掘不充分 数据挖掘相关问题_数据挖掘不充分_05


2.3 数据立方体物化

2.3.1 全物化:预先计算所有的方体

2.3.2 部分物化:有选择地计算整个可能的方体集中一个适当的子集。

2.3.3 不物化:不预先计算任何“非基本”方体。

这里有一个例题。注意,I/O的开销是主要的。


数据挖掘不充分 数据挖掘相关问题_数据_06


数据挖掘不充分 数据挖掘相关问题_数据立方体_07


详细过程如下。


数据挖掘不充分 数据挖掘相关问题_数据挖掘不充分_08


数据挖掘不充分 数据挖掘相关问题_数据_09


小结:


数据挖掘不充分 数据挖掘相关问题_数据挖掘不充分_10