7.4.4 主成分分析 PCA
假设我们研究的对象具有相关属性,令属性向量为
x
=
(
x
1
,
x
2
,
⋯
,
x
m
)
\mathbf{x} = (x_1,x_2,\cdots,x_m)
x = ( x 1 , x 2 , ⋯ , x m ) 即有
m
m
m 个属性。例如分析学生成绩,每个学生有数学、语文、英语、物理、化学等
5
5
5 门学科成绩,则成绩向量为
x
=
(
x
1
,
x
2
,
⋯
,
x
5
)
\mathbf{x} = (x_1,x_2,\cdots,x_5)
x = ( x 1 , x 2 , ⋯ , x 5 ) 即有
5
5
5 个属性。我们收集了
n
n
n 个学生的成绩,则所有学生成绩构成数据矩阵
A
=
[
x
1
,
x
2
,
⋯
,
x
n
]
A = [\mathbf{x}_1,\mathbf{x}_2,\cdots,\mathbf{x}_n]
A = [ x 1 , x 2 , ⋯ , x n ] 即数据矩阵每列为一个学生成绩向量,共有
n
n
n 个向量。本节为了表述方便,把数据矩阵每列向量记为
x
i
\mathbf{x}_i
x i 或
a
i
\mathbf{a}_i
a i 。每个学生成绩向量是
m
m
m 维空间的点,数据矩阵是
n
n
n 个点构成的点云。这些点云虽然位于
m
m
m 维空间,但大部分情况下位于
m
m
m 维空间中低维子空间,因为每个学生成绩高度相关,即成绩好的学生每门课成绩都好,成绩差的学生每门课成绩都差。由于点云位于低维子空间,所以其真实维度远小于
m
m
m 维。
PCA分析之前,先要对数据进行中心化,即每个新属性
x
i
′
=
(
x
i
−
x
ˉ
i
)
x'_i = (x_i - \bar x_i)
x i ′ = ( x i − x ˉ i ) 其中
x
ˉ
i
\bar x_i
x ˉ i 是属性平均值。例如学生成绩,先计算所有学生数学的平均值,然后新数学成绩为数学成绩-平均值,其它科目成绩同样处理。数学描述为记
x
ˉ
\mathbf{\bar x}
x ˉ 为属性平均值,则新属性为
x
i
′
=
x
i
−
x
ˉ
\mathbf{x}'_i = \mathbf{x}_i - \mathbf{\bar x}
x i ′ = x i − x ˉ 。为了简化符号,把中心化后数据矩阵还是记为
A
A
A 。
根据奇异值分解
A
T
u
i
=
σ
i
v
i
A^T\mathbf{u}_i = \sigma_i \mathbf{v}_i
A T u i = σ i v i 得
(
A
T
u
i
)
T
A
T
u
i
=
(
σ
i
v
i
)
T
σ
i
v
i
=
σ
i
2
(A^T\mathbf{u}_i)^TA^T\mathbf{u}_i = (\sigma_i \mathbf{v}_i)^T\sigma_i \mathbf{v}_i = \sigma^2_i
( A T u i ) T A T u i = ( σ i v i ) T σ i v i = σ i 2
令向量
y
i
=
A
T
u
i
\mathbf{y}_i = A^T\mathbf{u}_i
y i = A T u i ,则其分量
y
i
j
y_{ij}
y i j 表示第
j
j
j 个学生成绩向量
x
j
\mathbf{x}_j
x j 与向量
u
i
\mathbf{u}_i
u i 的内积,内积
y
i
j
y_{ij}
y i j 可以看作第
j
j
j 个学生第
i
i
i 门“综合科目”“加权”成绩
x
j
T
u
i
=
u
i
1
x
1
+
u
i
2
x
2
+
⋯
+
u
i
m
x
m
\mathbf{x}_j^T\mathbf{u}_i = u_{i1}x_1+u_{i2}x_2+\cdots+u_{im}x_m
x j T u i = u i 1 x 1 + u i 2 x 2 + ⋯ + u i m x m ,权重为
u
i
j
u_{ij}
u i j ,由于
u
i
\mathbf{u}_i
u i 为单位向量,故权重的平方和为1 。如果把
u
i
\mathbf{u}_i
u i 加权后的成绩
y
i
\mathbf{y}_i
y i 看作第
i
i
i 门“综合科目”的成绩,则学生有
m
m
m 门“综合科目”的成绩,称为新成绩。向量
y
i
\mathbf{y}_i
y i 就是所有学生第
i
i
i 门“综合科目”的成绩构成的成绩向量,根据
y
i
T
y
i
=
σ
i
2
\mathbf{y}^T_i\mathbf{y}_i = \sigma^2_i
y i T y i = σ i 2 知其方差为
1
n
−
1
σ
i
2
\frac{1}{n-1}\sigma^2_i
n − 1 1 σ i 2 ,其中
n
n
n 是学生数,由于系数
1
n
−
1
\frac{1}{n-1}
n − 1 1 是固定的,后面为了书写方便,方差省略该常系数。故每门新成绩的方差为
σ
1
2
,
σ
2
2
,
⋯
,
σ
m
2
\sigma^2_1,\sigma^2_2,\cdots,\sigma^2_m
σ 1 2 , σ 2 2 , ⋯ , σ m 2 。因为数据已经中心化,所以样本每个属性的均值为
0
0
0 ,新属性的均值也是
0
0
0 ,所以新属性的平方就是方差。根据能量守恒定律:奇异值平方和等于所有元素平方和,新成绩的方差之和包含了数据矩阵
A
A
A 所有的信息。由于
σ
1
≥
σ
2
≥
⋯
≥
σ
m
\sigma_1 \ge \sigma_2 \ge \cdots \ge \sigma_m
σ 1 ≥ σ 2 ≥ ⋯ ≥ σ m 当其前
k
k
k 门新成绩方差占总方差的
99
%
或
99.9
%
99\% 或 99.9\%
9 9 % 或 9 9 . 9 % 时,我们可以只用前
k
k
k 门新成绩表示成绩矩阵,达到数据压缩目的,前
k
k
k 门新成绩称为主成分,这就是主成分分析,一般有
k
≪
m
k \ll m
k ≪ m 。
k
k
k 为点云子空间的维度,是数据矩阵真实维度。第一个主成分最重要,重要性为
σ
1
2
/
∑
i
σ
i
2
\sigma^2_1/\sum_i{\sigma^2_i}
σ 1 2 / ∑ i σ i 2 ,重要性依次减小。
y
i
=
A
T
u
i
\mathbf{y}_i = A^T\mathbf{u}_i
y i = A T u i 还可以看作每个样本点数据
a
i
\mathbf{a}_i
a i 在
u
i
\mathbf{u}_i
u i 方向上的投影,所有投影构成向量
y
i
\mathbf{y}_i
y i ,第一个方向投影
u
1
\mathbf{u}_1
u 1 的方差最大,故称为第一主方向,
u
2
\mathbf{u}_2
u 2 的方差其次,故称为第二主方向,PCA就是依次找到最大的前
k
k
k 个主方向,主成分方向互相正交 。
(
A
T
u
i
)
T
(
A
T
u
j
)
(A^T\mathbf{u}_i)^T(A^T\mathbf{u}_j)
( A T u i ) T ( A T u j ) 表示第
i
i
i 门“综合科目”和第
j
j
j 门“综合科目”的协方差
(
A
T
u
i
)
T
(
A
T
u
j
)
=
u
i
T
A
A
T
u
j
=
u
i
T
σ
j
2
u
j
=
0
(A^T\mathbf{u}_i)^T(A^T\mathbf{u}_j) = \mathbf{u}^T_iAA^T\mathbf{u}_j=\mathbf{u}^T_i\sigma^2_j\mathbf{u}_j = 0
( A T u i ) T ( A T u j ) = u i T A A T u j = u i T σ j 2 u j = 0
故任意两门不同的“综合科目”的协方差为 0,即表示这些科目成绩不相关解耦了,所以主成分之间都是解耦的,这是主成分分析的第二个优点。
主成分分析快速证明方法如下:
矩阵
A
A
T
AA^T
A A T 是什么呢?就是协方差矩阵!第五章介绍过,请大家复习下。
A
A
T
=
U
Σ
2
U
T
AA^T = U\Sigma^2 U^T
A A T = U Σ 2 U T 得
U
T
A
A
T
U
=
(
U
T
A
)
(
U
T
A
)
T
=
Σ
2
U^TAA^TU = (U^TA)(U^TA)^T = \Sigma^2
U T A A T U = ( U T A ) ( U T A ) T = Σ 2 ,令
Y
=
U
T
A
=
[
u
1
T
A
⋮
u
m
T
A
]
Y = U^TA = \left[ \begin{matrix} \mathbf{u}^T_1A \\ \vdots \\ \mathbf{u}^T_mA \end{matrix} \right]
Y = U T A = ⎣ ⎢ ⎡ u 1 T A ⋮ u m T A ⎦ ⎥ ⎤
即为“综合科目”成绩矩阵,由
Y
Y
T
=
Σ
2
YY^T = \Sigma^2
Y Y T = Σ 2 知第
i
i
i 门“综合科目”方差为
σ
i
2
\sigma^2_i
σ i 2 ,第
i
i
i 门“综合科目”和第
j
j
j 门“综合科目”的协方差为 0 ,数据矩阵
Y
Y
Y 的前
k
k
k 行向量
Y
=
U
T
A
=
[
u
1
T
A
⋮
u
k
T
A
]
Y = U^TA = \left[ \begin{matrix} \mathbf{u}^T_1A \\ \vdots \\ \mathbf{u}^T_kA \end{matrix} \right]
Y = U T A = ⎣ ⎢ ⎡ u 1 T A ⋮ u k T A ⎦ ⎥ ⎤
即为主成分。由
Y
=
U
T
A
Y = U^TA
Y = U T A 即对数据矩阵
A
A
A 进行旋转变换
U
T
U^T
U T 得到主成分
Y
Y
Y ,矩阵
Y
Y
Y 的每列数据为每个学生新成绩向量。所以 PCA 算法本质上是对数据点云进行旋转变换,变换后数据矩阵的协方差矩阵为对角阵
Σ
2
\Sigma^2
Σ 2 ,即各个主成分无相关性。
数据矩阵重构
假设选出前
k
k
k 个主成分方向
u
1
,
⋯
,
u
k
\mathbf{u}_1,\cdots,\mathbf{u}_k
u 1 , ⋯ , u k ,样本
a
i
\mathbf{a}_i
a i 对应的主成分(坐标)为
a
i
T
u
1
,
⋯
,
a
i
T
u
k
\mathbf{a}^T_i\mathbf{u}_1,\cdots,\mathbf{a}^T_i\mathbf{u}_k
a i T u 1 , ⋯ , a i T u k ,则利用主成分重构样本
a
i
\mathbf{a}_i
a i 为:
a
i
C
=
u
1
a
i
T
u
1
+
⋯
+
u
k
a
i
T
u
k
=
(
u
1
u
1
T
+
⋯
+
u
k
u
k
T
)
a
i
=
U
k
U
k
T
a
i
\mathbf{a}^C_i = \mathbf{u}_1\mathbf{a}^T_i\mathbf{u}_1+\cdots+\mathbf{u}_k\mathbf{a}^T_i\mathbf{u}_k \\ = (\mathbf{u}_1\mathbf{u}^T_1+\cdots+\mathbf{u}_k\mathbf{u}^T_k)\mathbf{a}_i \\ = U_kU^T_k\mathbf{a}_i
a i C = u 1 a i T u 1 + ⋯ + u k a i T u k = ( u 1 u 1 T + ⋯ + u k u k T ) a i = U k U k T a i
数据矩阵
A
A
A 的重构矩阵为
A
C
=
U
k
U
k
T
A
=
P
A
A^C = U_kU^T_kA = PA
A C = U k U k T A = P A ,其中矩阵
P
P
P 是投影矩阵,所以PCA分析本质上就是投影变换,是线性变换。重构残差为
Δ
A
=
A
−
U
k
U
k
T
A
=
(
E
−
U
k
U
k
T
)
A
\Delta A = A - U_kU^T_kA = (E-U_kU^T_k)A
Δ A = A − U k U k T A = ( E − U k U k T ) A ,重构残差一般是由噪声引起的,故主成分方向获得的重构数据矩阵具有去噪效果。因为每个重构样本
a
i
C
\mathbf{a}^C_i
a i C 均位于
k
k
k 维子空间内,故重构矩阵
A
C
A^C
A C 也位于
k
k
k 维子空间内,即
r
a
n
k
A
C
=
k
rank A^C = k
r a n k A C = k ,重构矩阵
A
C
A^C
A C 是所有秩为
k
k
k 的矩阵中与原矩阵
A
A
A 最接近的矩阵,这和矩阵低秩近似结论一致。当
k
=
r
a
n
k
A
=
r
k = rank A = r
k = r a n k A = r 时即取所有主成分方向,则重构残差为零。
几何图像
根据每个样本点数据
a
i
\mathbf{a}_{i}
a i 在第一主方向
u
1
\mathbf{u}_1
u 1 上的投影的方差最大,知样本点在此方向最分散,为第一主方向,最大方差为最大奇异值平方。第二主方向垂直于第一主方向,且投影方差第二大,方差为第二大奇异值平方。第三主方向垂直于第一和第二主方向,且投影方差第三大,方差为第三大奇异值平方。依此类推。
点云位于
m
m
m 维空间,假设存在一个超椭球可以紧密包围点云,注意是最紧密的,超椭球轴不一定和坐标轴平行,则超椭球第一长轴对应的方向就是第一主方向,第二长轴对应的方向就是第二主方向,依此类推。注意长轴长度不是对应奇异值,但正相关,即长轴长度越长则对应奇异值越大。举个例子,假设样本有3个属性,则点云位于3维空间,三维椭球包围了点云,则椭球第一长轴方向就是第一主方向,第二长轴对应的方向就是第二主方向,依此类推。由于椭球是三维的,故有三个主成分。