主成分分析

前言

花书第一章的实例内容
主成分分析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 &lt; 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})) xg(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} DRn×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=argmincxg(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}^* &amp;= \begin{matrix}\quad\\argmin\\c\end{matrix} \|\boldsymbol{x}-g(\boldsymbol{c})\|_2^2\\ &amp;=\begin{matrix}\quad\\argmin\\c\end{matrix} (\boldsymbol{x}-g(\boldsymbol{c}))^T(\boldsymbol{x}-g(\boldsymbol{c})) \\ &amp;=\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})) \\ &amp;=\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=argmincxg(c)22=argminc(xg(c))T(xg(c))=argminc(xTxxTg(c)g(c)Tx+g(c)Tg(c))=argminc(xTx2xTg(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=x2y2cosθ
其 中 θ 表 示 x 和 y 的 夹 角 其中 \theta 表示 \boldsymbol{x} \text{和} \boldsymbol{y} 的夹角 θxy
此 时 有 此时有
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=x2x2cos90=x22
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 xg(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}^* &amp;=\begin{matrix}\quad\\argmin\\c\end{matrix} -2\boldsymbol{x}^Tg(\boldsymbol{c}) +g(\boldsymbol{c})^{T}g(\boldsymbol{c})) \\ &amp;=\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} \\ &amp;=\begin{matrix}\quad\\argmin\\c\end{matrix} -2\boldsymbol{x}^T\mathbf{D}\boldsymbol{c} +\boldsymbol{c}^T\mathbf{I}_l\boldsymbol{c} \\ &amp;=\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=argminc2xTg(c)+g(c)Tg(c))=argminc2xTDc+cTDTDc=argminc2xTDc+cTIlc=argminc2xTDc+cTc(3)

由 矩 阵 D 的 正 交 性 和 单 位 范 数 约 束 , 有 D T D = I l 由矩阵\mathbf{D}的正交性和单位范数约束,有 \mathbf{D}^T\mathbf{D}=\mathbf{I}_l DDTD=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} ) &amp;=0\\ -2\mathbf{D}^T\boldsymbol{x}+2\boldsymbol{c} &amp;=0\\ \boldsymbol{c} &amp;=\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}) &amp;= g(f(\boldsymbol{x})) \\ &amp;= g(\boldsymbol{c}) \\ &amp;= \mathbf{D}\boldsymbol{c} \\ &amp;= \mathbf{D} \mathbf{D}^T \boldsymbol{x} \end{array}\tag{6} PCAr(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 &ThinSpace; 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)2 subjecttoDTD=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} XRm×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 &ThickSpace; t o    d T d = 1 = a r g m i n d &ThinSpace; T r ( ( X − X d d T ) T ( X − X d d T ) ) s u b j e c t &ThickSpace; t o    d T d = 1 = a r g m i n d &ThinSpace; 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 &ThickSpace; t o    d T d = 1 = a r g m i n d &ThinSpace; 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 &ThickSpace; t o    d T d = 1 = a r g m i n d &ThinSpace; 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 &ThickSpace; t o    d T d = 1 \begin{array}{rll} \boldsymbol{d^*} &amp;= \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\\ &amp;= \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\\ &amp;= \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\\ &amp;= \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\\ &amp;= \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=argmindXXddTF2subjectto  dTd=1=argmindTr((XXddT)T(XXddT))subjectto  dTd=1=argmindTr(XTXXTXddTddTXTX+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})} AF=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=1nF(i))=Tr(F(n)i=1n1F(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 &ThickSpace; − 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 &ThickSpace; t o    d T d = 1 = a r g m i n d &ThickSpace; − 2 T r ( X T X d d T ) + T r ( X T X d d T ) s u b j e c t &ThickSpace; t o    d T d = 1 = a r g m i n d &ThickSpace; − T r ( X T X d d T ) s u b j e c t &ThickSpace; t o    d T d = 1 = a r g m a x d &ThickSpace; T r ( X T X d d T ) s u b j e c t &ThickSpace; t o    d T d = 1 \begin{array}{rll} \boldsymbol{d^*} &amp;= \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\\ &amp;= \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\\ &amp;= \begin{matrix}\quad\\argmin\\_\boldsymbol{d}\end{matrix} \; -Tr(\boldsymbol{X}^T\boldsymbol{Xdd}^T ) \quad subject \; to \ \ \boldsymbol{d}^T \boldsymbol{d} = 1\\ &amp;= \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=argmind2Tr(XTXddT)+Tr(XTXddTddT)subjectto  dTd=1=argmind2Tr(XTXddT)+Tr(XTXddT)subjectto  dTd=1=argmindTr(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 的情况,仅得到了第一个主成分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值