前言
花书第一章的实例内容
主成分分析 (principal components analysis,PCA
)是一个简单的机器学习算法,可以通过简单的线性代数知识推导。
问题说明
假设在 R n \Bbb{R}^n Rn 空间中有m个点 { x ( 1 ) , ⋯   , x ( m ) } \{\boldsymbol{x}^{(1)},\cdots,\boldsymbol{x}^{(m)}\} {x(1),⋯,x(m)} ,现希望对这些点进行有损压缩(使用更少的内存,但损失一些精度去存储这些点)。损失的精度尽可能的少。
编码这些点的一种方式是用低维表示。对每个点 x ( i ) ∈ R n \boldsymbol{x}^{(i)}\in\Bbb{R}^n x(i)∈Rn ,会有一个对应的编码向量 c ( i ) ∈ R l \boldsymbol{c}^{(i)}\in\Bbb{R}^l c(i)∈Rl。如果 l < n l \lt n l<n ,那么我们便使用了更少的内存来存储原来的数据。
我们希望找到一个编码函数
,根据输入返回编码,
f
(
x
)
=
c
f(\boldsymbol{x})=\boldsymbol{c}
f(x)=c ;
我们也希望找到一个解码函数
,给定编码重构输入,
x
≈
g
(
f
(
x
)
)
\boldsymbol{x} \approx g(f(\boldsymbol{x}))
x≈g(f(x))
PCA由我们选择的解码函数而定,具体来讲,为了简化解码器,我们使用矩阵乘法将编码映射回
R
n
\Bbb{R}^n
Rn ,即
(0)
g
(
c
)
=
D
c
g(\boldsymbol{c})=\mathbf{D}\boldsymbol{c}\tag{0}
g(c)=Dc(0)
其中
D
∈
R
n
×
l
\mathbf{D}\in\Bbb{R}^{n \times l}
D∈Rn×l 是定义解码的矩阵
到目前为止,所描述的问题可能有很多个解。因为如果按比例地缩小所有点对应的编码向量 c i c_i ci ,那么只需要按比例放大
D : , i \mathbf{D}_{:,i} D:,i ,即可保持结果不变,为了使问题有唯一解,限制 D \mathbf{D} D 中所有列向量都有单位范数
计算这个解码器的最优解码器可能是一个困难的问题。为了使编码问题简单一些,PCA 限制 D \mathbf{D} D 中所有的列向量彼此正交(除非 l = n l=n l=n ,否则严格意义上 D \mathbf{D} D 不是一个正交矩阵)
公式推导
首先,确定如何根据每一个输入
x
\boldsymbol{x}
x 得到一个最优编码
c
∗
\boldsymbol{c}^*
c∗。
这里通过最小化原始输入向量
x
\boldsymbol{x}
x 和 重构向量
g
(
c
∗
)
g(\boldsymbol{c}^*)
g(c∗) 之间的距离。
在PCA算法中,使用
L
2
L^2
L2 范数
(1) c ∗ = a r g m i n c ∥ x − g ( c ) ∥ 2 \boldsymbol{c}^* = \begin{matrix} \quad \\ argmin \\ c \end{matrix} \| \boldsymbol{x}-g(\boldsymbol{c}) \|_2 \tag{1} c∗=argminc∥x−g(c)∥2(1)
用平方 L 2 L^2 L2 范数替代 L 2 L^2 L2 范数
因为 L 2 L^2 L2 范数是非负的,并且平方运算在 [ 0 , ∞ ) [0,\infty) [0,∞) 上单调递增,所以两者在相同的值 c \boldsymbol{c} c 上取得最小值
得到
(2) c ∗ = a r g m i n c ∥ x − g ( c ) ∥ 2 2 = a r g m i n c ( x − g ( c ) ) T ( x − g ( c ) ) = a r g m i n c ( x T x − x T g ( c ) − g ( c ) T x + g ( c ) T g ( c ) ) = a r g m i n c ( x T x − 2 x T g ( c ) + g ( c ) T g ( c ) ) \begin{array}{ll} \boldsymbol{c}^* &= \begin{matrix}\quad\\argmin\\c\end{matrix} \|\boldsymbol{x}-g(\boldsymbol{c})\|_2^2\\ &=\begin{matrix}\quad\\argmin\\c\end{matrix} (\boldsymbol{x}-g(\boldsymbol{c}))^T(\boldsymbol{x}-g(\boldsymbol{c})) \\ &=\begin{matrix}\quad\\argmin\\c\end{matrix} (\boldsymbol{x}^T\boldsymbol{x} -\boldsymbol{x}^Tg(\boldsymbol{c}) -g(\boldsymbol{c})^T\boldsymbol{x} +g(\boldsymbol{c})^{T}g(\boldsymbol{c})) \\ &=\begin{matrix}\quad\\argmin\\c\end{matrix} (\boldsymbol{x}^T\boldsymbol{x} -2\boldsymbol{x}^Tg(\boldsymbol{c}) +g(\boldsymbol{c})^{T}g(\boldsymbol{c})) \\ \end{array}\tag{2} c∗=argminc∥x−g(c)∥22=argminc(x−g(c))T(x−g(c))=argminc(xTx−xTg(c)−g(c)Tx+g(c)Tg(c))=argminc(xTx−2xTg(c)+g(c)Tg(c))(2)
公式2运算中使用的知识点: \color{Blue}{\text{公式2运算中使用的知识点:}} 公式2运算中使用的知识点:
1. 两 个 向 量 的 点 积 可 以 用 范 数 来 表 示 , 有 : {\color{Blue}1.}两个向量的点积可以用范数来表示,有: 1.两个向量的点积可以用范数来表示,有:
x T y = ∥ x ∥ 2 ∥ y ∥ 2 cos θ \boldsymbol{x}^T\boldsymbol{y}=\|\boldsymbol{x}\|_2\|\boldsymbol{y}\|_2\cos\theta xTy=∥x∥2∥y∥2cosθ
其 中 θ 表 示 x 和 y 的 夹 角 其中 \theta 表示 \boldsymbol{x} \text{和} \boldsymbol{y} 的夹角 其中θ表示x和y的夹角
此 时 有 此时有 此时有
x T x = ∥ x ∥ 2 ∥ x ∥ 2 cos 9 0 ∘ = ∥ x ∥ 2 2 \boldsymbol{x}^T\boldsymbol{x}=\|\boldsymbol{x}\|_2\|\boldsymbol{x}\|_2\cos90^{\circ}=\|\boldsymbol{x}\|_2^2 xTx=∥x∥2∥x∥2cos90∘=∥x∥22
2. 矩 阵 加 法 乘 法 运 算 的 性 质 : {\color{Blue}2.}矩阵加法乘法运算的性质: 2.矩阵加法乘法运算的性质:
( A + B ) T = A T + B T (\mathbf{A}+\mathbf{B})^T=\mathbf{A}^T+\mathbf{B}^T (A+B)T=AT+BT
A ( B + C ) = A B + A C \mathbf{A}(\mathbf{B}+\mathbf{C})=\mathbf{AB}+\mathbf{AC} A(B+C)=AB+AC
3. 两 个 向 量 的 点 积 满 足 交 换 律 : {\color{Blue}3.}两个{\color{Orange}{向量}}的点积满足交换律: 3.两个向量的点积满足交换律:
x T y = y T x \boldsymbol{x}^T\boldsymbol{y}=\boldsymbol{y}^T\boldsymbol{x} xTy=yTx
由于求最优参数 c ∗ \boldsymbol{c}^* c∗ 使得 ∥ x − g ( c ) ∣ ∣ 2 2 \|\boldsymbol{x} - g(\boldsymbol{c})||^2_2 ∥x−g(c)∣∣22 最小 所以 与 x T x \boldsymbol{x}^T\boldsymbol{x} xTx 无关。并且把 g ( c ) = D c g(\boldsymbol{c}) = \mathbf{D}\boldsymbol{c} g(c)=Dc 进行带入公式(2)得到
(3) c ∗ = a r g m i n c − 2 x T g ( c ) + g ( c ) T g ( c ) ) = a r g m i n c − 2 x T D c + c T D T D c = a r g m i n c − 2 x T D c + c T I l c = a r g m i n c − 2 x T D c + c T c \begin{array}{ll} \boldsymbol{c}^* &=\begin{matrix}\quad\\argmin\\c\end{matrix} -2\boldsymbol{x}^Tg(\boldsymbol{c}) +g(\boldsymbol{c})^{T}g(\boldsymbol{c})) \\ &=\begin{matrix}\quad\\argmin\\c\end{matrix} -2\boldsymbol{x}^T\mathbf{D}\boldsymbol{c} +\boldsymbol{c}^T\mathbf{D}^T\mathbf{D}\boldsymbol{c} \\ &=\begin{matrix}\quad\\argmin\\c\end{matrix} -2\boldsymbol{x}^T\mathbf{D}\boldsymbol{c} +\boldsymbol{c}^T\mathbf{I}_l\boldsymbol{c} \\ &=\begin{matrix}\quad\\argmin\\c\end{matrix} -2\boldsymbol{x}^T\mathbf{D}\boldsymbol{c} +\boldsymbol{c}^T\boldsymbol{c} \end{array}\tag{3} c∗=argminc−2xTg(c)+g(c)Tg(c))=argminc−2xTDc+cTDTDc=argminc−2xTDc+cTIlc=argminc−2xTDc+cTc(3)
由 矩 阵 D 的 正 交 性 和 单 位 范 数 约 束 , 有 D T D = I l 由矩阵\mathbf{D}的正交性和单位范数约束,有 \mathbf{D}^T\mathbf{D}=\mathbf{I}_l 由矩阵D的正交性和单位范数约束,有DTD=Il
由于凸函数在一阶导数为0的点处取得极小值,由式(3)有:
(4) ∇ c ( − 2 x T D c + c T c ) = 0 − 2 D T x + 2 c = 0 c = D T x \begin{array}{rll} \nabla_{\boldsymbol{c}}( -2\boldsymbol{x}^T\mathbf{D}\boldsymbol{c}+\boldsymbol{c}^T\boldsymbol{c} ) &=0\\ -2\mathbf{D}^T\boldsymbol{x}+2\boldsymbol{c} &=0\\ \boldsymbol{c} &=\mathbf{D}^T\boldsymbol{x}\\ \end{array}\tag{4} ∇c(−2xTDc+cTc)−2DTx+2cc=0=0=DTx(4)
此时,由公式(0) 、公式(4)及编码函数和解码函数的定义有:
(5)
编
码
函
数
:
f
(
x
)
=
c
=
D
T
x
{\color{OrangeRed}{\qquad\qquad\qquad\qquad\quad编码函数:}} f(\boldsymbol{x}) = \boldsymbol{c} = \mathbf{D}^T \boldsymbol{x} \tag{5}
编码函数:f(x)=c=DTx(5)
(6) 定 义 P C A 重 构 操 作 , 解 码 函 数 : r ( x ) = g ( f ( x ) ) = g ( c ) = D c = D D T x {\color{OrangeRed}{定义PCA重构操作,解码函数:}} \begin{array}{rll} r(\boldsymbol{x}) &= g(f(\boldsymbol{x})) \\ &= g(\boldsymbol{c}) \\ &= \mathbf{D}\boldsymbol{c} \\ &= \mathbf{D} \mathbf{D}^T \boldsymbol{x} \end{array}\tag{6} 定义PCA重构操作,解码函数:r(x)=g(f(x))=g(c)=Dc=DDTx(6)
下面需要挑选编码矩阵
D
\mathbf{D}
D 。回顾最小化输入和重构之间
L
2
L^2
L2 距离。 因为是使用相同矩阵
D
\mathbf{D}
D 对所有点进行解码,不能再孤立地看待每个点。相反,必须最小化所有维数和所有点上的误差矩阵的 Frobenius 范数:
(7)
D
∗
=
a
r
g
m
i
n
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
\mathbf{D^*} = \begin{matrix}\quad\\argmin\\_\mathbf{D}\end{matrix} \sqrt{\sum_{i,j}(\boldsymbol{x}_{j}^{(i)} -r(\boldsymbol{x}^{(i)})_{j})^2} \quad subject\,to\quad \mathbf{D}^T\mathbf{D} = \mathbf{I}_{l} \tag{7}
D∗=argminDi,j∑(xj(i)−r(x(i))j)2subjecttoDTD=Il(7)
考虑 l = 1 l =1 l=1 ,此时 D \mathbf{D} D 是一个单一向量 d \boldsymbol{d} d。记 X ∈ R m × n \mathbf{X} \in \Bbb{R}^{m \times n} X∈Rm×n, 其中 X i , : = x ( i ) T \mathbf{X}_{i,:} = \boldsymbol{x}^{(i)^{T}} Xi,:=x(i)T, 我们将式(7)写成矩阵形式:
(8) d ∗ = a r g m i n d ∥ X − X d d T ∥ F 2 s u b j e c t    t o d T d = 1 = a r g m i n d   T r ( ( X − X d d T ) T ( X − X d d T ) ) s u b j e c t    t o d T d = 1 = a r g m i n 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 ) s u b j e c t    t o d T d = 1 = a r g m i n d   T r ( X T X ) − 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 ) s u b j e c t    t o d T d = 1 = a r g m i n d   T r ( X T X ) − 2 T r ( X T X d d T ) + T r ( X T X d d T d d T ) s u b j e c t    t o d T d = 1 \begin{array}{rll} \boldsymbol{d^*} &= \begin{matrix}\quad\\argmin\\_\boldsymbol{d}\end{matrix} \left \| \boldsymbol{X-Xdd}^{T} \right \|^{2}_{F} \quad subject \; to \ \ \boldsymbol{d}^T \boldsymbol{d} = 1\\ &= \begin{matrix}\quad\\argmin\\_\boldsymbol{d}\end{matrix} \, Tr \left( \left(\boldsymbol{X- Xdd}^T\right)^T \left(\boldsymbol{X -X dd}^T\right) \right) \quad subject \; to \ \ \boldsymbol{d}^T \boldsymbol{d} = 1\\ &= \begin{matrix}\quad\\argmin\\_\boldsymbol{d}\end{matrix} \, Tr \left( \boldsymbol{X}^T\boldsymbol{X} - \boldsymbol{X}^T\boldsymbol{Xdd}^T - \boldsymbol{dd}^T\boldsymbol{X}^T\boldsymbol{X} + \boldsymbol{dd}^T\boldsymbol{X}^T\boldsymbol{Xdd}^T \right) \quad subject \; to \ \ \boldsymbol{d}^T \boldsymbol{d} = 1\\ &= \begin{matrix}\quad\\argmin\\_\boldsymbol{d}\end{matrix} \, Tr( \boldsymbol{X}^T\boldsymbol{X} ) - Tr(\boldsymbol{X}^T\boldsymbol{Xdd}^T ) - Tr(\boldsymbol{dd}^T\boldsymbol{X}^T\boldsymbol{X} ) + Tr(\boldsymbol{dd}^T\boldsymbol{X}^T\boldsymbol{Xdd}^T ) \quad subject \; to \ \ \boldsymbol{d}^T \boldsymbol{d} = 1\\ &= \begin{matrix}\quad\\argmin\\_\boldsymbol{d}\end{matrix} \, Tr( \boldsymbol{X}^T\boldsymbol{X} ) - 2Tr(\boldsymbol{X}^T\boldsymbol{Xdd}^T ) + Tr(\boldsymbol{X}^T\boldsymbol{Xdd}^T\boldsymbol{dd}^T ) \quad subject \; to \ \ \boldsymbol{d}^T \boldsymbol{d} = 1\\ \end{array}\tag{8} d∗=argmind∥∥∥X−XddT∥∥∥F2subjectto dTd=1=argmindTr((X−XddT)T(X−XddT))subjectto dTd=1=argmindTr(XTX−XTXddT−ddTXTX+ddTXTXddT)subjectto dTd=1=argmindTr(XTX)−Tr(XTXddT)−Tr(ddTXTX)+Tr(ddTXTXddT)subjectto dTd=1=argmindTr(XTX)−2Tr(XTXddT)+Tr(XTXddTddT)subjectto dTd=1(8)
公式8运算中使用的知识点: \color{Blue}{\text{公式8运算中使用的知识点:}} 公式8运算中使用的知识点:
1. 标 量 与 向 量 乘 积 运 算 中 , 标 量 放 在 向 量 的 左 边 或 右 边 都 可 以 , 结 合 标 量 的 转 置 等 于 它 本 身 , {\color{Blue}1.}标量与向量乘积运算中,标量放在向量的左边或右边都可以,结合标量的转置等于它本身, 1.标量与向量乘积运算中,标量放在向量的左边或右边都可以,结合标量的转置等于它本身,
可 以 根 据 美 观 的 需 要 对 公 式 进 行 重 排 可以根据美观的需要对公式进行重排 可以根据美观的需要对公式进行重排
2. 通 过 矩 阵 的 迹 运 算 描 述 矩 阵 F r o b e n i u s 范 数 : {\color{Blue}2.}通过矩阵的迹运算描述矩阵Frobenius 范数: 2.通过矩阵的迹运算描述矩阵Frobenius范数:
∥ A ∥ F = T r ( A A T ) = T r ( A T A ) \|\mathbf{A}\|_F=\sqrt{Tr(\mathbf{AA}^T)}=\sqrt{Tr(\mathbf{A}^T\mathbf{A})} ∥A∥F=Tr(AAT)=Tr(ATA)
3. 矩 阵 迹 的 运 算 性 质 : {\color{Blue}3.}矩阵迹的运算性质: 3.矩阵迹的运算性质:
T r ( A + B ) = T r ( A ) + T r ( B ) Tr(\mathbf{A+B})=Tr(\mathbf{A})+Tr(\mathbf{B}) Tr(A+B)=Tr(A)+Tr(B)Tr ( ∏ i = 1 n F ( i ) ) = Tr ( F ( n ) ∏ i = 1 n − 1 F ( i ) ) 循 环 改 变 迹 运 算 中 相 乘 的 顺 序 不 影 响 结 果 \begin{matrix} \operatorname{Tr}(\prod\limits_{i=1}^n\mathbf{F}^{(i)}) =\operatorname{Tr}(\mathbf{F}^{(n)}\prod\limits_{i=1}^{n-1}\mathbf{F}^{(i)})\\ 循环改变迹运算中相乘的顺序不影响结果\end{matrix} Tr(i=1∏nF(i))=Tr(F(n)i=1∏n−1F(i))循环改变迹运算中相乘的顺序不影响结果
式(8)去除不相关的项( T r ( X T X ) Tr( \mathbf{X}^T\mathbf{X} ) Tr(XTX)与 d \boldsymbol{d} d无关 ),并且结合约束条件 d T d = 1 \boldsymbol{d}^T \boldsymbol{d} = 1 dTd=1 有:
(9) d ∗ = a r g m i n d    − 2 T r ( X T X d d T ) + T r ( X T X d d T d d T ) s u b j e c t    t o d T d = 1 = a r g m i n d    − 2 T r ( X T X d d T ) + T r ( X T X d d T ) s u b j e c t    t o d T d = 1 = a r g m i n d    − T r ( X T X d d T ) s u b j e c t    t o d T d = 1 = a r g m a x d    T r ( X T X d d T ) s u b j e c t    t o d T d = 1 \begin{array}{rll} \boldsymbol{d^*} &= \begin{matrix}\quad\\argmin\\_\boldsymbol{d}\end{matrix} \; -2Tr(\boldsymbol{X}^T\boldsymbol{Xdd}^T ) + Tr(\boldsymbol{X}^T\boldsymbol{Xdd}^T\boldsymbol{dd}^T ) \quad subject \; to \ \ \boldsymbol{d}^T \boldsymbol{d} = 1\\ &= \begin{matrix}\quad\\argmin\\_\boldsymbol{d}\end{matrix} \; -2Tr(\boldsymbol{X}^T\boldsymbol{Xdd}^T ) + Tr(\boldsymbol{X}^T\boldsymbol{Xdd}^T ) \quad subject \; to \ \ \boldsymbol{d}^T \boldsymbol{d} = 1\\ &= \begin{matrix}\quad\\argmin\\_\boldsymbol{d}\end{matrix} \; -Tr(\boldsymbol{X}^T\boldsymbol{Xdd}^T ) \quad subject \; to \ \ \boldsymbol{d}^T \boldsymbol{d} = 1\\ &= \begin{matrix}\quad\\argmax\\_\boldsymbol{d}\end{matrix} \; Tr(\boldsymbol{X}^T\boldsymbol{Xdd}^T ) \quad subject \; to \ \ \boldsymbol{d}^T \boldsymbol{d} = 1 \end{array}\tag{9} d∗=argmind−2Tr(XTXddT)+Tr(XTXddTddT)subjectto dTd=1=argmind−2Tr(XTXddT)+Tr(XTXddT)subjectto dTd=1=argmind−Tr(XTXddT)subjectto dTd=1=argmaxdTr(XTXddT)subjectto dTd=1(9)
公式(9)的优化问题可以通过特征分解来求解可得,即最优的 d \boldsymbol{d} d 是 X T X \boldsymbol{X}^T\boldsymbol{X} XTX 最大特征值对应的特征向量。
上述推导特征与 l = 1 l=1 l=1 的情况,仅得到了第一个主成分