接上一篇文章:DeepLearning深度学习(花书)读书笔记——线性代数(二)
9、Moore-Penrose伪逆
对于非方阵而言,其逆矩阵没有定义。但我们希望通过矩阵
A
\bm{A}
A的左逆
B
\bm{B}
B来求解线性方程:
A
x
=
y
(2.44)
\bm{Ax}=\bm{y} \tag{2.44}
Ax=y(2.44)
等式两边左乘左逆
B
\bm{B}
B后,得到:
x
=
B
y
(2.45)
\bm{x}=\bm{By} \tag{2.45}
x=By(2.45)
取决于问题的形式,可能无法设计一个唯一的映射将
A
\bm{A}
A映射到
B
\bm{B}
B。
Moore-Penrose伪逆使我们在这类问题上取得了进展。矩阵
A
\bm{A}
A的伪逆定义为:
A
+
=
lim
α
↘
0
(
A
⊤
A
−
α
I
)
-
1
A
⊤
(2.46)
\bm{A}^{+}=\lim_{\alpha{\searrow}0}(\bm{A}^\top\bm{A}-\alpha\bm{I})^{\text{-}1}\bm{A}^\top \tag{2.46}
A+=α↘0lim(A⊤A−αI)-1A⊤(2.46)
计算伪逆的算法没有基于这个定义,而采用下面的公式:
A
+
=
V
D
+
U
⊤
(2.47)
\bm{A}^{+}=\bm{V}\bm{D}^+\bm{U}^\top \tag{2.47}
A+=VD+U⊤(2.47)
其中,矩阵
U
\bm{U}
U、
V
\bm{V}
V和
D
\bm{D}
D是矩阵
A
\bm{A}
A奇异值分解后的矩阵。对角矩阵
D
\bm{D}
D的伪逆
D
+
\bm{D}^+
D+是其非零元素取倒数之后再转置得到。
当矩阵
A
\bm{A}
A的列数多于行数时,使用伪逆求解线性方程是众多可能解法中的一种。特别的,
x
=
A
+
y
\bm{x}=\bm{A}^+\bm{y}
x=A+y是方程所有可行解中欧几里得范数
∣
∣
x
∣
∣
2
||\bm{x}||_2
∣∣x∣∣2最小的一个。
当矩阵
A
\bm{A}
A的行数多于列数时,可能没有解。此时,通过伪逆得到的
x
\bm{x}
x使得
A
x
\bm{Ax}
Ax和
y
\bm{y}
y的欧氏距离
∣
∣
A
x
−
y
∣
∣
2
||\bm{Ax-y}||_2
∣∣Ax−y∣∣2最小。
10、迹运算
迹运算返回的是矩阵对角元素的和:
T
r
(
A
)
=
∑
i
A
i
,
i
(2.48)
Tr(\bm{A})=\sum_i\bm{A}_{i,i} \tag{2.48}
Tr(A)=i∑Ai,i(2.48)
用迹运算可以方便的表示某些矩阵运算。比如描述矩阵Frobenius范数的方式:
∣
∣
A
∣
∣
F
=
T
r
(
A
A
⊤
)
(2.49)
||\bm{A}||_F=\sqrt{Tr(\bm{AA}^\top)} \tag{2.49}
∣∣A∣∣F=Tr(AA⊤)(2.49)
迹运算在转置运算下是不变的:
T
r
(
A
)
=
T
r
(
A
⊤
)
(2.50)
Tr(\bm{A})=Tr(\bm{A}^\top) \tag{2.50}
Tr(A)=Tr(A⊤)(2.50)
多个矩阵相乘的迹,和将最后一个挪到最前面之后相乘的迹是相同的:
T
r
(
A
B
C
)
=
T
r
(
C
A
B
)
=
T
r
(
B
C
A
)
(2.51)
Tr(\bm{ABC})=Tr(\bm{CAB})=Tr(\bm{BCA}) \tag{2.51}
Tr(ABC)=Tr(CAB)=Tr(BCA)(2.51)
或者,更一般的表达形式:
T
r
(
∏
i
=
1
n
A
(
i
)
)
=
T
r
(
F
(
n
)
∏
i
=
1
n
−
1
F
(
i
)
)
(2.52)
Tr(\prod_{i=1}^{n}\bm{A}^{(i)})=Tr(\bm{F}^{(n)}\prod_{i=1}^{n-1}\bm{F}^{(i)}) \tag{2.52}
Tr(i=1∏nA(i))=Tr(F(n)i=1∏n−1F(i))(2.52)
即使循环置换后矩阵乘积得到的矩阵形状变了,迹运算的结果依然不变。假设矩阵
A
∈
R
m
×
n
\bm{A}\in\R^{m{\times}n}
A∈Rm×n,矩阵
B
∈
R
n
×
m
\bm{B}\in\R^{n{\times}m}
B∈Rn×m,尽管
A
B
∈
R
m
×
m
\bm{AB}\in\R^{m{\times}m}
AB∈Rm×m和
B
A
∈
R
n
×
n
\bm{BA}\in\R^{n{\times}n}
BA∈Rn×n,仍可以得到:
T
r
(
A
B
)
=
T
r
(
B
A
)
(2.53)
Tr(\bm{AB})=Tr(\bm{BA}) \tag{2.53}
Tr(AB)=Tr(BA)(2.53)
标量在迹运算后仍然是它自己:
a
=
T
r
(
a
)
a=Tr(a)
a=Tr(a)。
11、行列式
行列式,记作
d
e
t
(
A
)
det(\bm{A})
det(A),是将一个方阵
A
\bm{A}
A映射到实数的函数。行列式等于矩阵特征值的乘积。
矩阵可以看作一种变换,行列式的绝对值可以衡量被矩阵变换后的空间扩大或者缩小了。如果行列式是
0
0
0,那么空间至少沿着某一维收缩了,失去了所有体积。如果行列式是
1
1
1,则这个转换保持空间不变。
12、实例:主成分分析
主成分分析(PCA)是一个简单的机器学习算法,可以通过基础的线性代数知识推导。其主要目的是为了实现数据的降维表示,用以压缩数据节省存储空间或者简化计算复杂度。
假设在
R
n
\R^n
Rn空间中有一组由
m
m
m个
n
n
n维向量表示的点组成的数据集:
{
x
(
1
)
,
x
(
2
)
,
…
,
x
(
m
)
}
\{\bm{x}^{(1)},\bm{x}^{(2)},\dots,\bm{x}^{(m)}\}
{x(1),x(2),…,x(m)}。PCA工作原理是从原始的空间中顺序地找一组相互正交的坐标轴,新的坐标轴的选择与数据集本身是密切相关的。第一个新坐标轴选择是数据中方差最大的方向,第二个新坐标轴选取是与第一个坐标轴正交的平面中使得数据方差最大的方向,第三个轴是与第一、二个坐标轴正交的平面中使得数据方差最大的方向。依次类推,可以得到
n
n
n个维度的坐标轴。通过这种方式获得的新坐标轴,大部分方差都包含在前面
l
l
l个坐标轴中,后面的坐标轴所含的方差几乎为0。于是,可以只保留前面
l
l
l个含有绝大部分方差的坐标轴。事实上,PCA算法相当于只保留包含绝大部分方差的维度特征,而忽略包含方差几乎为0的特征维度,实现对数据特征的降维处理。
如何得到这些包含最大差异性的主成分方向
通过计算数据集的协方差矩阵,然后得到协方差矩阵的特征值和特征向量,选择特征值最大(方差最大)的 l l l个特征所对应的特征向量组成转换矩阵。这样就可以将数据集通过转换矩阵转换到新的空间当中,实现对数据集特征的降维。
PCA本质上是将数据集的
n
n
n维特征映射到
l
l
l维上,且
l
<
n
l<n
l<n,这全新的
l
l
l维特征是正交的,称为主成分。对于数据集中每个点
x
(
i
)
∈
R
n
\bm{x}^{(i)}\in\R^n
x(i)∈Rn,会有一个与之对应的编码向量
c
(
i
)
∈
R
l
\bm{c}^{(i)}\in\R^l
c(i)∈Rl。PCA算法需要找到一个编码函数,根据输入返回编码:
f
(
x
)
=
c
f(\bm{x})=\bm{c}
f(x)=c;同时还有一个解码函数,给定编码重构输入:
x
≈
g
(
c
)
\bm{x}{\approx}g(\bm{c})
x≈g(c)。
PCA算法的实现关键在于我们选择的编、解码函数的形式。为了简化解码器,可以使用矩阵乘法将编码映射回
R
n
\R^n
Rn,即
g
(
c
)
=
D
c
g(\bm{c})=\bm{Dc}
g(c)=Dc,其中
D
∈
R
n
×
l
\bm{D}\in\R^{n{\times}l}
D∈Rn×l是定义的解码矩阵。为了有唯一解,限制
D
\bm{D}
D中所有列向量都有单位范数。另外,为了使编码简单一些,PCA还限制
D
\bm{D}
D的列向量彼此正交。
为了实现上面的解码器算法,首先需要明确如何根据每一个输入
x
\bm{x}
x得到一个最优编码
c
∗
\bm{c}^*
c∗,也就是首先要确定编码器。常用的一种方法是:最小化原始输入向量
x
\bm{x}
x和重构向量
g
(
c
∗
)
g(\bm{c}^*)
g(c∗)之间的距离。一般采用范数来衡量向量间的距离,在PCA算法中,使用
L
2
\bm{L}^2
L2范数:
c
∗
=
arg
min
c
∣
∣
x
−
g
(
c
)
∣
∣
2
(2.54)
\bm{c}^*=\arg\min_c{||\bm{x}-g(\bm{c})||_2} \tag{2.54}
c∗=argcmin∣∣x−g(c)∣∣2(2.54)
因为
L
2
\bm{L}^2
L2范数是非负的,平方运算在非负值上是单调递增的,因此可以用平方
L
2
\bm{L}^2
L2范数代替
L
2
\bm{L}^2
L2范数,以便于简单运算,两者在相同的
c
\bm{c}
c值上取得最小值。
c
∗
=
arg
min
c
∣
∣
x
−
g
(
c
)
∣
∣
2
2
(2.55)
\bm{c}^*=\arg\min_c{||\bm{x}-g(\bm{c})||_2^2} \tag{2.55}
c∗=argcmin∣∣x−g(c)∣∣22(2.55)
式中,需要最小化的函数可以简化成:
( x − g ( c ) ) ⊤ ( x − g ( c ) ) (2.56) (\bm{x}-g(\bm{c}))^\top(\bm{x}-g(\bm{c})) \tag{2.56} (x−g(c))⊤(x−g(c))(2.56)
根据 L 2 \bm{L}^2 L2范数的定义,上式可以转换为:
= x ⊤ x − x ⊤ g ( c ) − g ( c ) ⊤ x + g ( c ) ⊤ g ( c ) (2.57) =\bm{x}^\top\bm{x}-\bm{x}^{\top}g(\bm{c})-g(\bm{c})^\top\bm{x}+g(\bm{c})^{\top}g(\bm{c}) \tag{2.57} =x⊤x−x⊤g(c)−g(c)⊤x+g(c)⊤g(c)(2.57)
因为标量( g ( c ) ⊤ x g(\bm{c})^\top\bm{x} g(c)⊤x)转置等于自己,结合分配律,则:
= x ⊤ x − 2 x ⊤ g ( c ) + g ( c ) ⊤ g ( c ) (2.58) =\bm{x}^\top\bm{x}-2\bm{x}^{\top}g(\bm{c})+g(\bm{c})^{\top}g(\bm{c}) \tag{2.58} =x⊤x−2x⊤g(c)+g(c)⊤g(c)(2.58)
因为上式中第一项
x
⊤
x
\bm{x}^\top\bm{x}
x⊤x不依赖于
c
\bm{c}
c,因此可以忽略它,得到:
c
∗
=
arg
min
c
−
2
x
⊤
g
(
c
)
+
g
(
c
)
⊤
g
(
c
)
(2.59)
\bm{c}^*=\arg\min_c{-2\bm{x}^{\top}g(\bm{c})+g(\bm{c})^{\top}g(\bm{c})} \tag{2.59}
c∗=argcmin−2x⊤g(c)+g(c)⊤g(c)(2.59)
理进一步,代入
g
(
c
)
g(\bm{c})
g(c)的定义,变为
c
∗
=
arg
min
c
−
2
x
⊤
D
c
+
c
⊤
D
⊤
D
c
(2.60)
\bm{c}^*=\arg\min_c{-2\bm{x}^{\top}\bm{Dc}+\bm{c}^{\top}\bm{D}^{\top}\bm{Dc}} \tag{2.60}
c∗=argcmin−2x⊤Dc+c⊤D⊤Dc(2.60)
=
arg
min
c
−
2
x
⊤
D
c
+
c
⊤
I
l
c
(2.61)
=\arg\min_c{-2\bm{x}^{\top}\bm{Dc}+\bm{c}^{\top}\bm{I}_l\bm{c}} \tag{2.61}
=argcmin−2x⊤Dc+c⊤Ilc(2.61)
根据矩阵
D
\bm{D}
D在定义时限制的正交性和单位范数约束,
=
arg
min
c
−
2
x
⊤
D
c
+
c
⊤
c
(2.62)
=\arg\min_c{-2\bm{x}^{\top}\bm{Dc}+\bm{c}^{\top}\bm{c}} \tag{2.62}
=argcmin−2x⊤Dc+c⊤c(2.62)
可以通过向量微积分来求解上式这个最优化问题(方程式中的最小化值相当于导数为0的值),则问题转化为:
∇
c
(
−
2
x
⊤
D
c
+
c
⊤
c
)
=
0
(2.63)
\nabla_c(-2\bm{x}^{\top}\bm{Dc}+\bm{c}^{\top}\bm{c})=0 \tag{2.63}
∇c(−2x⊤Dc+c⊤c)=0(2.63)
−
2
D
⊤
x
+
2
c
=
0
(2.64)
-2\bm{D}^{\top}\bm{x}+2\bm{c}=0 \tag{2.64}
−2D⊤x+2c=0(2.64)
c
=
D
⊤
x
(2.65)
\bm{c}=\bm{D}^{\top}\bm{x} \tag{2.65}
c=D⊤x(2.65)
根据上式,要对
x
\bm{x}
x进行最优编码只需要一个矩阵向量的乘法操作。即编码函数定义为:
f
(
x
)
=
D
⊤
x
(2.66)
f(\bm{x})=\bm{D}^{\top}\bm{x} \tag{2.66}
f(x)=D⊤x(2.66)
对于PCA重构操作,进一步使用矩阵乘法重新定义为:
r
(
x
)
=
g
(
g
(
x
)
)
=
D
D
⊤
x
(2.67)
r(\bm{x})=g(g(\bm{x}))=\bm{D}\bm{D}^{\top}\bm{x} \tag{2.67}
r(x)=g(g(x))=DD⊤x(2.67)
确定了编解码函数的形式为矩阵乘法,接下来,就要确定矩阵
D
\bm{D}
D如何获取。因为用相同的矩阵
D
\bm{D}
D对所有点进行解码,不能再孤立的看待每个点。因此必须最小化所有给数和所有点上的误差矩阵的Frobenius范数:
D
∗
=
arg
min
D
∑
i
,
j
(
x
j
(
i
)
−
r
(
x
(
i
)
)
j
)
2
subject to
D
⊤
D
=
I
l
(2.68)
\bm{D}^*=\arg\min_D\sqrt{\sum_{i,j}\big(\bm{x}^{(i)}_j-r(\bm{x}^{(i)})_j\big)^2}{\quad\text{subject to }}\bm{D}^{\top}\bm{D}=\bm{I}_l \tag{2.68}
D∗=argDmini,j∑(xj(i)−r(x(i))j)2subject to D⊤D=Il(2.68)
为了便于推导,假设
l
=
1
l=1
l=1,此时
D
\bm{D}
D是一个向量
d
\bm{d}
d,将式(2-67)代入式(2-68)问题简化为:
d
∗
=
arg
min
d
∑
i
∣
∣
x
(
i
)
−
d
d
⊤
x
(
i
)
∣
∣
2
2
subject to
∣
∣
d
∣
∣
2
=
1
(2.69)
\bm{d}^*=\arg\min_d{\sum_{i}\big|\big|\bm{x}^{(i)}-\bm{dd}^\top\bm{x}^{(i)}\big|\big|_2^2}{\quad\text{subject to }}||\bm{d}||_2=1 \tag{2.69}
d∗=argdmini∑
x(i)−dd⊤x(i)
22subject to ∣∣d∣∣2=1(2.69)
因为
d
⊤
x
(
i
)
\bm{d}^\top\bm{x}^{(i)}
d⊤x(i)是一个标量上述公式更美观的写法为:
d
∗
=
arg
min
d
∑
i
∣
∣
x
(
i
)
−
d
⊤
x
(
i
)
d
∣
∣
2
2
subject to
∣
∣
d
∣
∣
2
=
1
(2.70)
\bm{d}^*=\arg\min_d{\sum_{i}\big|\big|\bm{x}^{(i)}-\bm{d}^\top\bm{x}^{(i)}\bm{d}\big|\big|_2^2}{\quad\text{subject to }}||\bm{d}||_2=1 \tag{2.70}
d∗=argdmini∑
x(i)−d⊤x(i)d
22subject to ∣∣d∣∣2=1(2.70)
或者写作:
d
∗
=
arg
min
d
∑
i
∣
∣
x
(
i
)
−
x
(
i
)
⊤
d
d
∣
∣
2
2
subject to
∣
∣
d
∣
∣
2
=
1
(2.71)
\bm{d}^*=\arg\min_d{\sum_{i}\big|\big|\bm{x}^{(i)}-\bm{x}^{(i)\top}\bm{dd}\big|\big|_2^2}{\quad\text{subject to }}||\bm{d}||_2=1 \tag{2.71}
d∗=argdmini∑
x(i)−x(i)⊤dd
22subject to ∣∣d∣∣2=1(2.71)
将数据集中表示各点的向量堆叠成一个
m
m
m行
n
n
n列的矩阵,记作
X
∈
R
m
×
n
\bm{X}\in\R^{m{\times}n}
X∈Rm×n其中
X
i
,
:
=
x
(
i
)
⊤
\bm{X}_{i,:}=\bm{x}^{(i)\top}
Xi,:=x(i)⊤。原问题可重新定义为:
d
∗
=
arg
min
d
∣
∣
X
−
X
d
d
⊤
∣
∣
F
2
subject to
d
⊤
d
=
1
(2.72)
\bm{d}^*=\arg\min_d{\big|\big|\bm{X}-\bm{X}\bm{dd}^\top\big|\big|_F^2}{\quad\text{subject to }}\bm{d}^\top\bm{d}=1 \tag{2.72}
d∗=argdmin
X−Xdd⊤
F2subject to d⊤d=1(2.72)
暂时不考虑约束条件,可以将Frobenius范数简化成下面的形式:
arg
min
d
∣
∣
X
−
X
d
d
⊤
∣
∣
F
2
(2.73)
\arg\min_d{\big|\big|\bm{X}-\bm{X}\bm{dd}^\top\big|\big|_F^2} \tag{2.73}
argdmin
X−Xdd⊤
F2(2.73)
=
arg
min
d
T
r
(
(
X
−
X
d
d
⊤
)
⊤
(
X
−
X
d
d
⊤
)
)
(2.74)
=\arg\min_dTr\big({(\bm{X}-\bm{X}\bm{dd}^\top)}^{\top}{(\bm{X}-\bm{X}\bm{dd}^\top)}\big) \tag{2.74}
=argdminTr((X−Xdd⊤)⊤(X−Xdd⊤))(2.74)
=
arg
min
d
T
r
(
X
⊤
X
−
X
⊤
X
d
d
⊤
−
d
d
⊤
X
⊤
X
+
d
d
⊤
X
⊤
X
d
d
⊤
)
(2.75)
=\arg\min_dTr({\bm{X}^\top\bm{X}-\bm{X}^\top\bm{X}\bm{dd}^\top-\bm{dd}^\top\bm{X}^\top\bm{X}+\bm{dd}^\top\bm{X}^\top\bm{X}\bm{dd}^\top}) \tag{2.75}
=argdminTr(X⊤X−X⊤Xdd⊤−dd⊤X⊤X+dd⊤X⊤Xdd⊤)(2.75)
=
arg
min
d
T
r
(
X
⊤
X
)
−
T
r
(
X
⊤
X
d
d
⊤
)
−
T
r
(
d
d
⊤
X
⊤
X
)
+
T
r
(
d
d
⊤
X
⊤
X
d
d
⊤
)
(2.76)
=\arg\min_d{Tr(\bm{X}^\top\bm{X})-Tr(\bm{X}^\top\bm{X}\bm{dd}^\top)-Tr(\bm{dd}^\top\bm{X}^\top\bm{X})+Tr(\bm{dd}^\top\bm{X}^\top\bm{X}\bm{dd}^\top)} \tag{2.76}
=argdminTr(X⊤X)−Tr(X⊤Xdd⊤)−Tr(dd⊤X⊤X)+Tr(dd⊤X⊤Xdd⊤)(2.76)
=
arg
min
d
−
T
r
(
X
⊤
X
d
d
⊤
)
−
T
r
(
d
d
⊤
X
⊤
X
)
+
T
r
(
d
d
⊤
X
⊤
X
d
d
⊤
)
(2.77)
=\arg\min_d{-Tr(\bm{X}^\top\bm{X}\bm{dd}^\top)-Tr(\bm{dd}^\top\bm{X}^\top\bm{X})+Tr(\bm{dd}^\top\bm{X}^\top\bm{X}\bm{dd}^\top)} \tag{2.77}
=argdmin−Tr(X⊤Xdd⊤)−Tr(dd⊤X⊤X)+Tr(dd⊤X⊤Xdd⊤)(2.77)
因为循环对迹运算不改变结果,因此:
=
arg
min
d
−
2
T
r
(
X
⊤
X
d
d
⊤
)
+
T
r
(
d
d
⊤
X
⊤
X
d
d
⊤
)
(2.78)
=\arg\min_d{-2Tr(\bm{X}^\top\bm{X}\bm{dd}^\top)+Tr(\bm{dd}^\top\bm{X}^\top\bm{X}\bm{dd}^\top)} \tag{2.78}
=argdmin−2Tr(X⊤Xdd⊤)+Tr(dd⊤X⊤Xdd⊤)(2.78)
=
arg
min
d
−
2
T
r
(
X
⊤
X
d
d
⊤
)
+
T
r
(
X
⊤
X
d
d
⊤
d
d
⊤
)
(2.79)
=\arg\min_d{-2Tr(\bm{X}^\top\bm{X}\bm{dd}^\top)+Tr(\bm{X}^\top\bm{X}\bm{dd}^\top\bm{dd}^\top)} \tag{2.79}
=argdmin−2Tr(X⊤Xdd⊤)+Tr(X⊤Xdd⊤dd⊤)(2.79)
此时,再来考虑约束条件,则有:
arg
min
d
−
2
T
r
(
X
⊤
X
d
d
⊤
)
+
T
r
(
X
⊤
X
d
d
⊤
d
d
⊤
)
subject to
d
⊤
d
=
1
(2.80)
\arg\min_d{-2Tr(\bm{X}^\top\bm{X}\bm{dd}^\top)+Tr(\bm{X}^\top\bm{X}\bm{dd}^\top\bm{dd}^\top)}{\quad\text{subject to }}\bm{d}^\top\bm{d}=1 \tag{2.80}
argdmin−2Tr(X⊤Xdd⊤)+Tr(X⊤Xdd⊤dd⊤)subject to d⊤d=1(2.80)
=
arg
min
d
−
2
T
r
(
X
⊤
X
d
d
⊤
)
+
T
r
(
X
⊤
X
d
d
⊤
)
subject to
d
⊤
d
=
1
(2.81)
=\arg\min_d{-2Tr(\bm{X}^\top\bm{X}\bm{dd}^\top)+Tr(\bm{X}^\top\bm{X}\bm{dd}^\top)}{\quad\text{subject to }}\bm{d}^\top\bm{d}=1 \tag{2.81}
=argdmin−2Tr(X⊤Xdd⊤)+Tr(X⊤Xdd⊤)subject to d⊤d=1(2.81)
=
arg
min
d
−
T
r
(
X
⊤
X
d
d
⊤
)
subject to
d
⊤
d
=
1
(2.82)
=\arg\min_d{-Tr(\bm{X}^\top\bm{X}\bm{dd}^\top)}{\quad\text{subject to }}\bm{d}^\top\bm{d}=1 \tag{2.82}
=argdmin−Tr(X⊤Xdd⊤)subject to d⊤d=1(2.82)
=
arg
max
d
T
r
(
X
⊤
X
d
d
⊤
)
subject to
d
⊤
d
=
1
(2.83)
=\arg\max_d{Tr(\bm{X}^\top\bm{X}\bm{dd}^\top)}{\quad\text{subject to }}\bm{d}^\top\bm{d}=1 \tag{2.83}
=argdmaxTr(X⊤Xdd⊤)subject to d⊤d=1(2.83)
=
arg
max
d
T
r
(
d
⊤
X
⊤
X
d
)
subject to
d
⊤
d
=
1
(2.84)
=\arg\max_d{Tr(\bm{d}^\top\bm{X}^\top\bm{X}\bm{d})}{\quad\text{subject to }}\bm{d}^\top\bm{d}=1 \tag{2.84}
=argdmaxTr(d⊤X⊤Xd)subject to d⊤d=1(2.84)
这个最优化问题可以通过特征分解来求解,具体来讲,最优的
d
\bm{d}
d是
X
⊤
X
\bm{X}^\top\bm{X}
X⊤X最大特征值对应的特征向量。
在上是假设
l
=
1
l=1
l=1的情况,仅得到了第一个主成分。一般来讲,当计算主成分的基时,矩阵
D
\bm{D}
D由前
l
l
l个最大的特征值对应的特征向量组成。
一般情况下,PCA编码矩阵 D \bm{D} D的获取
当 l ≠ 1 l\not=1 l=1时, D \bm{D} D是一个由 l l l个向量组成的矩阵,上述问题最终推导为:
= arg max D T r ( D ⊤ X ⊤ X D ) subject to D ⊤ D = I l (Z2.12) =\arg\max_D{Tr(\bm{D}^\top\bm{X}^\top\bm{X}\bm{D})}{\quad\text{subject to }}\bm{D}^\top\bm{D}=\bm{I}_l \tag{Z2.12} =argDmaxTr(D⊤X⊤XD)subject to D⊤D=Il(Z2.12)
其中,式中 X ⊤ X \bm{X}^\top\bm{X} X⊤X称为数据的散度矩阵,其作用等同于最开始提到的数据的协方差矩阵 1 m ( X ⊤ X ) {1\over m}(\bm{X}^\top\bm{X}) m1(X⊤X),因为两者具有相同的特征向量和特征值。同样,该最优化问题仍然通过特征分解来求解,矩阵 D \bm{D} D由 X ⊤ X \bm{X}^\top\bm{X} X⊤X的前 l l l个最大的特征值对应的特征向量组成。
如何求解PCA编解码矩阵
假设有 m m m条 n n n维特征向量组成的数据集。
1)将原始数据按列组成 m m m行 n n n列矩阵 X \bm{X} X;
2)去均值(每一维特征减去各自的均值),即将 X \bm{X} X的每一列(代表一个特征)减去这一列的均值;
3)求出协方差矩阵 1 m ( X ⊤ X ) {1\over m}(\bm{X}^\top\bm{X}) m1(X⊤X)或散度矩阵 X ⊤ X \bm{X}^\top\bm{X} X⊤X;
4)求出上述矩阵的特征值及对应的特征向量;
5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前 l l l行组成矩阵 D \bm{D} D;
6) C = D ⊤ X \bm{C}=\bm{D}^\top\bm{X} C=D⊤X即为降维到 l l l维后的数据;
7) X ∗ = D C \bm{X}^*=\bm{D}\bm{C} X∗=DC即为复原后的数据。