《数据挖掘》—— 第3章 数据预处理
数据质量涉及许多因素:
方法(3)~(6)使数据诱骗,填入的值可能不正确。然而,方法(6)是最流行的策略;与其他方法相比,它使用已有数据的大部分信息来预测缺失值。
噪声(noise):被测变量的随机误差或方差。
例,将数据 4 , 8 , 15 , 21 , 21 , 24 , 25 , 28 , 34 4,\ 8,\ 15,\ 21,\ 21,\ 24,\ 25,\ 28,\ 34 4, 8, 15, 21, 21, 24, 25, 28, 34 分箱。
A.customer_id
与 B.cust_number
是否指相同属性;一个属性(例如,年收入)如果能够由另一个或另一组属性“导出”,则这个属性有可能是冗余的。
有些冗余可以被相关分析检测到。给定两个属性,这种分析可以根据可用的数据,度量一个属性能在多大程度上蕴含另一个。对于标称数据,我们使用 χ 2 \chi^2 χ2 检验;对于数值属性,我们使用相关系数(correlation coefficient)和协方差(covariance),它们都评估一个属性的值如何随另一个变化。
假设有两个属性 A , B A,\ B A, B, A A A 有 c c c 个不同值 a 1 , a 2 , ⋯ , a c a_1,\ a_2,\cdots,\ a_c a1, a2,⋯, ac, B B B 有 r r r 个不同值 b 1 , b 2 , ⋯ , b r b_1,\ b_2,\cdots,\ b_r b1, b2,⋯, br。用 A A A 和 B B B 描述的数据元组可以用一个相依表显示,其中 A A A 的 c c c 个值构成列, B B B 的 r r r 个值构成行。令 ( A i , B j ) (A_i,\ B_j) (Ai, Bj) 表示属性 A A A 取值 a i a_i ai、属性 B B B 取值 b j b_j bj 的联合事件,即 ( A = a i , B = b j ) (A=a_i,\ B=b_j) (A=ai, B=bj)。每个可能的 ( A i , B j ) (A_i,\ B_j) (Ai, Bj) 联合事件都在表中有自己的单元。 χ 2 \chi^2 χ2 值( P e a r s o n χ 2 Pearson\ \chi^2 Pearson χ2 统计量)可以用下式计算:
χ 2 = ∑ i = 1 c ∑ j = 1 r ( o i j − e i j ) 2 e i j (3.1) \chi^2=\sum_{i=1}^c\sum_{j=1}^r\frac{{(o_{ij}-e_{ij})}^2}{e_{ij}} \tag{3.1} χ2=i=1∑cj=1∑reij(oij−eij)2(3.1)
其中, o i j o_{ij} oij 是联合事件 ( A i , B j ) (A_i,\ B_j) (Ai, Bj) 的观测频度(即实际计数),而 e i j e_{ij} eij 是 ( A i , B j ) (A_i,\ B_j) (Ai, Bj) 的期望频度,可以用下式计算:
e i j = c o u n t ( A = a i ) × c o u n t ( B = b j ) n (3.2) e_{ij}=\frac{count(A=a_i)\times count(B=b_j)}{n} \tag{3.2} eij=ncount(A=ai)×count(B=bj)(3.2)
其中, n n n 是数据元组的个数, c o u n t ( A = a i ) count(A=a_i) count(A=ai) 是 A A A 上具有值 a i a_i ai 的元组个数,而 c o u n t ( B = b j ) count(B=b_j) count(B=bj) 是 B B B 上具有值 b j b_j bj 的元组个数。 ( 3.1 ) (3.1) (3.1) 式中的和在所有 r × c r\times c r×c 个单元上计算。注意,对 χ 2 \chi^2 χ2 值贡献最大的单元是其实际计数与期望计数很不同的单元。
χ 2 \chi^2 χ2 统计检验假设 A A A 和 B B B 是独立的。检验基于显著水平,具有自由度 ( r − 1 ) × ( c − 1 ) (r-1)\times (c-1) (r−1)×(c−1)。
男 | 女 | 合计 | |
---|---|---|---|
小说 | 250(90) | 200(360) | 450 |
非小说 | 50(210) | 1000(840) | 1050 |
合计 | 300 | 1200 | 1500 |
利用 ( 3.2 ) (3.2) (3.2) 式,我们可以验证每个单元的期望频率。例如,单元 ( 男,小说 ) (男,小说) (男,小说) 的期望频率是 e 11 = c o u n t ( 男 ) × c o u n t ( 小说 ) n = 300 × 450 1500 = 90 e_{11}=\frac{count(男)\times count(小说)}{n}=\frac{300\times 450}{1500}=90 e11=ncount(男)×count(小说)=1500300×450=90,其他类似可得。使用计算 χ 2 \chi^2 χ2 的 ( 3.1 ) (3.1) (3.1) 式,可以得到 χ 2 = ( 250 − 90 ) 2 90 + ( 50 − 210 ) 2 210 + ( 200 − 360 ) 2 360 + ( 1000 − 840 ) 2 840 = 284.44 + 121.90 + 71.11 + 30.48 = 507.93 \chi^2=\frac{{(250-90)}^2}{90}+\frac{{(50-210)}^2}{210}+\frac{{(200-360)}^2}{360}+\frac{{(1000-840)}^2}{840}=284.44+121.90+71.11+30.48=507.93 χ2=90(250−90)2+210(50−210)2+360(200−360)2+840(1000−840)2=284.44+121.90+71.11+30.48=507.93。
对于这个 2 × 2 2\times2 2×2 的表,自由度 ( 2 − 1 ) ( 2 − 1 ) = 1 (2-1)(2-1)=1 (2−1)(2−1)=1。对于自由度 1 1 1,在 0.001 0.001 0.001 的置信水平下,拒绝假设的值式 10.828 10.828 10.828。因为 507.93 > 10.828 507.93>10.828 507.93>10.828,所以我们可以拒绝性别和阅读偏好独立的假设,并断言对于给定的人群,这两个属性式(强)相关的。
对于数值数据,我们可以通过计算属性 A A A 和 B B B 的相关系数(又称Pearson积矩系数),估计这两个属性的相关度 r A , B r_{A,B} rA,B,
r A , B = ∑ i = 1 n ( a i − A ˉ ) ( b i − B ˉ ) n σ A σ B = ∑ i = 1 n ( a i b i ) − n A ˉ B ˉ n σ A σ B (3.3) r_{A,B} =\frac{\sum_{i=1}^n(a_i-\bar A)(b_i-\bar B)}{n\sigma_A\sigma_B} =\frac{\sum_{i=1}^n(a_ib_i)-n\bar{A} \bar{B}}{n\sigma_A\sigma_B} \tag{3.3} rA,B=nσAσB∑i=1n(ai−Aˉ)(bi−Bˉ)=nσAσB∑i=1n(aibi)−nAˉBˉ(3.3)
其中, n n n 是数据元组的个数, a i a_i ai 和 b i b_i bi 分别是元组 i i i 在 A A A 和 B B B 上的值, A ˉ \bar A Aˉ 和 B ˉ \bar B Bˉ 分别是 A A A 和 B B B 的均值, σ A \sigma_A σA 和 σ B \sigma_B σB 分别是 A A A 和 B B B 的标准差, ∑ i = 1 n ( a i b i ) \sum_{i=1}^n(a_ib_i) ∑i=1n(aibi) 是 A B AB AB 叉积和(即对于每个元组, A A A 的值乘以该元组 B B B 的值)。
注意, − 1 ≤ r A , B ≤ + 1 -1\le r_{A,B}\le +1 −1≤rA,B≤+1。① r A , B > 0 r_{A,B}>0 rA,B>0,则 A A A 和 B B B 是正相关的;② r A , B < 0 r_{A,B}<0 rA,B<0,则 A A A 和 B B B 是负相关的;③ r A , B = 0 r_{A,B}=0 rA,B=0,则 A A A 和 B B B 是独立的。该值越大,相关性越强(即每个属性蕴含另一个的可能性越大)。因此,一个较高的 r A , B r_{A,B} rA,B 值表明 A o r B A\ or\ B A or B 可以作为冗余删除。
考虑两个数值属性 A A A 和 B B B 和 n n n 次观测的集合 { ( a 1 , b 1 ) , ⋯ , ( a n , b n ) } \{(a_1,b_1),\ \cdots,\ (a_n,b_n)\} {(a1,b1), ⋯, (an,bn)}。 A A A 和 B B B 的均值又分别称为 A A A 和 B B B 的期望值,即
E ( A ) = A ˉ = ∑ i = 1 n a i n , E ( B ) = B ˉ = ∑ i = 1 n b i n . E(A)=\bar A=\frac{\sum_{i=1}^na_i}{n},\ E(B)=\bar B=\frac{\sum_{i=1}^nb_i}{n}. E(A)=Aˉ=n∑i=1nai, E(B)=Bˉ=n∑i=1nbi.
A A A 和 B B B 的协方差(covariance)定义为:
C o v ( A , B ) = E ( ( A − A ˉ ) ( B − B ˉ ) ) = ∑ i = 1 n ( a i − A ˉ ) ( b i − B ˉ ) n (3.4) Cov(A,B)=E((A-\bar A)(B-\bar B))=\frac{\sum_{i=1}^n(a_i-\bar A)(b_i-\bar B)}{n} \tag{3.4} Cov(A,B)=E((A−Aˉ)(B−Bˉ))=n∑i=1n(ai−Aˉ)(bi−Bˉ)(3.4)
容易得到:
r A , B = C o v ( A , B ) σ A σ B (3.5) r_{A,B}=\frac{Cov(A,B)}{\sigma_A\sigma_B} \tag{3.5} rA,B=σAσBCov(A,B)(3.5)
C o v ( A , B ) = E ( A ⋅ B ) − A ˉ B ˉ (3.6) Cov(A,B)=E(A\cdot B)-\bar A \bar B \tag{3.6} Cov(A,B)=E(A⋅B)−AˉBˉ(3.6)
除了检测属性间的冗余外,还应当在元组级检测重复(例如,对于给定的唯一数据实体,存在两个或多个相同的元组)。
来自不同数据源的属性值可能不同。这可能是因为表示、尺度或编码不同。
减少所考虑的随机变量或属性的个数。方法包括:
它们把元数据变换或投影到较小的空间;
这种方法将不相关、弱相关或冗余的属性或维检测出来并删除。
参数方法:
非参数方法:
使用变换,以便得到原数据的归约或“压缩”表示。如果原数据能够从压缩后的数据重构,而不损失信息,则称该数据归约是无损的。如果我们只能近似重构原数据,则该数据归约称为有损的。
通过删除不相关或冗余的属性(或维)减少数据量。该方法的目标是找出最小属性集,使得数据类的概率分布尽可能地接近使用所有属性得到的原分布。该方法还减少了出现在发现模式上的属性数目,使得模式更易于理解。
由空属性集作为归约集开,确定原属性集中最好的属性,并将它添加到归约集中。在其后的每一次迭代,将剩下的原属性集中最好的属性添加到该集合中。
由整个属性集开始,在每一步中,删除属性集中最差的属性。
由整个属性集开始,在每一步中,删除属性集中最差的属性,同时选择一个最好的属性。
当决策树归纳用于属性子集选择时,由给定的数据构造决策树。不出现在树中的所有属性假定是不相关的。出现在树中的属性形成归约后的属性子集。
在某些情况下,我们可能基于其他属性创建一些新属性。这种属性构造可以帮助提高准确性和对高维数据结构的理解。
在(简单)线性回归中,对数据建模,使之拟合到一条直线。例如,可以用以下公式,将随机变量 y y y(因变量)表示为另一随机变量 x x x(自变量)的线性函数,
y = w x + b (3.7) y=wx+b \tag{3.7} y=wx+b(3.7)
其中,假定 y y y 的方差是常量。在数据挖掘中, x x x 和 y y y 是数值数据库属性。系数 w w w 和 b b b(回归系数)分别为直线的斜率和 y y y 轴截距。
对数线性模型(log-linear model)近似离散的多维概率分布。给定 n n n 维元组集合,我们可以把每个元组看作 n n n 维空间的点。对于离散属性集,可以使用对数线性模型,基于维组合的一个较小的子集,估计多维空间中每个点的概率。这使得高维数据空间可以有较低维空间构造。
直方图使用分箱来近似数据分布。如果每个桶指代别单个属性值/频率对,则该桶称为单值桶。通常,同表示给定属性的一个连续区间。
有一些划分规则,包括下面这些:
对于近似稀疏和稠密数据,以及高倾斜和均匀的数据,直方图都是非常有效的。
基于相似性将数据集划分为群或簇,并且仅存储聚类表示(例如,质心和直径)。
使用数据小得多的随机样本(子集)表示大型数据集。
假定大型数据集 D D D 包含 N N N 个元组。常用的抽样方法如下所示:
从 D D D 的 N N N 个元组中抽取 s s s 个样本( s < N s
该方法类似于 SRSWOR \text{SRSWOR} SRSWOR,不同之处在于当一个元组从 D D D 中抽取后,记录它,然后放回原处。
将数据集进行分区,从每个分区中按比例抽取样本;例如,对全年级按照班级抽样。
将数据集按某属性划分为 “层”,对每一层抽样。例如,按照年龄抽样。当数据倾斜时抽样可以具有代表性。
采用抽样进行数据归约的优点:得到样本的花费正比例于样本集的大小 s s s,而不是数据集的大小 N N N。因此,抽样的复杂度可能亚线性(sublinear)于数据的大小。其他数据归约技术至少需哟完全扫描 D D D。对于固定的样本大小,抽样的复杂度仅随数据的维数 n n n 线性得增加;而其他技术,如直方图,复杂度随 n n n 呈指数增长。
略
最小-最大规范化对原始数据进行线性变换。假设 m i n A min_A minA 和 m a x A max_A maxA 分别为属性 A A A 的最小值和最大值。最小-最大规范化通过计算
v i ′ = v i − m i n A m a x A − m i n A ( n e w _ m a x A − n e w _ m i n A ) + n e w _ m i n A (3.8) v'_i=\frac{v_i-min_A}{max_A-min_A}(new\_max_A-new\_min_A)+new\_min_A \tag{3.8} vi′=maxA−minAvi−minA(new_maxA−new_minA)+new_minA(3.8)
把 A A A 的值 v i v_i vi 映射到区间 [ n e w _ m i n A , n e w _ m a x A ] [new\_min_A,new\_max_A] [new_minA,new_maxA] 中的 v i ′ v_i^{'} vi′。
最小-最大规范化保持原始数据之间的联系。如果今后输入实例落在 A A A 的原数据值域之外,则该方法将面临 “越界” 错误。
或零均值规范化,属性 A ˉ \bar A Aˉ 的值基于 A A A 的均值和标准差规范化。 A A A 的值 v i v_i vi 被规范化为 v i v_i vi,由下式计算:
v i ′ = v i − A ˉ σ A (3.9) v'_i=\frac{v_i-\bar A}{\sigma_A} \tag{3.9} vi′=σAvi−Aˉ(3.9)
其中, A ˉ \bar A Aˉ 和 σ A \sigma_A σA 分别是属性 A A A 的均值和标准差。
假设 A A A 的取值由 − 986 ∼ 917 -986\sim 917 −986∼917。 A A A 的最大绝对值为 986 986 986。因此,为使用小数定标规范化,我们用 1000 1000 1000(即 j = 3 j=3 j=3)除每个值。因此, − 986 -986 −986 被规范化为 − 0.986 -0.986 −0.986,而 917 917 917 被规范化为 0.917 0.917 0.917。
离散化:将连续属性的范围划分为区间,区间的标签可用于替换实际数据值。通过离散化可以减少数据量。
三种可以离散化的属性:
等宽
等深