PCA原理小结

  主成分分析(Principal Component Analysis,PCA)是最常用的一种数据降维方法。顾名思义,PCA就是找出原始数据中最主要的方面来表示原始数据,可以获得比原始输入维度更低的表示。具体来说,假设原始数据 X={x(1),x(2),,x(m)} X = { x ( 1 ) , x ( 2 ) , … , x ( m ) } x(i) x ( i ) d d 维向量,我们现在希望将每个样本x(i) d d 维降到d维( d<d d ′ < d ),并且希望新的 d d ′ 维数据能尽可能代表原始数据。显然,数据降维之后肯定会有数据损失,如何将这个损失降到最小就是PCA要解决的问题了。

1. PCA的直观理解

  我们不妨先考虑这样一个问题:对于正交属性空间中的样本点,如何用一个超平面对所有样本进行恰当的表达?

  首先我们要明确什么叫做“恰当的表达”。以上图为例,左图中的二维数据中样本几乎都是沿着 x2=x1 x 2 = x 1 方向分布, x1 x 1 x2 x 2 存在着很明显的相关性,样本点在 x1 x 1 x2 x 2 两个方向变化幅度相当,所以如果要区分各个样本点, x1 x 1 x2 x 2 缺一不可,缺少其中一个都有可能出现丢失大量数据的情况。如果我们将原始坐标系旋转 45 45 ∘ ,得到右图坐标系 (z1,z2) ( z 1 , z 2 ) ,现在样本点几乎沿着 z1 z 1 方向分布了,在 z2 z 2 方向不同样本点几乎没有差别,因此去掉 z2 z 2 也影响不大。这里 z1 z 1 其实就对应这数据的第一个主要成分,我们用 z1 z 1 就能表达绝大部分数据。
  然后再回到本节开始的问题,如果存在这样的超平面,那么它大概存在什么样的性质呢?从上图中的例子我们归纳:
  (1) 最近重构性:样本点到这个超平面的距离都足够近
  (2) 最大可分性:样本点在这个超平面上的投影能尽可能分开
  其实用一句话总结就是,PCA学习了一种元素之间彼此没有线性相关的表示。从上图中也可以看出,相比 (x1,x2) ( x 1 , x 2 ) 坐标系表达, (z1,z2) ( z 1 , z 2 ) 坐标系两个轴的相关性明显低得多甚至可以忽略。基于上面的最近重构性和最大可分性,可以得到PCA两种不同的等价推导。

2. PCA推导

  假设 m m d维数据 (x(1),x(2),,x(m)) ( x ( 1 ) , x ( 2 ) , … , x ( m ) ) 都已经进行了中心化,即 mi=1x(i)=0 ∑ i = 1 m x ( i ) = 0 。经过投影变换后得到的新坐标系为 {w1,w2,,wd} { w 1 , w 2 , … , w d } ,其中 wi w i 是标准正交基, wi2=1,wTiwj=0(ij) ‖ w i ‖ 2 = 1 , w i T w j = 0 ( i ≠ j ) 。如果我们将数据从 d d 维降到d维,即丢弃新坐标系中的部分坐标,则样本点 x(i) x ( i ) 在新坐标系中的投影为 z(i)=(z(i)1,z(i)2,,z(i)d) z ( i ) = ( z 1 ( i ) , z 2 ( i ) , … , z d ′ ( i ) ) ,其中 z(i)j=wTjx(i) z j ( i ) = w j T x ( i ) x(i) x ( i ) 在低维新坐标系下第 j j 维的坐标。那么新坐标z(i)和旧坐标 x(i) x ( i ) 的映射关系为

z(i)=WTx(i)(1) (1) z ( i ) = W T x ( i )
其中 W W d个标准正交基组成的矩阵。如果基于 z(i) z ( i ) 来重构 x(i) x ( i ) ,有
x^(i)=j=1dz(i)jwj=Wz(i)(2) (2) x ^ ( i ) = ∑ j = 1 d ′ z j ( i ) w j = W z ( i )

最近重构性推导

  最近重构性是指样本点到这个超平面的距离足够近,即通过主成分重构得到的 x^(i) x ^ ( i ) 和原始样本点 x(i) x ( i ) 的距离尽可能小。也可以从另外一个角度理解:降维后的数据要尽可能接近原始数据。考虑整个训练集,重构得到的 x^(i) x ^ ( i ) 和原始样本点 x(i) x ( i ) 的距离平方和为

