PCA与SVD
公众号:ChallengeHub(机器学习,NLP,推荐系统,数据分析)
(欢迎大家关注)
PCA介绍和基本思想
主成分分析(PCA)是一种利用正交变换把由线性相关变量表示的观测数据转化为少数几个由线性无关变量表示的数据。
在主成分分析中,首先对给定的数据进行规范化,使得数据的每一变量的平均值为0,方差为1。之后对数据进行正交变换,原来由线性相关变量表示的数据,通过正交变换变成若干个线性无关的新变量表示的数据,新变量是可能的正交变换中变量的方差最大的,方差表示在新变量上信息的大小,将变量依次成为第一主成分,第二主成分。
PCA的相关定义
总体主成分分析的定义:
1 系数向量 α i ⊤ \alpha^{\top}_i αi⊤是单位向量,即 α i ⊤ α i = 1 \alpha^{\top}_i\alpha_i=1 αi⊤αi=1
2 变量 y i , y j y_i,y_j yi,yj不相关,协方差等于0
3 变量 y 1 y_1 y1是 x x x所有的线性变换中方差最大的, y 2 y_2 y2是与 y 1 y_1 y1不相关的 x x x的所有线性变换中方差最大的。
主成分分析的求法
假设 X = x 1 , x 2 , . . . x m X={x_1,x_2,...x_m} X=x1,x2,...xm是 m m m维随机变量, ∑ \sum ∑是 x x x协方差矩阵的, ∑ \sum ∑的特征值为 λ 1 ≥ λ 2 ≥ . . . ≥ λ m ≥ 0 \lambda_1\ge\lambda_2\ge...\ge\lambda_m\ge0 λ1≥λ2≥...≥λm≥0,特征值对应的单位向量分别是 α 1 , α 2 , . . . α m \alpha_1,\alpha_2,...\alpha_m α1,α2,...αm。
则
x
x
x的第
k
k
k主成分是:
y
k
=
α
k
⊤
x
=
α
1
k
x
1
+
α
2
k
x
2
+
.
.
.
+
α
m
k
x
m
y_k=\alpha_k^{\top}x=\alpha_{1k}x_1+\alpha_{2k}x_2+...+\alpha_{mk}x_m
yk=αk⊤x=α1kx1+α2kx2+...+αmkxm
则
x
x
x的第
k
k
k主成分的方差是:
v
a
r
(
y
k
)
=
E
[
(
y
k
−
E
(
y
k
)
)
2
]
=
E
[
(
α
k
⊤
x
−
α
k
⊤
u
)
2
]
var(y_k)=E[(y_k-E(y_k))^2]=E[(\alpha^{\top}_kx-\alpha_k^{\top}u)^2]
var(yk)=E[(yk−E(yk))2]=E[(αk⊤x−αk⊤u)2]
其中
u
=
E
(
x
)
u=E(x)
u=E(x),上式子为:
v
a
r
(
y
k
)
=
E
[
(
α
k
⊤
(
x
−
u
)
)
2
]
=
E
[
α
k
⊤
(
x
−
u
)
2
α
k
]
var(y_k)=E[(\alpha_k^{\top}(x-u))^2]=E[\alpha^{\top}_k(x-u)^2\alpha_k]
var(yk)=E[(αk⊤(x−u))2]=E[αk⊤(x−u)2αk]
因此: v a r ( y k ) = α k ⊤ ∑ α k = λ k var(y_k)=\alpha_k^{\top}\sum\alpha_k=\lambda_k var(yk)=αk⊤∑αk=λk
SVD介绍和基本思想
奇异值分解是一种矩阵因子分解方法,任何一个矩阵都可以表示为三个矩阵的乘积形式,分别是 m m m阶正交矩阵,由降序排列的非负的对角线元素组成的 m ∗ n m*n m∗n矩形对角阵和 n n n阶正交举证。
SVD的基本定理和形式
若
A
A
A为一
m
∗
n
m*n
m∗n的实矩阵,
A
∈
R
m
∗
n
A\in R^{m*n}
A∈Rm∗n,则
A
A
A的奇异分解存在:
A
=
U
∑
V
⊤
A=U\sum V^{\top}
A=U∑V⊤
其中
U
U
U是
m
∗
m
m*m
m∗m阶正交矩阵,V是n阶正交矩阵,
∑
\sum
∑为
m
∗
n
m*n
m∗n阶对角矩阵,其对角元素非负。
假设矩阵 A A A的秩为 r r r,则矩阵 A ⊤ A A^{\top}A A⊤A的矩阵也为 r r r,由于 A ⊤ A A^{\top}A A⊤A矩阵为对称矩阵,因此,它的特征值均大于等于0,它的秩等于大于0的特征值的个数。
λ 1 ≥ λ 2 ≥ . . . ≥ λ r > 0 \lambda_1\ge\lambda_2\ge...\ge\lambda_r>0 λ1≥λ2≥...≥λr>0
λ r + 1 = λ r + 2 . . . λ n = 0 \lambda_{r+1}=\lambda_{r+2}...\lambda_n=0 λr+1=λr+2...λn=0
令:
σ
i
=
λ
i
\sigma_i=\sqrt{\lambda_i}
σi=λi
可以计算相应的特征向量为:
V
1
=
[
v
1
,
v
2
,
.
.
v
r
]
V_1=[v_1,v_2,..v_r]
V1=[v1,v2,..vr]
V 2 = [ v r + 1 , v r + 2 , . . . v n ] V_2=[v_{r+1},v_{r+2},...v_n] V2=[vr+1,vr+2,...vn]
可以构建正交矩阵:
V
=
[
V
1
,
V
2
]
V=[V_1,V_2]
V=[V1,V2]
将
σ
i
\sigma_i
σi排序构建一个
m
∗
n
m*n
m∗n的矩阵对角矩阵
∑
\sum
∑。其中可以用
σ
1
,
.
.
.
σ
r
\sigma_1,...\sigma_r
σ1,...σr构建一个
r
∗
r
r*r
r∗r的对角矩阵
∑
1
\sum_1
∑1,该矩阵处于矩阵
∑
\sum
∑的左上角。
接下来构建实正交矩阵 U U U。
令:
u
j
=
1
σ
j
A
v
j
,
j
=
1
,
2
,
3...
r
u_j=\frac {1}{\sigma_j}Av_j ,j=1,2,3...r
uj=σj1Avj,j=1,2,3...r
令:
A V 1 = U 1 ∑ 1 AV_1=U_1\sum_1 AV1=U1∑1
通过这种方式得到的
u
1
,
u
2
,
.
.
.
u
r
u_1,u_2,...u_r
u1,u2,...ur是正交的,然后计算与
U
1
U_1
U1正交的其它基向量
U
2
U_2
U2,
U
2
=
[
u
r
+
1
,
u
r
+
2
,
.
.
.
u
n
]
U_2=[u_{r+1},u_{r+2},...u_{n}]
U2=[ur+1,ur+2,...un]
U
=
[
U
1
,
U
2
]
U=[U_1,U_2]
U=[U1,U2]。
最后可以证明下
A
=
U
∑
V
T
A=U\sum V^{T}
A=U∑VT
KaTeX parse error: No such environment: equation at position 8: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲\begin{split} …
SVD拓展
上文给定的奇异分解为完全奇异分解,实际上我们经常用到的是紧凑奇异分解或者截断奇异分解。紧凑奇异分解就是上文中的
A = U 1 ∑ 1 V 1 ⊤ A=U_1\sum_1V_1^{\top} A=U1∑1V1⊤
截断奇异分级就是当 A ⊤ A A^{\top}A A⊤A不为0的特征值由 r r r个时,并不会选取所以的特征值与特征向量,只选取前 k k k个特征值,则此时:
A ≈ U k ∑ k V k ⊤ A\approx U_k\sum_kV_k^{\top} A≈Uk∑kVk⊤
奇异分解是一种无损的压缩,但是截断奇异分解以为有有损压缩。
SVD和PCA的关系
结论,可以用求SVD的方法来求PCA。
假设 X X X是已经中心化之后的数据矩阵,每一列都是一个样本,那么协方差矩阵为 1 n X X ⊤ \frac 1nXX^{\top} n1XX⊤。主成分分析的目标函数是通过 W W W投影使得方差最大化。
令 X = U ∑ V ⊤ X=U\sum V^{\top} X=U∑V⊤,则可以得到 X X ⊤ = U ∑ 2 U ⊤ XX^{\top}=U\sum^2 U^{\top} XX⊤=U∑2U⊤。因此我们可以知道此时的 U U U就是我们所需要的 W W W, W = U W=U W=U。
Y = W ⊤ X Y=W^{\top}X Y=W⊤X就是我们常用的降维方法,可得 Y = W ⊤ X = U ⊤ U ∑ V ⊤ = ∑ V ⊤ Y=W^{\top}X=U^{\top}U\sum V^{\top}=\sum V^{\top} Y=W⊤X=U⊤U∑V⊤=∑V⊤,又因为有 X ⊤ X = V ∑ 2 V ⊤ X^{\top}X=V\sum^2V^{\top} X⊤X=V∑2V⊤,所以只需要对矩阵 X T X X^{T}X XTX进行分解得到向量 V , ∑ V,\sum V,∑就可以得到 Y Y Y。因此分解协方差矩阵和内积矩阵均可以求解PCA。