目的:预处理数据,提高数据质量,从而提高挖掘结果的质量。 数据如果能满足应用要求,那么它是高质量的。数据质量涉及到许多因素,包括准确性、完整性、一致性、时效性、可信性和可解释性。
数据预处理方法:数据清理、数据集成和转换、数据归约。
一、数据清理
现实世界的数据一般是不完整、有噪声和不一致的。
数据清理试图填充缺失的值、光滑噪声并识别离群点、纠正 数据中的不一致。
1.1 数据缺失
- 忽略元组(关系数据库中的记录或行,每个元组代表一个对象)
- 人工填写缺失值
- 使用一个全局变量填充缺失值
- 使用属性的中心度量(如均值或中位数)填充缺失值
- 使用与给定元组属同一类的所有样本的属性均值或中位数
- 使用最可能的值填充缺失值
其中方法(3)~(6)使数据有偏,填入的值可能不正确。然而,方法6是最流行的策略。
1.2 噪声数据
噪声是被测量的变量的随机误差或方差。
- 分箱(binning)技术:似乎不很靠谱,不介绍了。
- 回归(regression):可以用一个函数拟合数据来光滑数据。这种技术成为回归。线性回归涉及找出拟合两个属性(或变量)的最佳值,使得一个属性可以用来预测另一个。多元线性回归是线性回归的扩充,其中涉及的属性多于两个,并且数据拟合到一个多维曲面。
- 离群点分析(outlier analysis):可以通过如聚类来检测离群点。聚类将类似的值组织成群或簇。直观的在簇之外的被视为离群点。
二、数据集成
数据挖掘经常需要数据集成(合并来自多个数据存储的数据)。小心集成有助于减少结果数据集的冗余和不一致。
2.1 实体识别问题
数据分析任务多半涉及数据集成。数据集成将多个数据源中数据合并,存放在一个一致的数据存储中,如存放在数据仓库中。这些数据源可能包括多个数据库、数据立方体或一般文件。在数据集成时,有许多问题需要考虑。模式集成和对象匹配可能需要技巧。来自多个信息源的现实世界的等价实体如何才能“匹配”?这涉及到实体识别问题。例如,数据分析者或者计算机如何才能确信一个数据库中customer_id和另一个数据库中的cust_number指的是相同的属性?每个属性的元数据包括名字、含义、数据类型和属性的允许的范围,以及处理空白、零和null值得空值规则。
2.2 冗余和相关分析
冗余是数据集成的另一个重要问题。一个属性(例如,年收入)如果能由另一个或另一组属性“导出”,这个属性可能是冗余的。维性或维命名的不一致也可能导致结果数据集中的冗余。
有些冗余可以被相关分析检测到。给定两个属性,这种分析可以根据可用的数据,度量一个属性能在多大程度上蕴含另一个。对于标称数据,我们使用 X 2 X^2 X2(卡方)检验。对于数值属性,我们使用相关系数(correlation coefficient)和协方差(covariance),它们都评估一个属性的值如何随另一个变化。
标称数据的
X
2
X^2
X2相关检验: 对于标称数据,两个属性A和B之间的相关联系可以通过
X
2
X^2
X2检验发现。假设
A
A
A有
c
c
c个不同的值
a
1
,
a
2
,
.
.
.
,
a
c
a_1, a_2, ..., a_c
a1,a2,...,ac,
B
B
B有
r
r
r个不同的值
b
1
,
b
2
,
.
.
.
,
b
r
b_1, b_2, ..., 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
=
a
i
,
B
=
b
j
)
(A=a_i, B=b_j)
(A=ai,B=bj)联合事件都在表中有自己的单元。
X
2
X^2
X2值(又称为
P
e
a
r
s
o
n
X
2
Pearson \ X^2
Pearson X2统计量),可以使用下式计算:
X
2
=
∑
i
=
1
c
∑
j
=
1
r
(
o
i
j
−
e
i
j
)
2
e
i
j
X^2 = \sum ^c_{i =1} \sum^r_{j = 1} \frac{(o_{ij} - e_{ij})^2}{e_{ij}}
X2=i=1∑cj=1∑reij(oij−eij)2
其中,
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
e_{ij} = \frac{count(A = a_i) * count(B = b_j)}{n}
eij=ncount(A=ai)∗count(B=bj)
其中, 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的元组个数。共 r ∗ c r*c r∗c个单元上计算。
X 2 X^2 X2 统计检验假设 A A A 和 B B B 是独立的。检验基于显著水平,具有自由度 ( r − 1 ) ∗ ( c − 1 ) (r−1)∗(c−1) (r−1)∗(c−1)。如果可以拒绝该假设,则我们说A和B统计相关。
数值数据的相关系数: 对于数值数据,我们可以通过计算属性
A
A
A和
B
B
B的相关系数,估计这两个属性的相关度
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
r_{A,B} = \frac{\sum^n_{i = 1}(a_i - \bar{A})(b_i - \bar{B})}{n \sigma A \ \ \sigma B} = \frac{\sum^n_{i = 1}(a_i \ b_i) - n \bar{A} \bar{B}}{n \sigma A \ \ \sigma B}
rA,B=nσA σB∑i=1n(ai−Aˉ)(bi−Bˉ)=nσA σB∑i=1n(ai bi)−nAˉBˉ
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的标准差。注意, − 1 ≤ r A , B ≤ 1 −1 \leq r_{A,B} \leq 1 −1≤rA,B≤1。如果 r A , B r_{A,B} rA,B大于0,则 A A A和 B B B是正相关的,这意味着 A A A的值随 B B B的值增加而增加。该值越大相关性越强。因此,一个较高的 r A , B r_{A,B} rA,B值表明 A A A或 B B B可以作为冗余而删除。如果该值为0则 A A A和 B B B独立,并且他们之间不存在相关性。如果该值小于0,则 A A A和 B B B是负相关,一个值随另一个值减少而增加。
数值数据的协方差: 在概率论与统计学中,协方差和方差是两个类似的度量,评估两个属性如何一起变化。考虑两个数值属性
A
A
A、
B
B
B和
n
n
n次观测的集合
(
a
1
,
b
1
)
,
.
.
.
,
(
a
n
,
b
n
)
(a_1,b_1), ..., (a_n,b_n)
(a1,b1),...,(an,bn)。
A
A
A和
B
B
B的均值又分别称为
A
A
A和
B
B
B的期望值,即
E
(
A
)
=
A
ˉ
=
∑
i
n
i
=
1
a
i
n
E(A) = \bar{A} = \frac{\sum^n_i{i = 1}a_i}{n}
E(A)=Aˉ=n∑ini=1ai
和
E
(
B
)
=
B
ˉ
=
∑
i
n
i
=
1
b
i
n
E(B) = \bar{B} = \frac{\sum^n_i{i = 1}b_i}{n}
E(B)=Bˉ=n∑ini=1bi
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
cov(A,B) = E (A - \bar{A})(B - \bar{B}) = \frac{\sum^n_{i =1}(a_i - \bar{A})(b_i - \bar{B})}{n}
cov(A,B)=E(A−Aˉ)(B−Bˉ)=n∑i=1n(ai−Aˉ)(bi−Bˉ)
如果我们把
r
A
,
B
r_{A,B}
rA,B与上式相比较,则我们可以看到:
r
A
,
B
=
c
o
v
(
A
,
B
)
σ
A
σ
B
r_{A,B} = \frac{cov(A,B)}{\sigma A \sigma B}
rA,B=σAσBcov(A,B)
三、数据归约
数据归约的策略包括维归约、数量归约和数据压缩。
- 维归约:减少所考虑的随机变量或属性的个数,维归约包括小波变换和主成分分析,它们把原始数据变换或投影到较小的空间。属性子集选择是一种维归约方法,将其中不相关、弱相关或冗余的属性或维经过检测删除。
- 数量归约:用替代的、较小的数据表示形式替换原数据。
- 数据压缩:使用变换,以便得到原数据的归约或压缩表示。如果原数据能够从压缩后的数据重构,而不损失信息,则该数据归约称为无损的。如果我们能近似的重构原数据,则该数据归约称为有损的。
四、数据变换与数据离散化
在数据变换中,数据被变换或统一成适合挖掘的形式。数据变换策略包括如下几种:
- 光滑:去掉数据中的噪声。这类技术包括分箱、回归和聚类。
- 属性构造(或特征构造):可以由给定的属性构造新的属性并添加到属性集中,以帮助挖掘。
- 聚集:对数据进行汇集或聚集。例如,可以聚集日销售数据,计算月和年销售量。通常,这一步用来为多个抽象层的数据分析构造数据立方体。
- 规范化:把属性数据按比例缩放,使之落在一个特定的小区间,如-1.0 ~ 1.0或者0.0 ~ 1.0。
- 离散化:数值属性的原始值用区间标签或概念标签替换。这些标签可以递归的组织成更高层概念,导致数值属性的概念分层。
- 由标称数据产生概念分层:属性,如street,可以泛化到较高的概念层,如ciry或country。
4.1 通过规范化变换数据
所用的度量单位可能影响数据分析。下面将描述三种数据规范化:
- 最小-最大规范化: 对原始数据进行线性变换。假设
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 v'_i = \frac{v_i -min_A}{max_A - min_A} (new\_max_A - new\_min_A) + new\_min_A vi′=maxA−minAvi−minA(new_maxA−new_minA)+new_minA
把 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的原始数据值之外,则该方法将面临越界的错误。
- z分数规范化(零均值规范化): 属性
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 v'_i = \frac{v_i - \bar{A}}{\sigma_A} vi′=σAvi−Aˉ
其中, A ˉ \bar{A} Aˉ和 σ A \sigma_A σA分别为属性 A A A的均值和标准差。当属性 A A A的实际最大最小值未知,或离群点左右了最小-最大规范化时,该方法有用。
- 小数定标规范化: 通过移动属性 A A A的值的小数点位置进行规范化。小数点的移动位数依赖于A的最大绝对值。A的值 v i v_i vi被规范化为 v i ′ v'_i vi′,通过下式计算:
- v i ′ = v i 1 0 j v'_i = \frac{v_i}{10^j} vi′=10jvi
其中j是 M a x ( ∣ v ′ ∣ ) < 1 Max(|v'|) < 1 Max(∣v′∣)<1的最小整数(这里我着实也有点不大理解)。