本文参考主成分分析降维原理——PCA数学推导及深度学习(2.12)。
应用层面的推导参考【机器学习】降维——PCA(非常详细)及PCA的数学原理
主成分分析是一个简单的机器学习算法,可以通过基础的线性代数知识推导。
假设在 R n \mathbb{R}^{n} Rn空间中我们有 m m m个点 { x ( 1 ) , . . . , x ( m ) } \{\mathbf{x}^{(1)},...,\mathbf{x}^{(m)}\} {x(1),...,x(m)},我们希望对这些点进行有损压缩。有损压缩表示我们使用更少的内存,但损失一些精度去存储这些点。我们希望损失的精度尽可能少。
一种编码这些点的方式是用低维表示。对于每个点 x ( i ) ∈ R n \mathbf{x}^{(i)}\in\mathbb{R}^{n} x(i)∈Rn,会有一个对应的编码向量 c i ∈ R l \mathbf{c}^{i}\in\mathbb{R}^{l} ci∈Rl。如果 l l l比 n n n小,那么我们便使用了更少的内存来存储原来的数据。我们希望找到一个编码函数,根据输入返回编码, f ( x ) = c f(\mathbf{x})=\mathbf{c} f(x)=c;我们也希望找到一个解码函数,给定编码重构输入, x ≈ g ( f ( x ) ) x\approx g(f(\mathbf{x})) x≈g(f(x))。
PCA 由我们选择的解码函数而定。具体地,为了简化解码器,我们使用矩阵乘法将编码映射回 R n \mathbb{R}^{n} Rn,即 g ( c ) = D c g(\mathbf{c}) = D\mathbf{c} g(c)=Dc,其 D ∈ R n × l D\in\mathbb{R}^{n\times l} D∈Rn×l是定义解码的矩阵。
目前为止所描述的问题,可能会有多个解。因为如果我们按比例地缩小所有点对应的编码向量 c i c_{i} ci,那么我们只需按比例放大 D : , i D_{:,i} D:,i,即可保持结果不变。为了使问题有唯一解,我们限制 D D D 中所有列向量都有单位范数。
计算这个解码器的最优编码可能是一个困难的问题。为了使编码问题简单一些,PCA限制 D D D的列向量彼此正交(注意,除非 l = n l=n l=n,否则严格意义上 D D D不是一个正交矩阵)。
为了将这个基本想法变为我们能够实现的算法,首先我们需要明确如何根据每一个输入
x
\mathbf{x}
x得到一个最优编码
c
∗
c^{*}
c∗。一种方法是最小化原始输入向量
x
\mathbf{x}
x和重构向量
g
(
c
∗
)
g(\mathbf{c}^{*})
g(c∗)之间的距离。我们使用范数来衡量它们之间的距离。在PCA算法中,我们使用
L
2
L^{2}
L2 范数:
c
∗
=
a
g
r
min
∥
x
−
g
(
c
)
∥
2
.
\mathbf{c^{*}}=agr\min\|\mathbf{x}-g(\mathbf{c})\|_{2}.
c∗=agrmin∥x−g(c)∥2.
我们可以用平方
L
2
L^{2}
L2 范数替代
L
2
L^{2}
L2 范数,因为两者在相同的值
c
\mathbf{c}
c上取得最小值。这是因为
L
2
L^{2}
L2 范数是非负的,并且平方运算在非负值上是单调递增的。
c
∗
=
a
g
r
min
c
∥
x
−
g
(
c
)
∥
2
2
.
\mathbf{c^{*}}=agr\min\limits_{\mathbf{c}}\|\mathbf{x}-g(\mathbf{c})\|_{2}^{2}.
c∗=agrcmin∥x−g(c)∥22.
该最小化函数可以简化成:
(
x
−
g
(
c
)
)
T
(
x
−
g
(
c
)
)
=
x
T
x
−
x
T
g
(
c
)
−
g
(
c
)
T
x
+
g
(
c
)
T
g
(
c
)
=
x
T
x
−
2
x
T
g
(
c
)
+
g
(
c
)
T
g
(
c
)
(\mathbf{x}-g(\mathbf{c}))^{T}(\mathbf{x}-g(\mathbf{c}))=\mathbf{x}^{T}\mathbf{x}-\mathbf{x}^{T}g(\mathbf{c})-g(\mathbf{c})^{T}\mathbf{x}+g(\mathbf{c})^{T}g(\mathbf{c})=\mathbf{x}^{T}\mathbf{x}-2\mathbf{x}^{T}g(\mathbf{c})+g(\mathbf{c})^{T}g(\mathbf{c})
(x−g(c))T(x−g(c))=xTx−xTg(c)−g(c)Tx+g(c)Tg(c)=xTx−2xTg(c)+g(c)Tg(c)
因为第一项x⊤x 不依赖于c,所以我们可以忽略它,得到如下的优化目标:
c
∗
=
a
g
r
min
c
−
2
x
T
g
(
c
)
+
g
(
c
)
T
g
(
c
)
.
\mathbf{c}^{*}=agr\min\limits_{\mathbf{c}}-2\mathbf{x}^{T}g(\mathbf{c})+g(\mathbf{c})^{T}g(\mathbf{c}).
c∗=agrcmin−2xTg(c)+g(c)Tg(c).
更进一步,我们代入
g
(
c
)
g(\mathbf{c})
g(c)的定义:
c
∗
=
a
g
r
min
c
−
2
x
T
D
c
+
c
T
D
T
D
c
=
a
g
r
min
c
−
2
x
T
D
c
+
c
T
c
\mathbf{c}^{*}=agr\min\limits_{\mathbf{c}}-2\mathbf{x}^{T}D\mathbf{c}+\mathbf{c}^{T}D^{T}D\mathbf{c}=agr\min\limits_{\mathbf{c}}-2\mathbf{x}^{T}D\mathbf{c}+\mathbf{c}^{T}\mathbf{c}
c∗=agrcmin−2xTDc+cTDTDc=agrcmin−2xTDc+cTc
我们可以通过向量微积分来求解这个最优化问题,对
c
\mathbf{c}
c求偏导,并令:
∇
c
(
−
2
x
T
D
c
+
c
T
c
)
=
−
2
D
T
x
+
2
c
=
0
\nabla_{\mathbf{c}}(-2\mathbf{x}^{T}D\mathbf{c}+\mathbf{c}^{T}\mathbf{c})=-2D^{T}\mathbf{x}+2\mathbf{c}=0
∇c(−2xTDc+cTc)=−2DTx+2c=0
则:
c
=
D
T
x
.
\mathbf{c}=D^{T}\mathbf{x}.
c=DTx.
这使得算法很高效:最优编码
x
\mathbf{x}
x只需要一个矩阵-向量乘法操作。为了编码向量,我们使用编码函数:
f
(
x
)
=
D
T
x
.
f(\mathbf{x})=D^{T}\mathbf{x}.
f(x)=DTx.
进一步使用矩阵乘法,我们也可以定义PCA重构操作:
r
(
x
)
=
g
(
f
(
x
)
)
=
D
D
T
x
.
r(\mathbf{x})=g(f(\mathbf{x}))=DD^{T}\mathbf{x}.
r(x)=g(f(x))=DDTx.
接下来,我们需要挑选编码矩阵
D
D
D。要做到这一点,我们回顾最小化输入和重构之间
L
2
L^{2}
L2 距离的这个想法。因为我们用相同的矩阵
D
D
D对所有点进行解码,我们不能再孤立地看待每个点。反之,我们必须最小化所有维数和所有点上的误差矩阵Frobenius范数,记
X
=
[
x
(
1
)
,
.
.
.
,
x
(
m
)
]
X=[\mathbf{x}^{(1)},...,\mathbf{x}^{(m)}]
X=[x(1),...,x(m)]:
D
∗
=
arg min
D
∥
X
−
D
D
T
X
∥
F
2
,
s
.
t
.
D
T
D
=
I
l
D^{*}=\argmin\limits_{D}\|X-DD^{T}X\|_{F}^{2},s.t. D^{T}D=I_{l}
D∗=Dargmin∥X−DDTX∥F2,s.t.DTD=Il
暂时不考虑约束,我们可以将Frobenius 范数简化成下面的形式:
arg min
D
∥
X
−
D
D
T
X
∥
F
2
=
arg min
D
T
r
[
(
X
−
D
D
T
X
)
T
(
X
−
D
D
T
X
)
]
=
arg min
D
[
T
r
(
X
T
X
)
−
2
T
r
(
X
T
D
D
T
X
)
+
T
r
(
X
T
D
D
T
D
D
T
X
)
]
=
arg min
D
[
−
2
T
r
(
X
T
D
D
T
X
)
+
T
r
(
X
T
D
D
T
D
D
T
X
)
]
=
arg min
D
[
−
T
r
(
X
T
D
D
T
X
)
]
=
arg max
D
[
T
r
(
D
T
X
X
T
D
)
]
\begin{aligned} &\argmin\limits_{D}\|X-DD^{T}X\|_{F}^{2}\\ =&\argmin\limits_{D}Tr[(X-DD^{T}X)^{T}(X-DD^{T}X)]\\ =&\argmin\limits_{D}[Tr(X^{T}X)-2Tr(X^{T}DD^{T}X)+Tr(X^{T}DD^{T}DD^{T}X)]\\ =&\argmin\limits_{D}[-2Tr(X^{T}DD^{T}X)+Tr(X^{T}DD^{T}DD^{T}X)]\\ =&\argmin\limits_{D}[-Tr(X^{T}DD^{T}X)]\\ =&\argmax\limits_{D}[Tr(D^{T}XX^{T}D)]\\ \end{aligned}
=====Dargmin∥X−DDTX∥F2DargminTr[(X−DDTX)T(X−DDTX)]Dargmin[Tr(XTX)−2Tr(XTDDTX)+Tr(XTDDTDDTX)]Dargmin[−2Tr(XTDDTX)+Tr(XTDDTDDTX)]Dargmin[−Tr(XTDDTX)]Dargmax[Tr(DTXXTD)]
由于
X
X
T
XX^{T}
XXT为
n
×
n
n\times n
n×n实对称矩阵,因此其存在
n
n
n个实数(非负)特征值,设为
{
λ
1
,
λ
2
,
.
.
.
,
λ
n
}
\{\lambda_{1},\lambda_{2},...,\lambda_{n}\}
{λ1,λ2,...,λn}(假设
λ
1
≥
λ
2
≥
.
.
.
≥
λ
n
\lambda_{1}\geq\lambda_{2}\geq...\geq\lambda_{n}
λ1≥λ2≥...≥λn),和
n
n
n个正交的特征向量(不妨设为标准正交向量)设为
{
v
1
,
v
2
,
.
.
.
,
v
n
}
\{\mathbf{v}_{1},\mathbf{v}_{2},...,\mathbf{v}_{n}\}
{v1,v2,...,vn},即存在标准正交矩阵
P
=
[
v
1
,
v
2
,
.
.
.
,
v
n
]
P=[\mathbf{v}_{1},\mathbf{v}_{2},...,\mathbf{v}_{n}]
P=[v1,v2,...,vn]满足
P
T
X
X
T
=
Λ
⇔
X
X
T
=
P
Λ
P
T
P^{T}XX^{T}=\Lambda \Leftrightarrow XX^{T}=P\Lambda P^{T}
PTXXT=Λ⇔XXT=PΛPT.
记
D
=
[
d
1
,
.
.
.
,
d
l
]
D=[\mathbf{d}_{1},...,\mathbf{d}_{l}]
D=[d1,...,dl],则有
arg max
D
T
D
=
I
(
d
1
T
X
X
T
d
1
+
d
2
T
X
X
T
d
2
+
.
.
.
+
d
l
T
X
X
T
d
l
)
≤
arg max
D
T
D
=
I
(
d
1
T
X
X
T
d
1
)
+
arg max
D
T
D
=
I
(
d
2
T
X
X
T
d
2
+
.
.
.
+
d
l
T
X
X
T
d
l
)
\begin{aligned} &\argmax\limits_{D^{T}D=I}(\mathbf{d}_{1}^{T}XX^{T}\mathbf{d}_{1}+\mathbf{d}_{2}^{T}XX^{T}\mathbf{d}_{2}+...+\mathbf{d}_{l}^{T}XX^{T}\mathbf{d}_{l})\\ \leq&\argmax\limits_{D^{T}D=I}(\mathbf{d}_{1}^{T}XX^{T}\mathbf{d}_{1})+\argmax\limits_{D^{T}D=I}(\mathbf{d}_{2}^{T}XX^{T}\mathbf{d}_{2}+...+\mathbf{d}_{l}^{T}XX^{T}\mathbf{d}_{l}) \end{aligned}
≤DTD=Iargmax(d1TXXTd1+d2TXXTd2+...+dlTXXTdl)DTD=Iargmax(d1TXXTd1)+DTD=Iargmax(d2TXXTd2+...+dlTXXTdl)
由Reyleigh商最大最小定理,
arg max
D
T
D
=
I
(
d
1
T
X
X
T
d
1
)
=
λ
m
a
x
(
X
X
T
)
=
λ
1
\argmax\limits_{D^{T}D=I}(\mathbf{d}_{1}^{T}XX^{T}\mathbf{d}_{1})=\lambda_{max}(XX^{T})=\lambda_{1}
DTD=Iargmax(d1TXXTd1)=λmax(XXT)=λ1
根据
D
T
D
=
I
D^{T}D=I
DTD=I,
d
2
∈
{
s
p
a
n
(
v
2
,
.
.
.
,
v
n
)
⋂
(
d
2
T
d
2
=
1
)
}
\mathbf{d}_{2} \in \{span(\mathbf{v}_{2},...,\mathbf{v}_{n})\bigcap(\mathbf{d}_{2}^{T}\mathbf{d}_{2}=1)\}
d2∈{span(v2,...,vn)⋂(d2Td2=1)},因为用标准正交基可以表示任何向量,于是对任意的
d
2
\mathbf{d}_{2}
d2可以表示为:
d
2
=
[
v
2
,
.
.
.
,
v
n
]
[
d
22
,
d
23
,
.
.
.
,
d
2
n
]
T
\mathbf{d}_{2}=[\mathbf{v}_{2},...,\mathbf{v}_{n}][d_{22},d_{23},...,d_{2n}]^{T}
d2=[v2,...,vn][d22,d23,...,d2n]T
因此
arg max
D
T
D
=
I
(
d
2
T
X
X
T
d
2
)
=
arg max
D
T
D
=
I
(
λ
2
d
22
+
λ
3
d
23
+
.
.
.
+
λ
n
d
2
n
)
≤
λ
2
\argmax\limits_{D^{T}D=I}(\mathbf{d}_{2}^{T}XX^{T}\mathbf{d}_{2}) =\argmax\limits_{D^{T}D=I}(\lambda_{2}d_{22}+\lambda_{3}d_{23}+...+\lambda_{n}d_{2n})\leq\lambda_{2}
DTD=Iargmax(d2TXXTd2)=DTD=Iargmax(λ2d22+λ3d23+...+λnd2n)≤λ2
由于
d
2
=
v
2
\mathbf{d}_{2}=\mathbf{v}_{2}
d2=v2时,等号成立,于是有
arg max
D
T
D
=
I
(
d
2
T
X
X
T
d
2
)
=
λ
2
\argmax\limits_{D^{T}D=I}(\mathbf{d}_{2}^{T}XX^{T}\mathbf{d}_{2})=\lambda_{2}
DTD=Iargmax(d2TXXTd2)=λ2
于是有
arg max
D
T
D
=
I
(
d
2
T
X
X
T
d
2
+
.
.
.
+
d
l
T
X
X
T
d
l
)
≤
λ
2
+
arg max
D
T
D
=
I
(
d
3
T
X
X
T
d
3
+
.
.
.
+
d
l
T
X
X
T
d
l
)
\argmax\limits_{D^{T}D=I}(\mathbf{d}_{2}^{T}XX^{T}\mathbf{d}_{2}+...+\mathbf{d}_{l}^{T}XX^{T}\mathbf{d}_{l})\leq\lambda_{2}+\argmax\limits_{D^{T}D=I}(\mathbf{d}_{3}^{T}XX^{T}\mathbf{d}_{3}+...+\mathbf{d}_{l}^{T}XX^{T}\mathbf{d}_{l})
DTD=Iargmax(d2TXXTd2+...+dlTXXTdl)≤λ2+DTD=Iargmax(d3TXXTd3+...+dlTXXTdl)
归纳可得,
arg max
D
T
D
=
I
(
d
1
T
X
X
T
d
1
+
d
2
T
X
X
T
d
2
+
.
.
.
+
d
l
T
X
X
T
d
l
)
≤
λ
1
+
λ
2
+
.
.
.
+
λ
l
\argmax\limits_{D^{T}D=I}(\mathbf{d}_{1}^{T}XX^{T}\mathbf{d}_{1}+\mathbf{d}_{2}^{T}XX^{T}\mathbf{d}_{2}+...+\mathbf{d}_{l}^{T}XX^{T}\mathbf{d}_{l})\leq\lambda_{1}+\lambda_{2}+...+\lambda_{l}
DTD=Iargmax(d1TXXTd1+d2TXXTd2+...+dlTXXTdl)≤λ1+λ2+...+λl
同时,容易验证,当
d
1
=
v
1
,
.
.
.
,
d
l
=
v
l
\mathbf{d}_{1}=\mathbf{v}_{1},...,\mathbf{d}_{l}=\mathbf{v}_{l}
d1=v1,...,dl=vl时,有
d
1
T
X
X
T
d
1
+
d
2
T
X
X
T
d
2
+
.
.
.
+
d
l
T
X
X
T
d
l
=
λ
1
+
λ
2
+
.
.
.
+
λ
l
\mathbf{d}_{1}^{T}XX^{T}\mathbf{d}_{1}+\mathbf{d}_{2}^{T}XX^{T}\mathbf{d}_{2}+...+\mathbf{d}_{l}^{T}XX^{T}\mathbf{d}_{l}=\lambda_{1}+\lambda_{2}+...+\lambda_{l}
d1TXXTd1+d2TXXTd2+...+dlTXXTdl=λ1+λ2+...+λl
综上,有
arg max
D
T
D
=
I
(
d
1
T
X
X
T
d
1
+
d
2
T
X
X
T
d
2
+
.
.
.
+
d
l
T
X
X
T
d
l
)
=
λ
1
+
λ
2
+
.
.
.
+
λ
l
\argmax\limits_{D^{T}D=I}(\mathbf{d}_{1}^{T}XX^{T}\mathbf{d}_{1}+\mathbf{d}_{2}^{T}XX^{T}\mathbf{d}_{2}+...+\mathbf{d}_{l}^{T}XX^{T}\mathbf{d}_{l})=\lambda_{1}+\lambda_{2}+...+\lambda_{l}
DTD=Iargmax(d1TXXTd1+d2TXXTd2+...+dlTXXTdl)=λ1+λ2+...+λl
且取到最大值的条件是
d
1
=
v
1
,
.
.
.
,
d
l
=
v
l
\mathbf{d}_{1}=\mathbf{v}_{1},...,\mathbf{d}_{l}=\mathbf{v}_{l}
d1=v1,...,dl=vl,即
D
D
D为
X
X
T
XX^{T}
XXT的最大的
l
l
l个特征值对于的特征向量为列组成的矩阵。