i=1mx^(i)x(i)22=i=1mWz(i)x(i)22=i=1m(Wz(i))T(Wz(i))2i=1m(Wz(i))Tx(i)+i=1mx(i)Tx(i)=i=1mz(i)TWTWz(i)2i=1mz(i)TWTx(i)+i=1mx(i)Tx(i)=i=1mz(i)Tz(i)2i=1mz(i)Tz(i)+i=1mx(i)Tx(i)=i=1mz(i)Tz(i)+i=1mx(i)Tx(i)=tr(WTi=1m(x(i)x(i)T)W)+i=1mx(i)Tx(i)=tr(WTXXTW)+i=1mx(i)Tx(i) ∑ i = 1 m ‖ x ^ ( i ) − x ( i ) ‖ 2 2 = ∑ i = 1 m ‖ W z ( i ) − x ( i ) ‖ 2 2 = ∑ i = 1 m ( W z ( i ) ) T ( W z ( i ) ) − 2 ∑ i = 1 m ( W z ( i ) ) T x ( i ) + ∑ i = 1 m x ( i ) T x ( i ) = ∑ i = 1 m z ( i ) T W T W z ( i ) − 2 ∑ i = 1 m z ( i ) T W T x ( i ) + ∑ i = 1 m x ( i ) T x ( i ) = ∑ i = 1 m z ( i ) T z ( i ) − 2 ∑ i = 1 m z ( i ) T z ( i ) + ∑ i = 1 m x ( i ) T x ( i ) = − ∑ i = 1 m z ( i ) T z ( i ) + ∑ i = 1 m x ( i ) T x ( i ) = − t r ( W T ∑ i = 1 m ( x ( i ) x ( i ) T ) W ) + ∑ i = 1 m x ( i ) T x ( i ) = − t r ( W T X X T W ) + ∑ i = 1 m x ( i ) T x ( i )
因此最小化 mi=1x^(i)x(i)22 ∑ i = 1 m ‖ x ^ ( i ) − x ( i ) ‖ 2 2 等价于下面的约束优化问题:
argminWtr(WTXXTW), s.t. WTW=I(3) (3) arg ⁡ min W − t r ( W T X X T W ) ,   s . t .   W T W = I
这个问题想必大家很熟悉了,用拉格朗日乘子法可得对应的拉格朗日函数为
L(W,λ)=tr(WTXXTW)+λ(WTWI)(4) (4) L ( W , λ ) = − t r ( W T X X T W ) + λ ( W T W − I )
然后就化为对偶问题
maxλminWL(W,λ) max λ min W L ( W , λ )
L(W,b) L ( W , b ) W W 求导,得:
2XXTW+2λW=0
整理一下,即
XXTW=λW(5) (5) X X T W = λ W
然后这不就是特征值的定义式吗?所以只需要对协方差矩阵 WTW W T W 进行特征值分解,并将求得的特征值排序 λ1λ2λd λ 1 ≥ λ 2 ≥ ⋯ ≥ λ d ,再取前 d d ′ 个特征值对应的向量构成 W=(w1,w2,,wd) W ∗ = ( w 1 , w 2 , … , w d ′ ) ,这就是PCA的解。

最大可分性推导

  下面再来看一下最大可分性怎么推导出PCA。样本点在超平面上投影尽可能分开等价于投影后样本点的方差最大化。投影后样本点的方差为 mi=1WTx(i)x(i)TW ∑ i = 1 m W T x ( i ) x ( i ) T W ,于是优化目标可以写为

argmaxWtr(WTXXTW), s.t. WTW=I(6) (6) arg ⁡ max W t r ( W T X X T W ) ,   s . t .   W T W = I
不难发现,这个优化目标和(3)是等价的,所以也能得到(5)的结论。下面就不赘述了。

3. PCA算法流程

  先梳理一下PCA的算法流程,然后最后再来讨论一下PCA的性质。
  假设原始数据 X={x(1),x(2),,x(m)} X = { x ( 1 ) , x ( 2 ) , … , x ( m ) } x(i) x ( i ) d d 维向量,我们现在希望将每个样本x(i) d d 维降到d维( d<d d ′ < d )。
输入: d d 维数据集X={x(1),x(2),,x(m)},要降到的维数 d d ′
输出:降维后的数据集 X X ′
Step1: 对所有样本进行中心化

