主成分分析(PCA)的数学推导

本文参考主成分分析降维原理——PCA数学推导深度学习(2.12)
应用层面的推导参考【机器学习】降维——PCA(非常详细)PCA的数学原理
    主成分分析是一个简单的机器学习算法,可以通过基础的线性代数知识推导。

    假设在 R n \mathbb{R}^{n} Rn空间中我们有 m m m个点 { x ( 1 ) , . . . , x ( m ) } \{\mathbf{x}^{(1)},...,\mathbf{x}^{(m)}\} {x(1),...,x(m)},我们希望对这些点进行有损压缩。有损压缩表示我们使用更少的内存,但损失一些精度去存储这些点。我们希望损失的精度尽可能少。

    一种编码这些点的方式是用低维表示。对于每个点 x ( i ) ∈ R n \mathbf{x}^{(i)}\in\mathbb{R}^{n} x(i)Rn,会有一个对应的编码向量 c i ∈ R l \mathbf{c}^{i}\in\mathbb{R}^{l} ciRl。如果 l l l n n n小,那么我们便使用了更少的内存来存储原来的数据。我们希望找到一个编码函数,根据输入返回编码, f ( x ) = c f(\mathbf{x})=\mathbf{c} f(x)=c;我们也希望找到一个解码函数,给定编码重构输入, x ≈ g ( f ( x ) ) x\approx g(f(\mathbf{x})) xg(f(x))

    PCA 由我们选择的解码函数而定。具体地,为了简化解码器,我们使用矩阵乘法将编码映射回 R n \mathbb{R}^{n} Rn,即 g ( c ) = D c g(\mathbf{c}) = D\mathbf{c} g(c)=Dc,其 D ∈ R n × l D\in\mathbb{R}^{n\times l} DRn×l是定义解码的矩阵。

    目前为止所描述的问题,可能会有多个解。因为如果我们按比例地缩小所有点对应的编码向量 c i c_{i} ci,那么我们只需按比例放大 D : , i D_{:,i} D:,i,即可保持结果不变。为了使问题有唯一解,我们限制 D D D 中所有列向量都有单位范数。

    计算这个解码器的最优编码可能是一个困难的问题。为了使编码问题简单一些,PCA限制 D D D的列向量彼此正交(注意,除非 l = n l=n l=n,否则严格意义上 D D D不是一个正交矩阵)。

    为了将这个基本想法变为我们能够实现的算法,首先我们需要明确如何根据每一个输入 x \mathbf{x} x得到一个最优编码 c ∗ c^{*} c。一种方法是最小化原始输入向量 x \mathbf{x} x和重构向量 g ( c ∗ ) g(\mathbf{c}^{*}) g(c)之间的距离。我们使用范数来衡量它们之间的距离。在PCA算法中,我们使用 L 2 L^{2} L2 范数:
c ∗ = a g r min ⁡ ∥ x − g ( c ) ∥ 2 . \mathbf{c^{*}}=agr\min\|\mathbf{x}-g(\mathbf{c})\|_{2}. c=agrminxg(c)2.

    我们可以用平方 L 2 L^{2} L2 范数替代 L 2 L^{2} L2 范数,因为两者在相同的值 c \mathbf{c} c上取得最小值。这是因为 L 2 L^{2} L2 范数是非负的,并且平方运算在非负值上是单调递增的。
c ∗ = a g r min ⁡ c ∥ x − g ( c ) ∥ 2 2 . \mathbf{c^{*}}=agr\min\limits_{\mathbf{c}}\|\mathbf{x}-g(\mathbf{c})\|_{2}^{2}. c=agrcminxg(c)22.

该最小化函数可以简化成:
( x − g ( c ) ) T ( x − g ( c ) ) = x T x − x T g ( c ) − g ( c ) T x + g ( c ) T g ( c ) = x T x − 2 x T g ( c ) + g ( c ) T g ( c ) (\mathbf{x}-g(\mathbf{c}))^{T}(\mathbf{x}-g(\mathbf{c}))=\mathbf{x}^{T}\mathbf{x}-\mathbf{x}^{T}g(\mathbf{c})-g(\mathbf{c})^{T}\mathbf{x}+g(\mathbf{c})^{T}g(\mathbf{c})=\mathbf{x}^{T}\mathbf{x}-2\mathbf{x}^{T}g(\mathbf{c})+g(\mathbf{c})^{T}g(\mathbf{c}) (xg(c))T(xg(c))=xTxxTg(c)g(c)Tx+g(c)Tg(c)=xTx2xTg(c)+g(c)Tg(c)

