主成分分析(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=agrcmin2x

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值