x(i)=x(i)1mj=1mx(j) x ( i ) = x ( i ) − 1 m ∑ j = 1 m x ( j )
Step2: 计算样本的协方差矩阵 XTX X T X (严格来说协方差矩阵还有一个 1m1 1 m − 1 的常数项,不过不影响结果,可以省去);
Step3: 对协方差矩阵 XTX X T X 进行特征值分解/奇异值分解,得到特征值 λi λ i 及其对应的特征向量 wi w i i=1,2,,d i = 1 , 2 , … , d
Step4: 取前 d d ′ 大个特征值对应的特征向量 (w1,w2,,wd) ( w 1 , w 2 , … , w d ′ ) ,标准化后构成特征向量矩阵 W W
Step5: 根据特征向量矩阵W计算出原始数据 x(i) x ( i ) 在特征空间中的投影 z(i) z ( i )
z(i)=WTx(i) z ( i ) = W T x ( i )
从而得到原始数据在特征空间中的降维表示 X=(z(1),z(2),,z(m)) X ′ = ( z ( 1 ) , z ( 2 ) , … , z ( m ) ) 。如果需要基于 z(i) z ( i ) 来重构 x(i) x ( i ) ,可以根据这个式子来(其实就是将上一个等式都左乘一个 WT W T 的逆)
x^(i)=j=1dz(i)jwj=Wz(i) x ^ ( i ) = ∑ j = 1 d ′ z j ( i ) w j = W z ( i )

  关于低维空间维度 d d ′ 的选择,通常情况下是用户事先指定的;或对不同 d d ′ 进行交叉验证然后选择最优的;或设置一个重构阈值 t t ,然后选取使下式成立的最小d值:
di=1λidi=1λit ∑ i = 1 d ′ λ i ∑ i = 1 d λ i ≥ t

4. PCA的性质
  • PCA降维舍弃的这部分信息往往是必要的:一方面,舍弃这部分信息之后能使样本的采样密度增大,这正是降维的重要动机;另一方面,当数据受噪声影响时,最小的特征值所对应的特征向量往往和噪声有关,舍弃它们在一定程度上有去噪的效果。
  • PCA另一个重要特性是能将数据变换为元素之间彼此不想关的表示,可以消除数据中未知变化因素。所以PCA也是一种数据白化的技术。
  • z(i)=WTx(i) z ( i ) = W T x ( i ) 可知,高维空间到低维空间的函数映射是线性的,但是在许多现实任务中,可能需要非线性映射才能找到恰当的低维嵌入。这时我们可以用SVM中提到的核技巧来引入非线性。
  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
