写这个系列主要目的是巩固和总结数学知识,也是希望以后查阅起来方便。降维方法是研究生期间我所在的组研究过很久的一套内容,我虽然没有搞这个方向,但是也受了很多熏陶。研一刚接触的时候老师讲啊讲,我基本只做了笔记,啥都没懂,数学基础欠缺太多。后来慢慢一一补齐,总算是大概能理解下来,但还是有些许地方心中存疑。到现在熟悉了这些东西的基本思路,也看了很多论文和数学,就有了一些自己的想法。一切就从组内的入门算法——PCA(主成分分析)开始。
优化目标
机器学习中可以用数字表示特征,用数字组成的向量表示样本,用矩阵表示样本集合,这里的维度指的就是向量的长度,或是样本的特征数。因为高维度的数据给存储和运算带来了不便,所以要做降维,降维就是把高维度的样本数据降到低维度,降维方法研究的目标就是在降维的过程中保持原始样本的一些特性,或者使降维后的数据具有某些更好的性质。本文介绍的PCA简单有效,是最经典应用最广泛的降维方法。
假设现有样本集合 X ∈ R D × n X\in \mathbb{R}^{D\times n} X∈RD×n,其中 D D D表示样本的原始维度, n n n表示样本数量, X = [ x 1 , x 2 , ⋯ , x n ] X=[x_1,x_2,\cdots,x_n] X=[x1,x2,⋯,xn], x i ∈ R D × 1 x_i\in \mathbb{R}^{D\times 1} xi∈RD×1是 D D D维的列向量,表示单个样本。显然, X X X的每一列是一个样本, X X X的每一行是一个特征。
PCA寻找一个投影矩阵来完成降维任务,即 Y = W T X Y=W^TX Y=WTX, Y ∈ R d × n Y\in \mathbb{R}^{d\times n} Y∈Rd×n是降完维之后各个样本组成的矩阵, d d d是降维之后的维度数,要求 W ∈ R D × d W\in \mathbb{R}^{D\times d} W∈RD×d是单位投影矩阵,其每一列的模都为1,且不同列的内积为0,即 W T W = I W^TW=I WTW=I。PCA的优化目标是投影方差最大化,它希望各样本投影之后越分散越好,并用方差来度量分散程度。分别举 d = 1 d=1 d=1和 d > 1 d> 1 d>1两种情况来说明。
若
d
=
1
d=1
d=1,这里把投影矩阵写作
w
∈
R
D
×
1
w\in \mathbb{R}^{D\times 1}
w∈RD×1,是一个列向量,降完维后
y
∈
R
1
×
n
=
w
T
X
y\in \mathbb{R}^{1\times n}=w^TX
y∈R1×n=wTX,样本维度数为1,每个样本都只用一个数字表示。在这一个维度上,方差是容易计算的:
max
w
(
y
−
y
‾
)
(
y
−
y
‾
)
T
=
w
T
(
X
−
X
‾
)
(
X
−
X
‾
)
T
w
s
.
t
.
w
T
w
=
1
(1)
\max_w (y-\overline{y})(y-\overline{y})^T \\ = w^T(X-\overline{X})(X-\overline{X})^Tw \tag{1} \\ s.t.\ w^Tw=1
wmax(y−y)(y−y)T=wT(X−X)(X−X)Tws.t. wTw=1(1)
方差前面有个系数
1
n
−
1
\frac{1}{n-1}
n−11,因为是个常数对优化无影响,所以直接忽略了。
而
X
−
X
‾
X-\overline{X}
X−X这一步称为中心化,一般放在PCA的第一步来做,用
X
−
X
‾
X-\overline{X}
X−X的结果来代替
X
X
X,使其每一行的均值都为0,这就是PCA要做中心化的原因:
X
=
X
−
X
‾
=
[
x
1
−
x
‾
,
x
2
−
x
‾
,
⋯
,
x
n
−
x
‾
]
x
‾
=
1
n
∑
i
=
1
n
x
i
X=X-\overline{X}=[x_1-\overline{x},x_2-\overline{x},\cdots,x_n-\overline{x}] \\ \overline{x}=\frac{1}{n}\sum_{i=1}^nx_i
X=X−X=[x1−x,x2−x,⋯,xn−x]x=n1i=1∑nxi
因此公式
(
1
)
(1)
(1)就变为:
max
w
w
T
X
X
T
w
s
.
t
.
w
T
w
=
1
(2)
\max_w w^TXX^Tw \\ s.t.\ w^Tw=1 \tag{2}
wmaxwTXXTws.t. wTw=1(2)
若
d
>
1
d>1
d>1,在一个维度上的方差容易计算,现在降维后的维度数
>
1
>1
>1,这里投影矩阵用
W
∈
R
D
×
d
W\in \mathbb{R}^{D\times d}
W∈RD×d,投影后的样本用
Y
∈
R
d
×
n
=
W
T
X
Y\in \mathbb{R}^{d\times n}=W^TX
Y∈Rd×n=WTX。PCA的观点是最大化各维度上的方差之和:
max
W
∑
i
=
1
d
W
i
T
X
X
T
W
i
=
max
W
t
r
(
W
T
X
X
T
W
)
s
.
t
.
W
T
W
=
I
(3)
\max_W \sum_{i=1}^d W_i^TXX^TW_i \\ =\max_W tr(W^TXX^TW) \\ s.t.\ W^TW=I \tag{3}
Wmaxi=1∑dWiTXXTWi=Wmaxtr(WTXXTW)s.t. WTW=I(3)
W i W_i Wi表示 W W W的第 i i i列。
一般在论文中只写出 d = 1 d=1 d=1的形式,是为了方便表示和理解,这里把稍复杂的 d > 1 d>1 d>1的形式也写出来,方便理解算法全貌。
Lagrangian乘子法求解
公式
(
2
)
(2)
(2)和公式
(
3
)
(3)
(3)都是等式约束的凸优化问题,可以用Lagrangian乘子法解决。注意Lagrangian乘子法要求优化目标必须是凸函数,怎么证明是凸函数?很简单,二阶导是协方差矩阵,而协方差矩阵是半正定的(证明可以看这里
),因此是凸函数。矩阵求导公式及其定义和理解在这里,凸函数的定义和判定在这里。
d = 1 d=1 d=1时的求解
d
=
1
d=1
d=1时,对公式
(
2
)
(2)
(2)列Lagrangian乘子法,并分别令其对
w
w
w和
λ
\lambda
λ的偏导为0:
L
(
w
,
λ
)
=
w
T
X
X
T
w
+
λ
(
1
−
w
T
w
)
∂
∂
w
L
(
w
,
λ
)
=
(
X
X
T
+
X
X
T
)
w
−
2
λ
I
w
=
0
∂
∂
λ
L
(
w
,
λ
)
=
1
−
w
T
w
=
0
L(w,\lambda)=w^TXX^Tw+\lambda (1-w^Tw) \\ \frac{\partial}{\partial w}L(w,\lambda)=(XX^T+XX^T)w-2\lambda Iw=0 \\ \frac{\partial}{\partial \lambda}L(w,\lambda)=1-w^Tw=0
L(w,λ)=wTXXTw+λ(1−wTw)∂w∂L(w,λ)=(XXT+XXT)w−2λIw=0∂λ∂L(w,λ)=1−wTw=0
可得:
X
X
T
w
=
λ
w
w
T
w
=
1
XX^Tw=\lambda w \\ w^Tw=1
XXTw=λwwTw=1
λ
∈
R
\lambda \in \mathbb{R}
λ∈R。注意Lagrangian乘子法偏导为0的点只是取到最值的必要条件,不是充分条件。得到的两个式子,第二个是原始的等式约束,第一个是特征值特征向量的形式,
w
w
w和
λ
\lambda
λ是
X
X
T
XX^T
XXT的对应的特征向量和特征值,显然有
D
D
D组,因为
X
X
T
XX^T
XXT是
D
×
D
D\times D
D×D的正定矩阵。那么取哪一组时能使公式
(
2
)
(2)
(2)最大化呢?我们代回公式
(
2
)
(2)
(2):
w
T
X
X
T
w
=
w
T
λ
w
=
λ
w
T
w
=
λ
w^TXX^Tw=w^T\lambda w=\lambda w^Tw=\lambda
wTXXTw=wTλw=λwTw=λ
也就是说 X X T w = λ w XX^Tw=\lambda w XXTw=λw成立时 w T X X T w w^TXX^Tw wTXXTw的取值就为 λ \lambda λ。这就告诉我们要取最大的 λ \lambda λ,即 w w w应该取 X X T XX^T XXT最大的特征值对应的特征向量,这样就解出来了。
d > 1 d>1 d>1时的解1
d
>
1
d>1
d>1时,公式
(
3
)
(3)
(3)可以写作:
max
W
∑
i
=
1
d
W
i
T
X
X
T
W
i
s
.
t
.
W
i
T
W
i
=
1
,
W
i
T
W
j
=
0
(4)
\max_W \sum_{i=1}^d W_i^TXX^TW_i \\ s.t.\ W_i^TW_i=1,W_i^TW_j=0 \tag{4}
Wmaxi=1∑dWiTXXTWis.t. WiTWi=1,WiTWj=0(4)
列Lagrangian乘子法:
L
(
W
,
λ
,
ρ
)
=
∑
i
d
[
W
i
T
X
X
T
W
i
+
λ
i
(
1
−
W
i
T
W
i
)
]
−
∑
j
≠
i
d
ρ
j
W
i
T
W
j
L(W,\lambda,\rho)= \sum_{i}^d[ W_i^TXX^TW_i +\lambda_i(1-W_i^TW_i)]-\sum_{j\neq i}^d \rho_jW_i^TW_j
L(W,λ,ρ)=i∑d[WiTXXTWi+λi(1−WiTWi)]−j=i∑dρjWiTWj
并分别令其对
W
i
W_i
Wi和
λ
\lambda
λ的偏导为0:
∂
∂
W
i
L
(
W
,
λ
,
ρ
)
=
2
X
X
T
W
i
−
2
λ
i
W
i
−
∑
j
≠
i
d
ρ
j
W
j
=
0
∂
∂
λ
i
L
(
W
,
λ
,
ρ
)
=
1
−
W
i
T
W
i
=
0
∂
∂
ρ
j
L
(
W
,
λ
,
ρ
)
=
W
i
T
W
j
=
0
\frac{\partial}{\partial W_i} L(W,\lambda,\rho)=2XX^TW_i -2\lambda_iW_i- \sum_{j\neq i}^d \rho_j W_j =0\\ \frac{\partial}{\partial \lambda_i} L(W,\lambda,\rho)= 1-W_i^TW_i=0\\ \frac{\partial}{\partial \rho_j} L(W,\lambda,\rho)= W_i^TW_j=0\\
∂Wi∂L(W,λ,ρ)=2XXTWi−2λiWi−j=i∑dρjWj=0∂λi∂L(W,λ,ρ)=1−WiTWi=0∂ρj∂L(W,λ,ρ)=WiTWj=0
显然后二者是两个等式约束,第一个式子可得:
2
X
X
T
W
i
=
2
λ
i
W
i
+
∑
j
≠
i
d
ρ
j
W
j
(5)
2XX^TW_i=2\lambda_iW_i+\sum_{j\neq i}^d \rho_j W_j \tag{5}
2XXTWi=2λiWi+j=i∑dρjWj(5)
这是个必要条件,代回公式
(
4
)
(4)
(4):
∑
i
=
1
d
W
i
T
X
X
T
W
i
=
∑
i
=
1
d
[
W
i
T
(
λ
i
W
i
+
1
2
∑
j
≠
i
d
ρ
j
W
j
)
]
=
∑
i
=
1
d
[
λ
i
W
i
T
W
i
+
1
2
∑
j
≠
i
d
ρ
j
W
i
T
W
j
]
=
∑
i
=
1
d
λ
i
\sum_{i=1}^d W_i^TXX^TW_i \\ =\sum_{i=1}^d [W_i^T(\lambda_iW_i+ \frac{1}{2} \sum_{j\neq i}^d\rho_j W_j)] \\ =\sum_{i=1}^d[\lambda_i W_i^T W_i+\frac{1}{2}\sum_{j\neq i}^d \rho_j W_i^T W_j] \\ =\sum_{i=1}^d\lambda_i
i=1∑dWiTXXTWi=i=1∑d[WiT(λiWi+21j=i∑dρjWj)]=i=1∑d[λiWiTWi+21j=i∑dρjWiTWj]=i=1∑dλi
在公式
(
5
)
(5)
(5)左右同乘
W
i
T
W_i^T
WiT:
2
W
i
T
X
X
T
W
i
=
2
λ
i
W
i
T
W
i
+
∑
j
≠
i
d
ρ
j
W
i
T
W
j
∑
j
≠
i
d
ρ
j
W
i
T
W
j
=
0
W
i
T
X
X
T
W
i
=
λ
i
W
i
T
W
i
,
X
X
T
W
i
=
λ
i
W
i
2W_i^TXX^TW_i=2\lambda_i W_i^TW_i+\sum_{j\neq i}^d \rho_j W_i^T W_j \\ \sum_{j\neq i}^d \rho_j W_i^T W_j =0 \\ W_i^TXX^TW_i=\lambda_i W_i^TW_i ,\ XX^TW_i=\lambda_i W_i
2WiTXXTWi=2λiWiTWi+j=i∑dρjWiTWjj=i∑dρjWiTWj=0WiTXXTWi=λiWiTWi, XXTWi=λiWi
这样就证明了所有的
W
i
W_i
Wi都应该是
X
X
T
XX^T
XXT的特征向量,
λ
i
\lambda_i
λi是
W
i
W_i
Wi对应的特征值,求解公式
(
4
)
(4)
(4)等价于最大化各个
λ
i
\lambda_i
λi之和。
因为
X
X
T
XX^T
XXT是个对称矩阵,其各个特征向量恰好就是相互正交的,因此取
X
X
T
XX^T
XXT的前
d
d
d大的特征值,并做单位化即可。
这种解法是我想了好久想的,算是解决了我的很多疑问。这里面一个关键点在于,我们确信
W
i
W^i
Wi不可能是全0向量,因为那样毫无意义。
d > 1 d>1 d>1时的解2
再给另一种解法,从这里开始:
max
W
t
r
(
W
T
X
X
T
W
)
s
.
t
.
W
T
W
=
I
(3)
\max_W tr(W^TXX^TW) \\ s.t.\ W^TW=I \tag{3}
Wmaxtr(WTXXTW)s.t. WTW=I(3)
Lagrangiana乘子法:
L
(
W
,
λ
)
=
t
r
(
W
T
X
X
T
W
)
+
t
r
[
λ
(
I
−
W
T
W
)
]
L(W,\lambda)=tr(W^TXX^TW)+tr[\lambda(I-W^TW)]
L(W,λ)=tr(WTXXTW)+tr[λ(I−WTW)]
λ
\lambda
λ为对角矩阵。令偏导为0:
∂
∂
W
L
(
W
,
λ
)
=
2
X
X
T
W
−
2
W
λ
=
0
X
X
T
W
=
W
λ
∂
∂
λ
L
(
W
,
λ
)
=
I
−
W
T
W
=
0
\frac{\partial}{\partial W}L(W,\lambda)=2XX^TW-2W\lambda =0 \\ XX^TW=W\lambda \\ \frac{\partial}{\partial \lambda}L(W,\lambda)=I-W^TW=0
∂W∂L(W,λ)=2XXTW−2Wλ=0XXTW=Wλ∂λ∂L(W,λ)=I−WTW=0
到这里可知,
W
W
W的每一列是
X
X
T
XX^T
XXT的一个特征向量,
λ
\lambda
λ的对应对角元是对应的特征值。代回原式:
t
r
(
W
T
X
X
T
W
)
=
t
r
(
W
T
λ
W
)
=
t
r
(
λ
)
tr(W^TXX^TW)=tr(W^T\lambda W)=tr(\lambda)
tr(WTXXTW)=tr(WTλW)=tr(λ)
因此取最大的前 d d d个特征值对应的特征向量。