CH4 主成分分析(PCA)
利用正交变换来对一系列可能相关的变量的观测值进行线性变换,从而投影维一系列线性不相关变量的值,这些不相关变量称为主成分
4.1 概念与特点
- 概念
- 思想是将m维特征映射到k维上(k<m),这k维是全新的蒸饺特征。这k维特征称为主成分(PC),是重新构造出来的k维特征
- 特点
- 源于质心的矢量
- 主成分#1指向最大方差的方向
- 各后续主成分与前一主成分正交,且指向残差子空间最大方差的方向
4.2 解释
对于
Y
=
P
X
Y = PX
Y=PX
(
P
11
P
12
…
P
1
n
P
21
P
22
…
P
2
n
⋮
⋮
⋱
⋮
P
c
1
P
c
2
…
P
c
n
)
(
X
11
X
12
…
X
1
m
X
21
X
22
…
X
2
m
⋮
⋮
⋱
⋮
X
n
1
X
n
2
…
X
n
m
)
\left(\begin{matrix} P_{11} & P_{12} & \dots & P_{1n} \\ P_{21} & P_{22} & \dots & P_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ P_{c1} & P_{c2} & \dots & P_{cn} \end{matrix} \right) \left(\begin{matrix} X_{11} & X_{12} & \dots & X_{1m} \\ X_{21} & X_{22} & \dots & X_{2m} \\ \vdots & \vdots & \ddots & \vdots \\ X_{n1} & X_{n2} & \dots & X_{nm} \end{matrix} \right)
P11P21⋮Pc1P12P22⋮Pc2……⋱…P1nP2n⋮Pcn
X11X21⋮Xn1X12X22⋮Xn2……⋱…X1mX2m⋮Xnm
=
(
P
11
X
11
+
P
12
X
21
+
⋯
+
P
1
n
X
n
1
…
P
21
X
11
+
P
22
X
21
+
⋯
+
P
2
n
X
n
1
…
⋮
⋮
⋱
⋮
P
c
1
X
11
+
P
c
2
X
21
+
⋯
+
P
c
n
X
n
1
…
⋮
)
=\left(\begin{matrix} P_{11}X_{11}+P_{12}X_{21}+\cdots+P_{1n}X_{n1} & \dots\\ P_{21}X_{11}+P_{22}X_{21}+\cdots+P_{2n}X_{n1} & \dots & \vdots\\ \vdots & \ddots & \vdots \\ P_{c1}X_{11}+P_{c2}X_{21}+\cdots+P_{cn}X_{n1} & \dots & \vdots\\ \end{matrix} \right)
=
P11X11+P12X21+⋯+P1nXn1P21X11+P22X21+⋯+P2nXn1⋮Pc1X11+Pc2X21+⋯+PcnXn1……⋱…⋮⋮⋮
如果X每一列表示一个样本,每一行表示1个属性,如上,X经过P的投影从n维转化为了c维,如果c<n,那么我们就达到了降维的目的
4.3 为什么要对输入数据进行中心化操作
如果有m个样本数据,中心化操作如下
x
i
←
x
i
−
1
m
∑
i
=
1
m
x
i
x_i \leftarrow x_i -\frac{1}{m}\sum^m_{i=1}x_i
xi←xi−m1i=1∑mxi
即:使特征的平均值为0,方差为1
如果中心不固定,虽然点的相对位置不变,但是坐标绝对值不同,就会导致没办法很好的量化点的分散程度。
我们求协方差的时候,先会将每个样本减去平均值,在进行取平方再平均的运算。中心化的操作可以看成求协方差的一部分。
4.4 目的
我们希望通过降维使样本之间更加可分
- 对同一个属性,不同样本在这个属性的方差要尽量大
- 投影之后样本与样本之间的线性相关性要尽量小
4.5 证明
为什么计算样本的协方差矩阵,并作特征值分解?
从以上两个目的出发我们来看Y
对于一个方阵
记
Y
=
(
y
1
,
y
2
,
…
,
y
n
)
Y = (y_1, y_2, \dots, y_n)
Y=(y1,y2,…,yn)
Y
Y
T
=
(
y
1
2
y
1
y
2
…
y
1
y
n
y
2
y
1
y
2
2
…
y
2
y
n
⋮
⋮
⋱
⋮
y
n
y
1
y
n
y
2
…
y
n
2
)
YY^T = \left(\begin{matrix} y_1^2 & y_1y_2 & \dots & y_1y_n \\ y_2y_1 & y_2^2 & \dots & y_2y_n \\ \vdots & \vdots & \ddots & \vdots \\ y_ny_1 & y_ny_2 & \dots & y_n^2 \end{matrix}\right)
YYT=
y12y2y1⋮yny1y1y2y22⋮yny2……⋱…y1yny2yn⋮yn2
如果 Y Y Y的每一行均值为0的话, Y Y T YY^T YYT对角线上刚好是方差,而不在对角线上的刚好是样本之间的协方差
即:
若
Y
=
P
X
Y = PX
Y=PX:
则
Y
Y
T
=
(
P
X
)
(
P
X
)
T
=
P
X
X
T
P
T
YY^T = (PX)(PX)^T = PXX^TP^T
YYT=(PX)(PX)T=PXXTPT
很明显, X X T XX^T XXT是个实对称矩阵
实对称矩阵一定可以正交对角化
如果我们想要将
Y
Y
T
YY^T
YYT中除了对角线以外的元素全化为0,也就是求一个P,让
X
X
T
XX^T
XXT正交对角化,即:使
P
X
X
T
P
T
=
d
i
a
g
(
λ
1
,
λ
2
,
…
,
λ
n
)
,
λ
1
≥
λ
2
≥
…
PXX^TP^T = diag(\lambda_1, \lambda_2, \dots, \lambda_n),\lambda_1\ge\lambda_2\ge\dots
PXXTPT=diag(λ1,λ2,…,λn),λ1≥λ2≥…
对角线以外的元素全化为0,即最小化Y的各个属性之间的协方差。因为各个属性之间没有相关,才能让属性差异最大,说明属性分布更加离散
P就是特征值按照位置对应的特征向量。
接着我们将原式拆解:
P
X
X
T
P
T
≈
λ
1
p
1
p
1
T
+
λ
2
p
2
p
2
T
+
⋯
+
λ
k
p
k
p
k
T
PXX^TP^T \approx \lambda_1p_1p_1^T+\lambda_2p_2p_2^T+\dots+\lambda_kp_kp_k^T
PXXTPT≈λ1p1p1T+λ2p2p2T+⋯+λkpkpkT
取前k大的特征值和对应的特征向量,能得到 P X X T P T PXX^TP^T PXXTPT的近似,所以用这些特征向量构成P,P的维度是 k × n k\times n k×n,就得到我们需要的变换矩阵P了
4.6 主成分分析的结论
- 将m个样本沿着维度的方向0均值化后按行排成一个矩阵 X m , n X_{m,n} Xm,n并计算得到协方差矩阵 A = X T X A = X^TX A=XTX
- 计算协方差矩阵A的n个特征值 λ 1 , λ 2 , … , λ n \lambda_1, \lambda_2,\dots,\lambda_n λ1,λ2,…,λn(可能有重复值)和对应的特征向量 u 1 , u 2 , … , u n u_1, u_2, \dots,u_n u1,u2,…,un
- 将n个特征值按照从大到小的顺序进行排序,相应的将n个特征向量也排序
- 选前k个特征向量,按列排列得到一个变换矩阵 T n , k T_{n,k} Tn,k,每个样本经过变换矩阵后得到降维后的样本(由n维变为k维)