PCA(Principal Component Analysis,主成分分析)是一种基于线性代数的数据降维算法。其目的是通过将原始数据映射到新的坐标系上,使得数据在新的坐标系下的方差最大,从而找到数据的主要特征。下面是PCA的数学原理推导: 假设有样本集 $X=\{ x_1,x_2,\cdots,x_n \}$,其中每个样本 $x_i \in \mathbb{R}^d$,现在我们希望将原始数据映射到一个新的坐标系上,使得数据在新的坐标系下的方差最大。设新的坐标系为 $\{ w_1,w_2,\cdots,w_d \}$,其中每个 $w_i$ 是一个长度为 $d$ 的向量。 首先,我们需要对原始数据进行中心化,即将每个样本减去均值,得到新的样本集 $X'=\{ x_1',x_2',\cdots,x_n' \}$,其中 $x_i' = x_i - \frac{1}{n}\sum_{j=1}^n x_j$。 接下来,我们需要找到一个向量 $w_1$,使得将样本 $X'$ 投影到 $w_1$ 上的方差最大。具体来说,对于每个样本 $x_i'$,它在 $w_1$ 上的投影为 $x_i' \cdot w_1$,则样本集 $X'$ 在 $w_1$ 方向上的方差为: $$ \begin{aligned} \mathrm{Var}(X'w_1) &= \frac{1}{n} \sum_{i=1}^n (x_i' \cdot w_1 - \bar{x}' \cdot w_1)^2 \\ &= \frac{1}{n} \sum_{i=1}^n [(x_i' - \bar{x}') \cdot w_1]^2 \\ &= \frac{1}{n} \sum_{i=1}^n (w_1^T(x_i' - \bar{x}'))^2 \\ &= \frac{1}{n} \sum_{i=1}^n w_1^T(x_i' - \bar{x}')(x_i' - \bar{x}')^Tw_1 \\ &= w_1^T\left(\frac{1}{n} \sum_{i=1}^n (x_i' - \bar{x}')(x_i' - \bar{x}')^T\right)w_1 \\ &= w_1^TSw_1 \end{aligned} $$ 其中,$\bar{x}'$ 是样本集 $X'$ 的均值向量,$S$ 是样本集 $X'$ 的协方差矩阵,$w_1$ 是一个单位向量。根据上述式子,我们可以看出,$w_1$ 的方向与样本集 $X'$ 的协方差矩阵 $S$ 的主特征向量相同,因为 $w_1$ 的方向确定后,$\mathrm{Var}(X'w_1)$ 就只与 $S$ 的特征值有关,而特征值最大的方向就是协方差矩阵 $S$ 的主特征向量。 因此,我们可以通过求解样本集 $X'$ 的协方差矩阵 $S$ 的特征值和特征向量,找到 $w_1$ 的方向。具体来说,设 $S$ 的特征值和特征向量分别为 $\lambda_1,\lambda_2,\cdots,\lambda_d$ 和 $v_1,v_2,\cdots,v_d$,则 $w_1$ 的方向为 $v_1$。 接着,我们需要找到下一个向量 $w_2$,使得它与 $w_1$ 垂直,并且将样本集 $X'$ 投影到 $w_1$ 和 $w_2$ 构成的平面上的方差最大。具体来说,对于每个样本 $x_i'$,它在 $w_1$ 和 $w_2$ 构成的平面上的投影为 $(x_i' \cdot w_1, x_i' \cdot w_2)$,则样本集 $X'$ 在 $w_1$ 和 $w_2$ 构成的平面上的方差为: $$ \begin{aligned} \mathrm{Var}(X'w_1w_2) &= \frac{1}{n} \sum_{i=1}^n (x_i' \cdot w_1 - \bar{x}' \cdot w_1)^2 + (x_i' \cdot w_2 - \bar{x}' \cdot w_2)^2 \\ &= \frac{1}{n} \sum_{i=1}^n [(x_i' - \bar{x}') \cdot w_1]^2 + [(x_i' - \bar{x}') \cdot w_2]^2 \\ &= \frac{1}{n} \sum_{i=1}^n (w_1^T(x_i' - \bar{x}'))^2 + (w_2^T(x_i' - \bar{x}'))^2 \\ &= w_1^T\left(\frac{1}{n} \sum_{i=1}^n (x_i' - \bar{x}')(x_i' - \bar{x}')^T\right)w_1 + w_2^T\left(\frac{1}{n} \sum_{i=1}^n (x_i' - \bar{x}')(x_i' - \bar{x}')^T\right)w_2 \\ &= w_1^TSw_1 + w_2^TSw_2 \end{aligned} $$ 由于 $w_1$ 已经确定,因此我们只需要找到一个与 $w_1$ 垂直的向量 $w_2$,使得 $\mathrm{Var}(X'w_1w_2)$ 最大。我们可以通过最大化 $w_2^TSw_2$ 来实现这一点。 具体来说,我们可以定义一个投影矩阵 $P = \begin{bmatrix} w_1 & w_2 \end{bmatrix}$,将样本集 $X'$ 投影到 $w_1$ 和 $w_2$ 构成的平面上,得到新的样本集 $Y = \{ y_1,y_2,\cdots,y_n \}$,其中 $y_i = P^Tx_i'$。则样本集 $Y$ 的协方差矩阵为 $S_Y = \frac{1}{n}YY^T$。我们需要找到一个单位向量 $w_2$,使得 $w_2^TS_Yw_2$ 最大。根据拉格朗日乘数法,可以得到: $$ S_Yw_2 = \lambda w_2 $$ 其中,$\lambda$ 是 $S_Y$ 的特征值。因此,$w_2$ 的方向与 $S_Y$ 的主特征向量相同。由于 $S_Y$ 是对称矩阵,$w_1$ 和 $w_2$ 的方向就是 $S_Y$ 的前两个主特征向量。以此类推,我们可以找到 $d$ 个主成分,从而将原始数据映射到 $d$ 维空间中。 总结一下,PCA 的步骤如下: 1. 对原始数据进行中心化,得到新的样本集 $X'$。 2. 求解样本集 $X'$ 的协方差矩阵 $S$ 的特征值和特征向量。 3. 选择前 $d$ 个特征向量,构成新的坐标系 $\{ w_1,w_2,\cdots,w_d \}$。 4. 将样本集 $X'$ 投影到新的坐标系上,得到新的样本集 $Y$。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Maples丶丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值