因为第一项x⊤x 不依赖于c,所以我们可以忽略它,得到如下的优化目标:
c ∗ = a g r min ⁡ c − 2 x T g ( c ) + g ( c ) T g ( c ) . \mathbf{c}^{*}=agr\min\limits_{\mathbf{c}}-2\mathbf{x}^{T}g(\mathbf{c})+g(\mathbf{c})^{T}g(\mathbf{c}). c=agrcmin2xTg(c)+g(c)Tg(c).

更进一步,我们代入 g ( c ) g(\mathbf{c}) g(c)的定义:
c ∗ = a g r min ⁡ c − 2 x T D c + c T D T D c = a g r min ⁡ c − 2 x T D c + c T c \mathbf{c}^{*}=agr\min\limits_{\mathbf{c}}-2\mathbf{x}^{T}D\mathbf{c}+\mathbf{c}^{T}D^{T}D\mathbf{c}=agr\min\limits_{\mathbf{c}}-2\mathbf{x}^{T}D\mathbf{c}+\mathbf{c}^{T}\mathbf{c} c=agrcmin2xTDc+cTDTDc=agrcmin2xTDc+cTc

    我们可以通过向量微积分来求解这个最优化问题,对 c \mathbf{c} c求偏导,并令:
∇ c ( − 2 x T D c + c T c ) = − 2 D T x + 2 c = 0 \nabla_{\mathbf{c}}(-2\mathbf{x}^{T}D\mathbf{c}+\mathbf{c}^{T}\mathbf{c})=-2D^{T}\mathbf{x}+2\mathbf{c}=0 c(2xTDc+cTc)=2DTx+2c=0

则:
c = D T x . \mathbf{c}=D^{T}\mathbf{x}. c=DTx.

    这使得算法很高效:最优编码 x \mathbf{x} x只需要一个矩阵-向量乘法操作。为了编码向量,我们使用编码函数:
f ( x ) = D T x . f(\mathbf{x})=D^{T}\mathbf{x}. f(x)=DTx.

进一步使用矩阵乘法,我们也可以定义PCA重构操作:
r ( x ) = g ( f ( x ) ) = D D T x . r(\mathbf{x})=g(f(\mathbf{x}))=DD^{T}\mathbf{x}. r(x)=g(f(x))=DDTx.

    接下来,我们需要挑选编码矩阵 D D D。要做到这一点,我们回顾最小化输入和重构之间 L 2 L^{2} L2 距离的这个想法。因为我们用相同的矩阵 D D D对所有点进行解码,我们不能再孤立地看待每个点。反之,我们必须最小化所有维数和所有点上的误差矩阵Frobenius范数,记 X = [ x ( 1 ) , . . . , x ( m ) ] X=[\mathbf{x}^{(1)},...,\mathbf{x}^{(m)}] X=[x(1),...,x(m)]
D ∗ = arg min ⁡ D ∥ X − D D T X ∥ F 2 , s . t . D T D = I l D^{*}=\argmin\limits_{D}\|X-DD^{T}X\|_{F}^{2},s.t. D^{T}D=I_{l} D=DargminXDDTXF2,s.t.DTD=Il

