我们知道,解决过拟合的问题除了正则化和添加数据之外,降维就是最好的方法。降维的思路来源于维度灾难的问题,我们知道 n n n 维球的体积为: C R n CR^n CRn 那么在球体积与边长为 2 R 2R 2R 的超立方体比值为: lim n → 0 C R n 2 n R n = 0 \lim\limits_{n\rightarrow0}\frac{CR^n}{2^nR^n}=0 n→0lim2nRnCRn=0
这就是所谓的维度灾难,在高维数据中,主要样本都分布在立方体的边缘,所以数据集更加稀疏。
降维的算法分为:
- 直接降维,特征选择
- 线性降维,PCA,MDS等
- 分线性,流形包括 Isomap,LLE 等
1. PCA降维
主成分分析中,我们的基本想法是将所有数据投影到一个字空间中,从而达到降维的目标,为了寻找这个子空间,我们基本想法是:
- 所有数据在子空间中更为分散
- 损失的信息最小,即:在补空间的分量少
注意,我们降维的目的是通过变换去掉一些冗余的数据,我们想要的是数据之间的结构关系,和具体值的大小无关,为了方便计算,我们先对数据进行归一化。
x
i
=
x
i
−
x
‾
x_i = x_i - \overline{x}
xi=xi−x,假设
x
i
x_i
xi的维度是p,想要降维后的维度是q,那么我们需要一个转移矩阵,降维后的向量
x
i
^
=
W
T
x
i
\hat{x_i} = W^Tx_i
xi^=WTxi,这里的
W
W
W就是转移矩阵,维度是
p
∗
q
p* q
p∗q,也就是说通过
W
W
W将
p
p
p维向量降为
q
q
q维向量。我们用
X
X
X表示
(
x
1
,
⋯
,
x
n
)
(x_1,\cdots,x_n)
(x1,⋯,xn)注意这是中心化后的数据,降维后的数据为
X
^
=
W
T
X
\hat{X} = W^TX
X^=WTX
S
=
1
N
∑
i
=
1
N
(
x
i
)
(
x
i
)
T
=
1
N
(
x
1
,
x
2
,
⋯
,
x
N
)
(
x
1
,
x
2
,
⋯
,
x
N
)
T
=
1
N
X
X
T
\begin{aligned}S&=\frac{1}{N}\sum\limits_{i=1}^N(x_i)(x_i)^T\\ &=\frac{1}{N}(x_1,x_2,\cdots,x_N)(x_1,x_2,\cdots,x_N)^T \\ &=\frac{1}{N}XX^T \end{aligned}
S=N1i=1∑N(xi)(xi)T=N1(x1,x2,⋯,xN)(x1,x2,⋯,xN)T=N1XXT
这是协方差的计算方法,将
X
^
\hat{X}
X^带入,得到
S
=
1
N
W
T
X
X
T
W
S=\frac{1}{N}W^TXX^TW
S=N1WTXXTW,然后根据第二条原因,让空间转移后的向量之间距离尽可能大,也就是说协方差
S
S
S尽量大,于是得到优化问题最大化:
min
W
W
T
X
X
T
W
s
.
t
.
W
T
W
=
I
\begin{aligned} \min\limits_{W}W^TXX^TW \\ s.t.\ W^TW = I \end{aligned}
WminWTXXTWs.t. WTW=I
可以使用拉个朗日定理,计算:
min
W
T
X
X
T
W
+
λ
(
I
−
W
T
W
)
\min W^TXX^TW +\lambda(I-W^TW)
minWTXXTW+λ(I−WTW)
对W求导令其等于0得到,
X
X
T
W
=
λ
W
XX^TW= \lambda W
XXTW=λW
上式子分解得到
X
X
T
w
i
=
λ
i
w
i
XX^Tw_i = \lambda_iw_i
XXTwi=λiwi,这个式子很明显,对
X
X
T
XX^T
XXT进行特征值分解很容易得到
λ
i
\lambda_i
λi再求其特征向量得到
w
i
w_i
wi,取前q个最大的特征值和对应的特征向量就是我们要求的降维转移矩阵
2. 矩阵降维 SVD和特征值分解
2.1 特征值分解
在理角奇异值分解之前,需要先回顾一下特征值分解,如果矩阵
A
A
A是一个m×m的实对称矩阵(即
A
=
A
T
A=A^T
A=AT),那么它可以被分解成如下的形式
其中
Q
Q
Q为标准正交阵,即有
Q
Q
T
=
I
QQ^T=I
QQT=I,Σ为对角矩阵,且上面的矩阵的维度均为
m
×
m
m×m
m×m。
λ
i
λi
λi称为特征值,
q
i
q_i
qi是
Q
Q
Q(特征矩阵)中的列向量,称为特征向量。
2.2 奇异值分解(SVD)
有一个
m
×
n
m×n
m×n的实数矩阵A,我们想要把它分解成如下的形式
A
=
U
Σ
V
T
(2-1)
A=UΣV^T \tag{2-1}
A=UΣVT(2-1)
其中
U
U
U和
V
V
V均为单位正交阵,即有
U
U
T
=
I
UU^T=I
UUT=I和
V
V
T
=
I
VV^T=I
VVT=I,U称为左奇异矩阵,V称为右奇异矩阵,Σ仅在主对角线上有值,我们称它为奇异值,通常来说取的特征值越大越好,其它元素均为0。上面矩阵的维度分别为
U
∈
R
m
×
m
,
Σ
∈
R
m
×
n
,
V
∈
R
n
×
n
U∈R^{m×m}, Σ∈R^{m×n}, V∈R^{n×n}
U∈Rm×m,Σ∈Rm×n,V∈Rn×n。
一般地Σ有如下形式
奇异值求解
常求上面的U,V,Σ不便于求,我们可以利用如下性质
A
A
T
=
U
Σ
V
T
V
Σ
T
U
T
=
U
Σ
Σ
T
U
T
AA^T=UΣV^TVΣ^TU^T=UΣΣ^TU^T
AAT=UΣVTVΣTUT=UΣΣTUT
A
T
A
=
V
Σ
T
U
T
U
Σ
V
T
=
V
Σ
T
Σ
V
T
A^TA=VΣ^TU^TUΣV^T=VΣ^TΣV^T
ATA=VΣTUTUΣVT=VΣTΣVT
奇异值分解可以用到矩阵的降维上,例如一张600x800的图片,可以降维为600x100,100x100,100x800的 U Σ V UΣV UΣV,这样一来,参数大大的降低了,而图像的语义其实并没有太大改变。