主成分分析的概念与发展
目录
摘要:
主成分分析是一种历史悠久的数据分析方法,在众多领域得到广泛的应用。本文讲述了主成分分析的应用背景和基本概念,从两种角度分析了主成分分析的原理,讲解了使用主成分分析的流程,并就两种角度的原理进行了详细的推导,最后依据不同主成分分析方法,总结了主成分分析的发展。
关键字:
主成分分析;机器学习
1 主成分分析的概念
1.1主成分分析的研究背景
在过去的数据统计与如今发展起来的人工智能等研究领域,在研究各类问题时,都需要通过对原始数据的处理,提取或学习到某些特征向量,以此来解决所要研究的问题。但是提取到的高维的特征向量中,可能存在冗余信息。也就是说,特征向量中的某些特征之间具有相关性。这时,需要从高维相关的特征向量中,得到主要有效的信息,就需要用到某些方法。并且,随着研究的问题日益复杂,特征向量的维度越来越高,给原本就复杂的问题,带来了更多的困难,也需要降低特征向量维度来降低问题的复杂性。而主成分分析是数据降维方法中,一种常用的方法,在各领域的研究中广泛使用。
1.2 主成分分析的思想
主成分分析是一种多维数据分析方法,将原来可能存在线性相关的高维原始数据,通过线性变换,转变为线性无关的低维数据。从另一角度上来说,主成分分析是一种无监督的数据降维方法,也就是寻找原始数据集的投影方向,使得该数据集在投影方向上的投影数据方差最大,以此来得到原始数据集的最优投影方向,并得到投影后数据。这些投影后数据,在得以最大限度的保留原始数据的信息的同时,能够去除到原始数据中冗余成分,留下主要成分。
2 主成分分析的原理
想要从高维的特征向量中,降维得到最主要的特征,最主要是通过最大化方差或最小化损失两种思路来进行推导。以下对这两种思路进行介绍,并对他们背后的原理进行探讨。
2.1 最大化方差
将原始数据通过线性变换得到重构后的数据,而线性变换的方式有无数种,最大化方差的意思是,求重构后的数据之间方差最大的某一种线性变换。这一思路背后的核心思想是,所求的线性变换的基,能够让重构后的数据在最大限度保留原始数据信息。而最大化方差法的这一思路,存在一种假设,即“方差越大,信息量越大。” 但是,方差是用来度量数据分布的离散程度的。的确,从直观上来看,经过重构后的数据,方差越大,在新的空间表示的数据之间越分散,保留原始数据的信息看似是越多的。但是基于信息熵来定义的信息量,是用来度量数据的不确定性程度的,两者之间存在一定的相关性,但这两者并不完全等价。举个例子来进行解释,衣服和鞋子的价格这两种信号源,一件衣服的价格可能是25元和100元,概率都为0.5,一双鞋子的价格是50元和100元,概率也都为0.5。显然,衣服价格的方差要更大一些,但这两种物品的价格都只有两种可能,并且概率也相同,那么根据信息熵的计算公式它们所包含的信息量是相同的。从这一角度来说,重构后的数据方差最大,并不能直接等价于保留原始数据信息量最大这一需求。
2.2 最小重构代价
假设原始数据在n维的空间中,那么所有的原始数据,都可以由n个正交的n维向量线性表示,但这n个向量的线性组组合有无数个,我们需要从中找出某一个最优的组合,并从中选出m(m<n)个向量进行线性变换,m维即所求的维度,这同最大化方差似乎并没有太大的差别。但最小化损失的意思是,经过选出m个向量进行线性变换后的数据,要与原始数据之间的差别最小。也就是说,选出来对原始数据进行线性变换的基,是能够使经过线性变换的数据和原始数据之间的差别最小,即损失最小。最小化损失法这一思路,其背后的核心思想是,原始数据经过线性变换或者说重构后,使得原始数据得到降维,但数据中所包含的信息会产生一部分损失,会使重构后的数据与原始数据之间产生一定差别。最小化损失,即最小化这一差别,使原始数据损失的信息最少。
3 主成分分析流程
3.1 流程
输入:n维数据集
X
=
{
X
1
,
X
2
,
…
X
M
}
X=\left \{X_1,X_2,…X_M\right \}
X={X1,X2,…XM},
X
X
X大小为
n
×
M
n×M
n×M,降到m维
输出:经降维后的m维数据集
Y
=
{
X
1
′
,
X
2
′
,
…
X
M
′
}
Y=\left \{X_1^{'},X_2^{'},…X_M^{'}\right \}
Y={X1′,X2′,…XM′},Y大小为m×M
- 将原始数据去中心化 X = X − X ‾ X=X- \overline{X} X=X−X,则 X ‾ \overline{X} X为0
- 计算去中心化后数据的协方差矩阵 X X T XX^T XXT
- 对协方差矩阵 X X T XX^T XXT进行特征值分解
- 取前m大特征值个所对应的m个n维列特征向量,组成特征向量矩阵 W = { w 1 ′ , w 2 ′ , … w m ′ } W= \left \{w_1^{'},w_2^{'},…w_m^{'}\right \} W={w1′,w2′,…wm′}, W W W大小为 n × m n×m n×m,即为所求的线性变换矩阵
- 经 Y = W T × X Y=W^{T×X} Y=WT×X得到降维后的数据 Y = { X 1 ′ , X 2 ′ , , … X M ′ } Y=\left \{X_1^{'},X_2^{'},,…X_M^{'}\right \} Y={X1′,X2′,,…XM′}
3.2 降维的维度的选择
能量百分率准则:设协方差矩阵共有N个特征值,特征值从大到小排序为
λ
1
,
λ
2
,
…
λ
N
λ_1,λ_2,…λ_N
λ1,λ2,…λN,选取前M个特征值所对应的特征向量:
前M个特征值所对应的能量比例:
P
M
=
∑
i
=
1
M
λ
i
∑
i
=
1
N
λ
i
P_M=\frac {\sum_{i=1}^{M}\lambda_i}{\sum_{i=1}^{N}\lambda_i}
PM=∑i=1Nλi∑i=1Mλi
能量比例
P
M
P_M
PM一般为大于95%或99%
4 主成分分析的推导
本文中依据最大化方差思想和最小化损失思想,分别推导如何得到降维后的数据,这两种方法的推导过程其实大同小异。
4.1 基于最大化方差思想的推导
设有原始数据
x
1
,
x
2
,
…
x
M
x_1,x_2,…x_M
x1,x2,…xM,每个数据为N维(N>M),求一个大小为
M
×
N
M×N
M×N的线性变换矩阵A,使得
Y
=
A
(
X
−
X
‾
)
Y=A(X-\overline{X})
Y=A(X−X) ,得到降维后的Y,将X的维度降为M(实际应用中可降维至任意维度,不一定为原始数据个数M,此处为了方便设为M)。
条件:
- X = { x 1 , x 2 , … x M } X=\left \{x_1,x_2,…x_M\right \} X={x1,x2,…xM},其中 x 1 , x 2 , … x M x_1,x_2,…x_M x1,x2,…xM是 1 × N 1×N 1×N维列向量
- A = { a 1 a 2 ⋮ a M } A=\begin{Bmatrix}a_1\\a_2\\\vdots\\ a_M\\\end{Bmatrix} A=⎩ ⎨ ⎧a1a2⋮aM⎭ ⎬ ⎫,其中 a 1 , a 2 , … a M a_1,a_2,…a_M a1,a2,…aM是1×N维行向量
- 矩阵 A A A中 a 1 , a 2 , … a M a_1,a_2,…a_M a1,a2,…aM为正交向量
目标:求出矩阵A,使原始数据X降维后,得到的数据Y方差最大
方法:
m
a
x
i
m
i
z
e
∑
k
=
1
M
∥
a
i
(
x
k
−
x
‾
)
∥
maximize\sum_{k=1}^M\left \|a_i\left (x_k-\overline{x}\right )\right \|
maximize∑k=1M∥ai(xk−x)∥,使用拉格朗日乘子法,依次求出
a
i
,
i
∈
[
1
,
⋯
,
M
]
a_i,i\in\left [1,⋯,M\right ]
ai,i∈[1,⋯,M]
步骤:
求
a
1
a_1
a1
1)
∑
k
=
1
M
∥
a
1
x
k
−
x
ˉ
∥
2
=
∑
k
=
1
M
a
1
(
x
k
−
x
ˉ
)
(
x
k
−
x
ˉ
)
T
a
1
T
\sum^{M}_{k=1}\left \| a_1x_k - \bar{x} \right \|^2=\sum^{M}_{k=1}a_1\left (x_k-\bar{x}\right )\left (x_k -\bar{x}\right)^Ta_1^T
∑k=1M∥a1xk−xˉ∥2=∑k=1Ma1(xk−xˉ)(xk−xˉ)Ta1T,其中
∑
=
∑
k
=
1
M
(
x
k
−
x
ˉ
)
T
\sum=\sum^M_{k=1}\left (x_k-\bar{x}\right )^T
∑=∑k=1M(xk−xˉ)T为协方差矩阵
2)由条件
a
1
a
1
T
=
1
a_1a_1^T=1
a1a1T=1,使用拉格朗日乘子法:
E
(
a
1
)
=
a
1
∑
a
1
T
−
λ
1
(
a
1
a
1
T
−
1
)
E\left (a_1\right )=a_1\sum a_1^T-\lambda_1\left (a_1a_1^T-1\right )
E(a1)=a1∑a1T−λ1(a1a1T−1)
3)
∂
E
∂
a
1
=
∑
a
1
T
−
λ
1
a
1
T
=
0
→
∑
a
1
T
=
λ
1
a
1
T
\dfrac{\partial E}{\partial a_1}=\sum a_1^T-\lambda_1a_1^T=0\rightarrow\sum a_1^T=\lambda_1a_1^T
∂a1∂E=∑a1T−λ1a1T=0→∑a1T=λ1a1T,由此可以得到特征值
λ
1
\lambda_1
λ1和对应的特征向量
a
1
T
a_1^T
a1T
4)又
a
1
∑
a
1
T
=
a
1
λ
1
a
1
T
=
λ
1
a_1\sum a_1^T=a_1\lambda_1a_1^T=\lambda_1
a1∑a1T=a1λ1a1T=λ1可得
λ
1
\lambda_1
λ1为协方差矩阵的最大特征值,
a
1
T
a_1^T
a1T为最大特征值对应的特征向量
求
a
2
a_2
a2
1)由条件
a
2
a
2
T
=
1
a_2a_2^T=1
a2a2T=1和
a
2
a
1
T
=
0
a_2a_1^T=0
a2a1T=0,使用拉格朗日乘子法:
E
(
a
2
)
=
a
2
∑
a
2
T
−
λ
2
(
a
2
a
2
T
−
1
)
−
β
a
2
a
1
T
E\left (a_2\right )=a_2\sum a_2^T-\lambda_2\left (a_2a_2^T-1\right )-\beta a_2a_1^T
E(a2)=a2∑a2T−λ2(a2a2T−1)−βa2a1T
2)得
∂
E
∂
a
2
=
∑
a
2
T
−
λ
2
a
2
T
−
β
a
1
T
=
0
\dfrac{\partial E}{\partial a_2}=\sum a_2^T-\lambda_2a_2^T-\beta a_1^T=0
∂a2∂E=∑a2T−λ2a2T−βa1T=0
3)证明
β
=
0
\beta=0
β=0,
(
∑
a
2
T
−
λ
2
a
2
T
−
β
a
1
T
)
T
=
a
2
∑
T
−
λ
2
a
2
−
β
a
1
\left (\sum a_2^T-\lambda_2a_2^T-\beta a_1^T\right )^T=a_2\sum^T-\lambda_2a_2-\beta a_1
(∑a2T−λ2a2T−βa1T)T=a2∑T−λ2a2−βa1,又
∑
=
∑
T
\sum=\sum^T
∑=∑T,则右乘
a
1
a_1
a1,得
a
2
∑
a
1
T
−
λ
2
a
2
a
1
T
−
β
a
1
a
1
T
=
λ
1
a
2
a
1
T
−
β
→
β
=
0
a_2\sum a_1^T-\lambda_2a_2a_1^T-\beta a_1a_1^T=\lambda_1a_2a_1^T-\beta\rightarrow\beta=0
a2∑a1T−λ2a2a1T−βa1a1T=λ1a2a1T−β→β=0
4)得
∂
E
∂
a
2
=
∑
a
2
T
−
λ
2
a
2
T
→
∑
a
2
T
=
λ
2
a
2
T
\dfrac{\partial E}{\partial a_2}=\sum a_2^T-\lambda_2a_2^T\rightarrow\sum a_2^T=\lambda_2a_2^T
∂a2∂E=∑a2T−λ2a2T→∑a2T=λ2a2T,由此可得第二大特征值
λ
2
\lambda_2
λ2和对应的特征向量
a
2
T
a_2^T
a2T
依此类推,得到
a
3
,
a
4
,
…
,
a
M
a_3,a_4,\dots,a_M
a3,a4,…,aM,得到所求矩阵
A
=
{
a
1
a
2
⋮
a
M
}
A=\begin{Bmatrix}a_1\\ a_2\\ \vdots\\ a_M\end{Bmatrix}
A=⎩
⎨
⎧a1a2⋮aM⎭
⎬
⎫
4.2 基于最小重构代价思想
设有原始数据
x
1
,
x
2
,
…
x
M
x_1,x_2,\dots x_M
x1,x2,…xM,每个数据为N维(N>M),求一个重构矩阵为A,大小为N
×
\times
×N,使得
Y
=
A
(
X
−
X
ˉ
)
Y=A\left (X-\bar{X}\right )
Y=A(X−Xˉ),得到重构Y,选择重构矩阵中的前M个向量,将X的维度降为M(实际应用中可降维至任意维度,不一定为原始数据个数M,此处为了方便设为M)。
条件:
1)
X
=
{
x
1
x
2
⋮
x
N
}
X=\begin{Bmatrix}x_1\\ x_2\\ \vdots\\ x_N\end{Bmatrix}
X=⎩
⎨
⎧x1x2⋮xN⎭
⎬
⎫,其中
x
1
,
x
2
,
…
x
N
x_1,x_2,\dots x_N
x1,x2,…xN是M维行向量
2)
A
=
{
a
1
,
a
2
,
…
a
N
}
A=\left \{a_1,a_2,\dots a_N\right \}
A={a1,a2,…aN},其中
a
1
,
a
2
,
…
,
a
N
是
M
维列向量
a_1,a_2,\dots ,a_N是M维列向量
a1,a2,…,aN是M维列向量
3)矩阵A中
a
1
,
a
2
,
…
a
N
a_1,a_2,\dots a_N
a1,a2,…aN为正交向量
目标:求出矩阵A,使原始数据X降维后,得到的数据Y与原始数据的损失最小
步骤:
1)
z
k
=
x
k
−
x
ˉ
z_k=x_k-\bar{x}
zk=xk−xˉ(去中心化),
∑
=
∑
k
=
1
M
(
x
k
−
x
ˉ
)
(
x
k
−
x
ˉ
)
=
∑
k
=
1
M
z
k
z
k
T
\sum=\sum^M_{k=1}\left (x_k-\bar{x}\right )\left (x_k-\bar{x}\right )=\sum_{k=1}^{M}z_kz_k^T
∑=∑k=1M(xk−xˉ)(xk−xˉ)=∑k=1MzkzkT
2)将去中心化的数据重构
∑
i
=
1
N
z
k
a
i
\sum_{i=1}^Nz_ka_i
∑i=1Nzkai,选M个向量降维
∑
i
=
1
M
z
k
a
i
\sum^M_{i=1}z_ka_i
∑i=1Mzkai
3)重构代价:
∑
k
=
1
N
∥
∑
i
=
1
N
z
k
a
i
−
∑
i
=
1
M
z
k
a
i
∥
\sum_{k=1}^N\left \|\sum_{i=1}^Nz_ka_i-\sum_{i=1}^Mz_ka_i\right \|
∑k=1N∥
∥∑i=1Nzkai−∑i=1Mzkai∥
∥
4)
→
∑
k
=
1
N
∥
∑
i
=
M
+
1
N
z
k
a
i
∥
2
\rightarrow\sum^N_{k=1}\left \|\sum^N_{i=M+1}z_ka_i\right \|^2
→∑k=1N∥
∥∑i=M+1Nzkai∥
∥2
5)
→
∑
i
=
M
=
1
N
∑
k
=
1
N
(
z
k
a
i
)
2
→
∑
i
=
M
+
1
N
∑
k
=
1
N
a
i
z
k
a
k
T
a
i
T
→
∑
i
=
M
+
1
N
a
i
∑
a
i
T
\rightarrow\sum_{i=M=1}^N\sum_{k=1}^N\left (z_ka_i\right )^2\rightarrow\sum_{i=M+1}^N\sum_{k=1}^Na_iz_ka_k^Ta_i^T\rightarrow\sum_{i=M+1}^Na_i\sum a_i^T
→∑i=M=1N∑k=1N(zkai)2→∑i=M+1N∑k=1NaizkakTaiT→∑i=M+1Nai∑aiT
6)
m
i
n
i
m
i
z
e
∑
i
=
M
+
1
N
a
i
∑
a
i
T
minimize\sum_{i=M+1}^Na_i\sum a_i^T
minimize∑i=M+1Nai∑aiT,由条件
a
i
a
i
T
=
1
a_ia_i^T=1
aiaiT=1,使用拉格朗日乘子法:
E
(
a
i
)
=
∑
i
=
M
+
1
M
a
i
∑
a
i
T
−
λ
(
a
i
a
i
T
−
1
)
E\left (a_i\right )=\sum^M_{i=M+1}a_i\sum a_i^T-\lambda\left (a_ia_i^T-1\right )
E(ai)=∑i=M+1Mai∑aiT−λ(aiaiT−1),后同最大化方差推导
5 主成分分析的发展
5.1 核主成分分析
1997年Bernhard等人提出核主成分分析[1]。可以认为,PCA是一个去属性相关性的过程,这里的相关性主要指的是线性相关性,那么对于非线性的情况,就涉及到Kernel—PCA即所谓的核PCA(KPCA)。直观来说,核PCA就是将原样本通过核映射后,在核空间基础上做PCA降维。
5.2 二维主成分分析
2004年Jiam Yang等人提出二维主成分分析[2]。传统的人脸识别在使用PCA的时候,采用的方法往往是将图像矩阵转为向量。作者认为这种方式导致每一个样本的维度大,而样本少,并且将二维转化为一维的过程中可能会产生信息的丢失,这样构建的协方差矩阵并不合理。所以,作者提出了一种2维的PCA,在进行PCA主特征提取的时候无需进行矢量化。
5.2 稀疏主成分分析
2006年Trevor等人提出稀疏主成分分析[3]。虽然传统的主成分分析在数据处理和降维中已经有了广泛的应用,但是它也存在着一些问题。传统主成分分析经常会使得分析结果难以解释,因为每一个主成分都是原始的所有变量的线性组合,那么每一个主成分到底表达的是什么方面的特征就很难看出来。论文中首先证明了主成分分析的求解可以被表示为一个回归形式的最优化问题,然后在这个最优化问题中引入lasso惩罚项,使得一些载荷能够缩小到0从而减少主成分中关联的原始变量个数(变量稀疏化)。通过这个方法我们就可以把主成分中主要的部分凸显出来,更加容易解释。
5.3 鲁棒主成分分析
2011年J.CAND`ES等人提出一种鲁棒主成分分析[4]。鲁棒主成分分析(Robust PCA)考虑的是这样一个问题:一般我们的数据矩阵X会包含结构信息,也包含噪声。那么我们可以将这个矩阵分解为两个矩阵相加,一个是低秩的(由于内部有一定的结构信息,造成各行或列间是线性相关的),另一个是稀疏的(由于含有噪声,而噪声是稀疏的),则鲁棒主成分分析可以写成以下的优化问题:鲁棒性体现在PCA假设我们的数据的噪声是高斯的,对于大的噪声或者严重的离群点,PCA会被它影响,导致无法正常工作。而Robust PCA则不存在这个假设。它只是假设它的噪声是稀疏的,而不管噪声的强弱如何。
参考文献
[1] B. SchSlkopf, A. Smola, and K.-R. Muller, “Kernel Principal Component Analysis Bernhard,” Gerstner W., Germond A., Hasler M., Nicoud JD. Artif. Neural Networks — ICANN’97. ICANN 1997. Lect. Notes Comput. Sci., no. 3, pp. 1–6, 2011, [Online]. Available: papers://22880b5a-c3f7-4a61-9e33-ed4c97fcb3c7/Paper/p254
[2] J. Yang, D. Zhang, A. F. Frangi, and J. Y. Yang, “Two-Dimensional PCA: A New Approach to Appearance-Based Face Representation and Recognition,” IEEE Trans. Pattern Anal. Mach. Intell., vol. 26, no. 1, pp. 131–137, 2004, doi: 10.1109/TPAMI.2004.1261097.
[3] H. Zou, T. Hastie, and R. Tibshirani, “Sparse principal component analysis,” J. Comput. Graph. Stat., vol. 15, no. 2, pp. 265–286, 2006, doi: 10.1198/106186006X113430.
[4] E. J. Candès, X. Li, Y. Ma, and J. Wright, “Robust principal component analysis?,” J. ACM, vol. 58, no. 3, 2011, doi: 10.1145/1970392.1970395.
参考资料
[1]https://www.cnblogs.com/pinard/p/6239403.html
[2]https://blog.csdn.net/scar2016/article/details/116530933?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-5-116530933-blog-115424019.pc_relevant_antiscanv2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-5-116530933-blog-115424019.pc_relevant_antiscanv2&utm_relevant_index=10
[3] http://blog.codinglabs.org/articles/pca-tutorial.html
[4] MOOC浙江大学机器学习课程