暂时不考虑约束,我们可以将Frobenius 范数简化成下面的形式:
arg min ⁡ D ∥ X − D D T X ∥ F 2 = arg min ⁡ D T r [ ( X − D D T X ) T ( X − D D T X ) ] = arg min ⁡ D [ T r ( X T X ) − 2 T r ( X T D D T X ) + T r ( X T D D T D D T X ) ] = arg min ⁡ D [ − 2 T r ( X T D D T X ) + T r ( X T D D T D D T X ) ] = arg min ⁡ D [ − T r ( X T D D T X ) ] = arg max ⁡ D [ T r ( D T X X T D ) ] \begin{aligned} &\argmin\limits_{D}\|X-DD^{T}X\|_{F}^{2}\\ =&\argmin\limits_{D}Tr[(X-DD^{T}X)^{T}(X-DD^{T}X)]\\ =&\argmin\limits_{D}[Tr(X^{T}X)-2Tr(X^{T}DD^{T}X)+Tr(X^{T}DD^{T}DD^{T}X)]\\ =&\argmin\limits_{D}[-2Tr(X^{T}DD^{T}X)+Tr(X^{T}DD^{T}DD^{T}X)]\\ =&\argmin\limits_{D}[-Tr(X^{T}DD^{T}X)]\\ =&\argmax\limits_{D}[Tr(D^{T}XX^{T}D)]\\ \end{aligned} =====DargminXDDTXF2DargminTr[(XDDTX)T(XDDTX)]Dargmin[Tr(XTX)2Tr(XTDDTX)+Tr(XTDDTDDTX)]Dargmin[2Tr(XTDDTX)+Tr(XTDDTDDTX)]Dargmin[Tr(XTDDTX)]Dargmax[Tr(DTXXTD)]
    由于 X X T XX^{T} XXT n × n n\times n n×n实对称矩阵,因此其存在 n n n个实数(非负)特征值,设为 { λ 1 , λ 2 , . . . , λ n } \{\lambda_{1},\lambda_{2},...,\lambda_{n}\} {λ1,λ2,...,λn}(假设 λ 1 ≥ λ 2 ≥ . . . ≥ λ n \lambda_{1}\geq\lambda_{2}\geq...\geq\lambda_{n} λ1λ2...λn),和 n n n个正交的特征向量(不妨设为标准正交向量)设为 { v 1 , v 2 , . . . , v n } \{\mathbf{v}_{1},\mathbf{v}_{2},...,\mathbf{v}_{n}\} {v1,v2,...,vn},即存在标准正交矩阵 P = [ v 1 , v 2 , . . . , v n ] P=[\mathbf{v}_{1},\mathbf{v}_{2},...,\mathbf{v}_{n}] P=[v1,v2,...,vn]满足 P T X X T = Λ ⇔ X X T = P Λ P T P^{T}XX^{T}=\Lambda \Leftrightarrow XX^{T}=P\Lambda P^{T} PTXXT=ΛXXT=PΛPT.

    记 D = [ d 1 , . . . , d l ] D=[\mathbf{d}_{1},...,\mathbf{d}_{l}] D=[d1,...,dl],则有
arg max ⁡ D T D = I ( d 1 T X X T d 1 + d 2 T X X T d 2 + . . . + d l T X X T d l ) ≤ arg max ⁡ D T D = I ( d 1 T X X T d 1 ) + arg max ⁡ D T D = I ( d 2 T X X T d 2 + . . . + d l T X X T d l ) \begin{aligned} &\argmax\limits_{D^{T}D=I}(\mathbf{d}_{1}^{T}XX^{T}\mathbf{d}_{1}+\mathbf{d}_{2}^{T}XX^{T}\mathbf{d}_{2}+...+\mathbf{d}_{l}^{T}XX^{T}\mathbf{d}_{l})\\ \leq&\argmax\limits_{D^{T}D=I}(\mathbf{d}_{1}^{T}XX^{T}\mathbf{d}_{1})+\argmax\limits_{D^{T}D=I}(\mathbf{d}_{2}^{T}XX^{T}\mathbf{d}_{2}+...+\mathbf{d}_{l}^{T}XX^{T}\mathbf{d}_{l}) \end{aligned} DTD=Iargmax(d1TXXTd1+d2TXXTd2+...+dlTXXTdl)DTD=Iargmax(d1TXXTd1)+DTD=Iargmax(d2TXXTd2+...+dlTXXTdl)

