1.简介
主成分分析(principal component analysis,PCA)是一种常见的无监督学习方法,其通过正交变化将线性相关变量表示的观测数据转换为少数几个由线性无关变量表示的数据,线性无关的变量称为主成分。主成分的个数通常小于原始变量个数,因此可以通过主成分分析进行降维。PCA常用于发现数据的基本结构及用于其他机器学习方法的预处理。
主成分分析先将给定数据规范化,使得每一变量均值为0,方差为1,然后通过正交变换变成由若干个线性无关的新变量表示的数据。新变量是可能的正交变换中变量的方差的和(信息保存)最大的,方差表示在新变量上信息的大小。将新变量依次称为第一主成分、第二主成分等。
2.定义
给定一个x->y的线性变换:
x
=
(
x
1
,
x
2
,
.
.
.
,
x
m
)
T
x=(x_1,x_2,...,x_m)^T
x=(x1,x2,...,xm)T是m维随机变量,其均值向量为
μ
\mu
μ
μ
=
E
(
x
)
=
(
μ
1
,
μ
2
,
.
.
.
μ
m
)
T
\mu=E(x)=(\mu_1,\mu_2,...\mu_m)^T
μ=E(x)=(μ1,μ2,...μm)T
协方差矩阵为
∑
=
c
o
v
(
x
,
x
)
=
E
[
(
x
−
μ
)
(
x
−
μ
)
T
]
\sum=cov(x,x)=E[(x-\mu)(x-\mu)^T]
∑=cov(x,x)=E[(x−μ)(x−μ)T]
当进行线性变换时:
y
i
=
α
i
T
x
y_i=α_i^Tx
yi=αiTx
由随机变量的性质可知:
- E ( y i ) = α i T μ i E(y_i)=α_i^T\mu_i E(yi)=αiTμi
- v a r ( y i ) = α i T ∑ α i var(y_i)=α_i^T\sumα_i var(yi)=αiT∑αi
- c o v ( y i , y j ) = α i T ∑ α j cov(y_i,y_j)=α_i^T\sumα_j cov(yi,yj)=αiT∑αj
总体主成分定义为:
- 系数向量是单位向量 α i T α i = 1 α_i^Tα_i=1 αiTαi=1
- 变量y之间互不相关
- 变量 y i y_i yi随着i增大,依次为与之前不相关的x线性变换中方差最大的。
3.主要性质及求解
3.1 x的第k主成分是
- y k = α k T x y_k=α_k^Tx yk=αkTx v a r ( y k ) = λ k var(y_k)=\lambda_k var(yk)=λk
- ∑ i = 1 m λ i = ∑ i = 1 m σ i j \sum_{i=1}^{m}\lambda_i=\sum_{i=1}^{m}\sigma_{ij} ∑i=1mλi=∑i=1mσij; σ即x协方差矩阵
- 第k个主成分 y k y_k yk与变量 x i x_i xi的相关系数称为因子 λ k \lambda_k λk是 ρ ( y k , x i ) = ( λ k ) 1 2 α i k ( σ i i ) 1 2 \rho(y_k,x_i)=\frac{(\lambda_k)^\frac{1}{2}α_{ik}}{(\sigma_{ii})^\frac{1}{2}} ρ(yk,xi)=(σii)21(λk)21αik
- 第k个主成分 y k y_k yk与m个变量的因子负荷量满足 ∑ i = 1 m σ i i ρ 2 ( y k , x i ) = λ k \sum_{i=1}^{m}\sigma_{ii}\rho^2(y_k,x_i)=\lambda_k ∑i=1mσiiρ2(yk,xi)=λk
- 第m个主成分与第i个变量x_i的因子负荷量满足 ∑ i = 1 m ρ 2 ( y k , x i ) = 1 \sum_{i=1}^{m}\rho^2(y_k,x_i)=1 ∑i=1mρ2(yk,xi)=1
- x协方差矩阵的第k个特征值, α k α_k αk是对应的单位向量
3.2 x与y的充要条件
m维随机变量
y
=
(
y
1
,
y
2
,
.
.
.
,
y
m
)
T
y=(y_1,y_2,...,y_m)^T
y=(y1,y2,...,ym)T的分量依次是x的第一主成分到第m主成分的充要条件是:
- y = A T x y=A^Tx y=ATx,A为正交矩阵
- y的协方差矩阵为对角矩阵 c o v ( y ) = d i a g ( λ 1 , λ 2 , . . . λ m ) cov(y)=diag(\lambda_1,\lambda_2,...\lambda_m) cov(y)=diag(λ1,λ2,...λm)
- tips:不想关非对角线为0,对角线 v a r ( y k ) = λ k var(y_k)=\lambda_k var(yk)=λk
3.3 主成分个数
主成分分析通常用于降维,一般选择k个主成分代替m个原有变量,使得问题简化(k<<m)
- 对任意正整数 q ≤ m q\le{m} q≤m,考虑正交线性变换 y = B T x y=B^Tx y=BTx, B T B^T BT为q x m矩阵,使得y的协方差矩阵为 ∑ y = B T ∑ B \sum_y=B^T\sum{B} ∑y=BT∑B,则y的协方差矩阵的迹 t r ( ∑ y ) tr(\sum_y) tr(∑y)在 B = A q B=A_q B=Aq时取得最大值, A q A_q Aq由正交矩阵A的前q列组成(迹即特征值和,即主对角线元素和);即当取A的前q列取x的前q个主成分时,能最大限度保留原有方差信息
- A后p列保存信息最少,此时迹最小
- 第k主成分 y k y_k yk的方差贡献率定义为 y k y_k yk的方差与所有方差之和的比 η k = λ k ∑ λ i \eta_k=\frac{\lambda_k}{\sum{\lambda_i}} ηk=∑λiλk
- 定义k个主成分对原有变量 x i x_i xi的贡献率帝国以为 x i x_i xi与 ( y 1 , y 2 , . . . , y n ) (y_1,y_2,...,y_n) (y1,y2,...,yn)的相关系数的平方 ρ ( y k , X ) 2 = ∑ j ( λ k ) α i j 2 ( σ i i ) \rho(y_k,X)^2=\sum_{j}\frac{(\lambda_k)α_{ij}^2}{(\sigma_{ii})} ρ(yk,X)2=∑j(σii)(λk)αij2
4. 规范化
为消除量纲影响,通常对各个随机变量实施规范化,使均值为0,方差为1.
- ∑ i = 1 m λ i = m \sum_{i=1}^{m}\lambda_i=m ∑i=1mλi=m;方差为1
- ρ ( y k , x i ) = ( λ k ) 1 2 α i k \rho(y_k,x_i)={(\lambda_k)^\frac{1}{2}α_{ik}} ρ(yk,xi)=(λk)21αik
5. 算法
- 输入:m x n 样本矩阵X其每一行元素均值为0(规范化)
- 输出: k x n样本主成分矩阵Y
- 构造新矩阵:n x m矩阵: X ′ = 1 ( n − 1 ) 1 2 X T X^{'}=\frac{1}{(n-1)^\frac{1}{2}}X^T X′=(n−1)211XT
- 求截断奇异值分解,得到截断k列后 V T V^T VT
- 得到 Y = V T X Y=V^TX Y=VTX