机器学习笔记之主成分分析(PCA)
主成分分析(principle components analysis ,PCA)是比较基础的机器学习算法,主要是通过保留数据的特征来进行编码与解码。
假设在
R
n
\R^n
Rn空间中有
m
m
m个点
{
x
(
1
)
,
x
(
2
)
,
⋯
 
,
x
(
m
)
}
\{x^{(1)},x^{(2)},\cdots,x^{(m)}\}
{x(1),x(2),⋯,x(m)},我们希望对这些点进行压缩。压缩的目的是我们可以使用更少的内存来储存这些数据,但是同时又希望压缩损失的信息(精度)尽可能少。
编码这些点的一种方式就是使用低维表示。对于每个
x
(
i
)
∈
R
n
x^{(i)}\in\R^n
x(i)∈Rn,会有一个对应的编码向量
c
(
i
)
∈
R
l
c^{(i)}\in\R^l
c(i)∈Rl。如果
l
l
l比
n
n
n小,那么我们就可以使用更少的内存来储存数据。我们希望找到一个编码函数,根据输入返回编码,
f
(
x
)
=
c
f(x)=c
f(x)=c,同时我们也希望找到一个解码函数,给定编码能够重构输入,
x
≈
(
f
(
x
)
)
x\approx(f(x))
x≈(f(x))。
具体来说,我们可以使用一个矩阵乘法将编码器映射回
R
n
\R^n
Rn,即
g
(
c
)
=
D
c
g(c)=Dc
g(c)=Dc,其中
D
∈
R
n
×
l
D\in\R^{n\times l}
D∈Rn×l是定义解码的矩阵。但是这存在一个小问题,有可能存在多个解。因为如果我们按比例地缩小所有点对应的编码向量
c
(
i
)
c^{(i)}
c(i),那么只需要按比例放大
D
:
i
D_{:i}
D:i,即可以保持结果不变。为了使问题有唯一解,我们限制
D
D
D中所有列向量都有单位范数。为了简化问题,PCA 限制
D
D
D的列向量彼此正交。
那么我们如何选择一个根据每一个输入
x
\boldsymbol x
x得到最优编码
c
∗
\boldsymbol c^*
c∗?一种最常见的方法就是最小化原始输入向量
x
\boldsymbol x
x和重构向量
g
(
c
∗
)
g(\boldsymbol c^*)
g(c∗)之间的距离,使用范数来衡量它们之间的距离。常用
L
2
L^2
L2范数,即
c
∗
=
arg
min
c
∥
x
−
g
(
c
∗
)
∥
2
\boldsymbol c^*=\arg \min\limits_c\|\boldsymbol x-g(\boldsymbol c^*)\|_2
c∗=argcmin∥x−g(c∗)∥2我们可以使用平方
L
2
L^2
L2范数替代
L
2
L^2
L2范数。因为二者在相同的值c上取得最小值。
c
∗
=
arg
min
c
∥
x
−
g
(
c
∗
)
∥
2
2
=
arg
min
c
(
x
−
g
(
c
∗
)
T
(
x
−
g
(
c
∗
)
)
=
arg
min
c
x
T
x
−
x
T
g
(
c
)
−
g
(
c
)
T
x
⎵
标量
+
g
(
c
)
T
g
(
c
)
=
arg
min
c
x
T
x
⎵
与c无关
−
2
x
T
g
(
c
)
+
g
(
c
)
T
g
(
c
)
⇒
arg
min
c
−
2
x
T
g
(
c
)
+
g
(
c
)
T
g
(
c
)
=
arg
min
c
−
2
x
T
D
c
+
c
T
D
T
D
c
=
arg
min
c
−
2
x
T
D
c
+
c
T
I
l
c
=
−
2
x
T
D
c
+
c
T
c
\begin{aligned}\boldsymbol c^*&=\arg\min\limits_c\|\boldsymbol x-g(\boldsymbol c^*)\|_2^2=\arg\min\limits_c(\boldsymbol x-g(\boldsymbol c^*)^T(\boldsymbol x-g(\boldsymbol c^*))\\&=\arg\min\limits_c \boldsymbol x^T\boldsymbol x-\boldsymbol x^Tg(\boldsymbol c)-\underbrace{g(\boldsymbol c)^T\boldsymbol x}_{\text{标量}}+g(\boldsymbol c)^Tg(\boldsymbol c)\\&=\arg\min\limits_c\underbrace{\boldsymbol x^T\boldsymbol x}_{\text{与c无关}}-2\boldsymbol x^Tg(\boldsymbol c)+g(\boldsymbol c)^Tg(\boldsymbol c)\\&\Rightarrow\arg\min\limits_c-2\boldsymbol x^Tg(\boldsymbol c)+g(\boldsymbol c)^Tg(\boldsymbol c)\\&=\arg\min\limits_c-2\boldsymbol {x^TDc}+\boldsymbol c^TD^TD\boldsymbol c\\&=\arg\min\limits_c-2\boldsymbol {x^TDc}+\boldsymbol c^TI_l\boldsymbol c\\&=-2\boldsymbol {x^TDc}+\boldsymbol c^T\boldsymbol c\end{aligned}
c∗=argcmin∥x−g(c∗)∥22=argcmin(x−g(c∗)T(x−g(c∗))=argcminxTx−xTg(c)−标量
g(c)Tx+g(c)Tg(c)=argcmin与c无关
xTx−2xTg(c)+g(c)Tg(c)⇒argcmin−2xTg(c)+g(c)Tg(c)=argcmin−2xTDc+cTDTDc=argcmin−2xTDc+cTIlc=−2xTDc+cTc对
c
c
c求导,
∇
(
−
2
x
T
D
c
+
c
T
c
)
=
0
⇒
−
2
D
T
x
+
2
c
=
0
⇒
c
=
D
T
x
∴
f
(
x
)
=
D
T
x
\nabla(-2\boldsymbol {x^TDc}+\boldsymbol c^T\boldsymbol c)=0\Rightarrow-2\boldsymbol D^Tx+2c=0\Rightarrow\boldsymbol c=\boldsymbol D^Tx\\\therefore f(x)=\boldsymbol D^Tx
∇(−2xTDc+cTc)=0⇒−2DTx+2c=0⇒c=DTx∴f(x)=DTx
进一步使用矩阵乘法,我们可以定义重构操作:
r
(
x
)
=
g
(
f
(
x
)
)
=
D
D
T
x
r(x)=g(f(x))=\boldsymbol{DD}^Tx
r(x)=g(f(x))=DDTx,因为重构要求最小化所有维数和所有点上的误差矩阵的Frobenius范数:
D
∗
=
arg
min
D
∑
i
,
j
(
x
j
(
i
)
−
r
(
x
(
i
)
)
j
)
2
s
u
b
j
e
c
t
t
o
D
T
D
=
I
l
\begin{aligned}&\boldsymbol D^*=\arg\min\limits_{D}\sqrt{\sum_{i,j}\Big(x_j^{(i)}-r(x^{(i)})_j\Big)^2}\\&subject\quad to\quad D^TD=I_l\end{aligned}
D∗=argDmini,j∑(xj(i)−r(x(i))j)2subjecttoDTD=Il
为了简化推导,首先考虑
l
=
1
l=1
l=1的情况。此时
D
D
D简化为一个单一向量
d
d
d,即
d
∗
=
arg
min
d
∑
i
∥
x
(
i
)
−
d
d
T
x
(
i
)
⎵
标量
∥
2
2
=
arg
min
d
∑
i
∥
x
(
i
)
−
d
T
x
(
i
)
d
∥
2
2
=
a
r
g
min
d
∑
i
∥
x
(
i
)
−
x
(
i
)
T
d
d
∥
2
2
s
u
b
j
e
c
t
t
o
∥
d
∥
2
=
1
\begin{aligned}&\boldsymbol d^*=\arg\min\limits_d\sum_{i}\|\boldsymbol x^{(i)}-\boldsymbol d\underbrace{\boldsymbol d^T\boldsymbol x^{(i)}}_{\text{标量}}\|_2^2\\&=\arg\min\limits_d\sum_{i}\|\boldsymbol x^{(i)}-\boldsymbol d^T\boldsymbol x^{(i)}\boldsymbol d\|_2^2\\&=arg\min\limits_d\sum_{i}\|\boldsymbol x^{(i)}-\boldsymbol x^{(i)T}\boldsymbol d\boldsymbol d\|_2^2\\&subject\quad to\quad \|\boldsymbol d\|_2=1\end{aligned}
d∗=argdmini∑∥x(i)−d标量
dTx(i)∥22=argdmini∑∥x(i)−dTx(i)d∥22=argdmini∑∥x(i)−x(i)Tdd∥22subjectto∥d∥2=1将各点的向量写成矩阵形式,记为
X
∈
R
m
×
n
X\in\R^{m\times n}
X∈Rm×n,其中
X
I
,
:
=
x
(
i
)
T
X_{I,:}=\boldsymbol x^{(i)T}
XI,:=x(i)T
∴
d
∗
=
arg
min
d
∥
X
−
X
d
d
T
∥
F
2
,
s
u
b
j
e
c
t
t
o
d
d
T
=
1
\therefore\boldsymbol d^*=\arg\min\limits_{d}\|\boldsymbol{X}-\boldsymbol{Xdd}^T\|_F^2,\quad subject\quad to\quad \boldsymbol{dd}^T=1
∴d∗=argdmin∥X−XddT∥F2,subjecttoddT=1
又
∵
∥
A
∥
F
=
∑
i
,
j
A
i
,
j
2
,
T
r
(
A
)
=
∑
i
A
i
,
i
,
∥
A
∥
F
=
T
r
(
A
A
T
)
又\begin{aligned}\because\|A\|_F=\sqrt{\sum_{i,j}A^2_{i,j}},Tr(A)=\sum_{i}A_{i,i},\|A\|_F=\sqrt{Tr(AA^T)}\end{aligned}
又∵∥A∥F=i,j∑Ai,j2,Tr(A)=i∑Ai,i,∥A∥F=Tr(AAT)
∴
d
∗
=
arg
min
d
∥
X
−
X
d
d
T
∥
F
2
=
arg
min
d
T
r
(
(
X
−
X
d
d
T
)
T
(
X
−
X
d
d
T
)
)
=
arg
min
d
T
r
(
X
T
X
−
X
T
X
d
d
T
−
d
d
T
X
T
X
+
d
d
T
X
T
X
d
d
T
)
=
arg
min
d
T
r
(
X
T
X
⎵
与
d
无
关
)
−
T
r
(
X
T
X
d
d
T
)
−
T
r
(
d
d
T
X
T
X
)
+
T
r
(
d
d
T
X
T
X
d
d
T
)
⇒
arg
min
d
−
T
r
(
X
T
X
d
d
T
)
−
T
r
(
d
d
T
X
T
X
)
+
T
r
(
d
d
T
X
T
X
d
d
T
)
=
arg
min
d
−
2
T
r
(
X
T
X
d
d
T
)
+
+
T
r
(
X
T
X
d
d
T
d
⎵
d
T
d
=
1
d
T
)
=
arg
min
d
−
T
r
(
X
T
X
d
d
T
)
=
arg
max
d
T
r
(
X
T
X
d
d
T
)
=
arg
max
d
T
r
(
d
T
X
T
X
d
)
\therefore\begin{aligned}\boldsymbol d^*&=\arg\min\limits_{d}\|\boldsymbol{X}-\boldsymbol{Xdd}^T\|_F^2=\arg\min\limits_{d}Tr\bigg(\Big(\boldsymbol{X}-\boldsymbol{Xdd}^T\Big)^T\Big(\boldsymbol{X}-\boldsymbol{Xdd}^T\Big)\bigg)\\&=\arg\min\limits_{d}Tr\Big(\boldsymbol{X^TX-X^TXdd^T-dd^TX^TX+dd^TX^TXdd^T}\Big)\\&=\arg\min\limits_{d}\underbrace{Tr\Big(\boldsymbol{X^TX}}_{与d无关}\Big)-Tr\Big(\boldsymbol{X^TXdd^T}\Big)-Tr\Big(\boldsymbol{dd^TX^TX}\Big)+Tr\Big(\boldsymbol{dd^TX^TXdd^T}\Big)\\&\Rightarrow\arg\min\limits_{d}-Tr\Big(\boldsymbol{X^TXdd^T}\Big)-Tr\Big(\boldsymbol{dd^TX^TX}\Big)+Tr\Big(\boldsymbol{dd^TX^TXdd^T}\Big)\\&=\arg\min\limits_{d}-2Tr\Big(\boldsymbol{X^TXdd^T}\Big)++Tr\Big(\boldsymbol{X^TXd\underbrace{d^Td}_{d^Td=1}d^T}\Big)\\&=\arg\min\limits_{d}-Tr(\boldsymbol{X^TXdd^T})=\arg\max\limits_{d}Tr(\boldsymbol{X^TXdd^T})\\&=\arg\max\limits_{d}Tr(\boldsymbol{d^TX^TXd})\end{aligned}
∴d∗=argdmin∥X−XddT∥F2=argdminTr((X−XddT)T(X−XddT))=argdminTr(XTX−XTXddT−ddTXTX+ddTXTXddT)=argdmin与d无关
Tr(XTX)−Tr(XTXddT)−Tr(ddTXTX)+Tr(ddTXTXddT)⇒argdmin−Tr(XTXddT)−Tr(ddTXTX)+Tr(ddTXTXddT)=argdmin−2Tr(XTXddT)++Tr(XTXddTd=1
dTddT)=argdmin−Tr(XTXddT)=argdmaxTr(XTXddT)=argdmaxTr(dTXTXd)
∴
\therefore
∴矩阵
X
T
X
X^TX
XTX的最大特征值所对应的特征向量就是
d
\boldsymbol{d}
d,同理可得矩阵D就是由前
l
l
l个最大的特征值所对应的特征向量构成。