由Reyleigh商最大最小定理,
arg max ⁡ D T D = I ( d 1 T X X T d 1 ) = λ m a x ( X X T ) = λ 1 \argmax\limits_{D^{T}D=I}(\mathbf{d}_{1}^{T}XX^{T}\mathbf{d}_{1})=\lambda_{max}(XX^{T})=\lambda_{1} DTD=Iargmax(d1TXXTd1)=λmax(XXT)=λ1
根据 D T D = I D^{T}D=I DTD=I d 2 ∈ { s p a n ( v 2 , . . . , v n ) ⋂ ( d 2 T d 2 = 1 ) } \mathbf{d}_{2} \in \{span(\mathbf{v}_{2},...,\mathbf{v}_{n})\bigcap(\mathbf{d}_{2}^{T}\mathbf{d}_{2}=1)\} d2{span(v2,...,vn)(d2Td2=1)},因为用标准正交基可以表示任何向量,于是对任意的 d 2 \mathbf{d}_{2} d2可以表示为:
d 2 = [ v 2 , . . . , v n ] [ d 22 , d 23 , . . . , d 2 n ] T \mathbf{d}_{2}=[\mathbf{v}_{2},...,\mathbf{v}_{n}][d_{22},d_{23},...,d_{2n}]^{T} d2=[v2,...,vn][d22,d23,...,d2n]T
因此
arg max ⁡ D T D = I ( d 2 T X X T d 2 ) = arg max ⁡ D T D = I ( λ 2 d 22 + λ 3 d 23 + . . . + λ n d 2 n ) ≤ λ 2 \argmax\limits_{D^{T}D=I}(\mathbf{d}_{2}^{T}XX^{T}\mathbf{d}_{2}) =\argmax\limits_{D^{T}D=I}(\lambda_{2}d_{22}+\lambda_{3}d_{23}+...+\lambda_{n}d_{2n})\leq\lambda_{2} DTD=Iargmax(d2TXXTd2)=DTD=Iargmax(λ2d22+λ3d23+...+λnd2n)λ2
由于 d 2 = v 2 \mathbf{d}_{2}=\mathbf{v}_{2} d2=v2时,等号成立,于是有
arg max ⁡ D T D = I ( d 2 T X X T d 2 ) = λ 2 \argmax\limits_{D^{T}D=I}(\mathbf{d}_{2}^{T}XX^{T}\mathbf{d}_{2})=\lambda_{2} DTD=Iargmax(d2TXXTd2)=λ2
于是有
arg max ⁡ D T D = I ( d 2 T X X T d 2 + . . . + d l T X X T d l ) ≤ λ 2 + arg max ⁡ D T D = I ( d 3 T X X T d 3 + . . . + d l T X X T d l ) \argmax\limits_{D^{T}D=I}(\mathbf{d}_{2}^{T}XX^{T}\mathbf{d}_{2}+...+\mathbf{d}_{l}^{T}XX^{T}\mathbf{d}_{l})\leq\lambda_{2}+\argmax\limits_{D^{T}D=I}(\mathbf{d}_{3}^{T}XX^{T}\mathbf{d}_{3}+...+\mathbf{d}_{l}^{T}XX^{T}\mathbf{d}_{l}) DTD=Iargmax(d2TXXTd2+...+dlTXXTdl)λ2+DTD=Iargmax(d3TXXTd3+...+dlTXXTdl)
归纳可得,
arg max ⁡ D T D = I ( d 1 T X X T d 1 + d 2 T X X T d 2 + . . . + d l T X X T d l ) ≤ λ 1 + λ 2 + . . . + λ l \argmax\limits_{D^{T}D=I}(\mathbf{d}_{1}^{T}XX^{T}\mathbf{d}_{1}+\mathbf{d}_{2}^{T}XX^{T}\mathbf{d}_{2}+...+\mathbf{d}_{l}^{T}XX^{T}\mathbf{d}_{l})\leq\lambda_{1}+\lambda_{2}+...+\lambda_{l} DTD=Iargmax(d1TXXTd1+d2TXXTd2+...+dlTXXTdl)λ1+λ2+...+λl
同时,容易验证,当 d 1 = v 1 , . . . , d l = v l \mathbf{d}_{1}=\mathbf{v}_{1},...,\mathbf{d}_{l}=\mathbf{v}_{l} d1=v1,...,dl=vl时,有
d 1 T X X T d 1 + d 2 T X X T d 2 + . . . + d l T X X T d l = λ 1 + λ 2 + . . . + λ l \mathbf{d}_{1}^{T}XX^{T}\mathbf{d}_{1}+\mathbf{d}_{2}^{T}XX^{T}\mathbf{d}_{2}+...+\mathbf{d}_{l}^{T}XX^{T}\mathbf{d}_{l}=\lambda_{1}+\lambda_{2}+...+\lambda_{l} d1TXXTd1+d2TXXTd2+...+dlTXXTdl=λ1+λ2+...+λl

综上,有
arg max ⁡ D T D = I ( d 1 T X X T d 1 + d 2 T X X T d 2 + . . . + d l T X X T d l ) = λ 1 + λ 2 + . . . + λ l \argmax\limits_{D^{T}D=I}(\mathbf{d}_{1}^{T}XX^{T}\mathbf{d}_{1}+\mathbf{d}_{2}^{T}XX^{T}\mathbf{d}_{2}+...+\mathbf{d}_{l}^{T}XX^{T}\mathbf{d}_{l})=\lambda_{1}+\lambda_{2}+...+\lambda_{l} DTD=Iargmax(d1TXXTd1+d2TXXTd2+...+dlTXXTdl)=λ1+λ2+...+λl
且取到最大值的条件是 d 1 = v 1 , . . . , d l = v l \mathbf{d}_{1}=\mathbf{v}_{1},...,\mathbf{d}_{l}=\mathbf{v}_{l} d1=v1,...,dl=vl,即 D D D X X T XX^{T} XXT的最大的 l l l个特征值对于的特征向量为列组成的矩阵。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值