主成分分析(Principal Components Analysis)

主成分分析PCA(Principal Component Analysis),作用是:

  1. 聚类 Clustering:把复杂的多维数据点,简化成少量数据点,易于分簇
  2. 降维:降低高维数据,简化计算,达到数据降维,压缩,降噪的目的

PCA 的目的就是找到一个低维映射空间,使得数据映射后方差最大。

理论实现:

首先对样本空间为 d d d 维全部的数据中心化,使得均值为 0,即将所有的样本与样本均值相减获得新的样本:

x i = x i − μ \mathbf { x } _ { i } = \mathbf { x } _ { i } - \mu xi=xiμ

也就是说转换后:

1 N ∑ i = 1 N x i = 0 d \frac { 1 } { N } \sum _ { i = 1 } ^ { N } \mathbf { x } _ { i } = 0_d N1i=1Nxi=0d

知识补充:

求向量 u 在向量 v 上的投影:
在这里插入图片描述
那么根据上图可以列出以下公式
u ′ = d ∣ v ∣ v d = ∣ u ∣ cos ⁡ θ cos ⁡ θ = u T ⋅ v ∣ u ∣ ∣ v ∣ \begin{aligned} u ^ { \prime } & = \frac { d } { | v | } v \\ d & = | u | \cos \theta \\ \cos \theta & = \frac { u^T \cdot v } { | u | | v | } \end{aligned} udcosθ=vdv=ucosθ=uvuTv
所以可以解出向量 u u u 在向量 v v v 上的投影 u ′ u^\prime u 为:
u ′ = u T ⋅ v ∣ v ∣ 2 v u^\prime = \frac { u ^ T \cdot v } { | v | ^ { 2 } } v u=v2uTvv
那么将向量 v v v 所在直线视为一维空间,那么向量 u u u 映射在该维度的表示为
u v = u T ⋅ v ∣ v ∣ = v T ⋅ u ∣ v ∣ u^v = \frac { u ^ T \cdot v } { | v | } = \frac { v ^ T \cdot u } { | v | } uv=vuTv=vvTu
也就是说映射后的长度(有方向)成为向量 u u u 映射在该维度的表示。

那么现在求取映射后空间,先考虑映射到一维空间,也就是说向一个向量做投影,假如现在向向量 u 1 u _ { 1 } u1 做投影。

那么由于一开始的中心化操作,使得映射后均值仍然为零:

1 n ∑ i = 1 n u 1 T ∣ u 1 ∣ x i = u 1 T ∣ u 1 ∣ ∑ i = 1 n 1 n x i = 0 \frac { 1 } { n } \sum _ { i = 1 } ^ { n } \frac { u _ { 1 } ^ { T } } { | u _ { 1 } | } \mathbf x _ { i } = \frac { u _ { 1 } ^ { T } } { | u _ { 1 } | } \sum _ { i = 1 } ^ { n } \frac { 1 } { n } \mathbf x _ { i } = 0 n1i=1nu1u1Txi=u1u1Ti=1nn1xi=0

那么映射后的方差有:

1 n ∑ i = 1 n ( u 1 T ∣ u 1 ∣ x i − 0 ) 2 = 1 n ∑ i = 1 n u 1 T ∣ u 1 ∣ x i x i T u 1 ∣ u 1 ∣ = u 1 T ∣ u 1 ∣ 1 n ∑ i = 1 n x i x i T u 1 ∣ u 1 ∣ = u 1 T ∣ u 1 ∣ S u 1 ∣ u 1 ∣ \frac { 1 } { n } \sum _ { i = 1 } ^ { n } \left( \frac { u _ { 1 } ^ { T } } { | u _ { 1 } | } \mathbf x _ { i } - 0\right) ^ { 2 } = \frac { 1 } { n } \sum _ { i = 1 } ^ { n } \frac { u _ { 1 } ^ { T } } { | u _ { 1 } | } \mathbf x _ { i } \mathbf x _ { i } ^ { T } \frac { u _ { 1 } } { | u _ { 1 } | } = \frac { u _ { 1 } ^ { T } } { | u _ { 1 } | } \frac { 1 } { n } \sum _ { i = 1 } ^ { n } \mathbf x _ { i } \mathbf x _ { i } ^ { T } \frac { u _ { 1 } } { | u _ { 1 } | } =\frac { u _ { 1 } ^ { T } } { | u _ { 1 } | }S \frac { u _ { 1 } } { | u _ { 1 } | } n1i=1n(u1u1Txi0)2=n1i=1nu1u1TxixiTu1u1=u1u1Tn1i=1nxixiTu1u1=u1u1TSu1u1

其中 S S S 为数据集的协方差矩阵:

S = 1 n ∑ i , j = 1 n x i T ⋅ x j S = \frac { 1 } { n } \sum _ { i , j = 1 } ^ { n } \mathbf x _ { i } ^ { T } \cdot \mathbf x _ { j } S=n1i,j=1nxiTxj

现在想要映射在该一维空间后数据的方差最大,那么该优化问题为:

max ⁡ u 1 u 1 T ⋅ S ⋅ u 1  s.t. ∥ u 1 ∥ 2 2 = 1 \begin{aligned} \max _ { u _ { 1 } } \quad & u _ { 1 } ^ { T } \cdot S \cdot u _ { 1 } \\ \text { s.t.} \quad & \left\| u _ { 1 } \right\| _ { 2 } ^ { 2 } = 1 \end{aligned} u1max s.t.u1TSu1u122=1

其中为了方便,将映射向量的长度定为一作为约束条件。为了去掉这一约束条件,使用拉格朗日乘数法转换该最优化问题:

max ⁡ u 1 { u 1 T ⋅ S ⋅ u 1 + λ ( 1 − ∥ u 1 ∥ 2 2 ) } \max _ { u _ { 1 } } \left\{ u _ { 1 } ^ { T } \cdot S \cdot u _ { 1 } + \lambda \left( 1 - \left\| u _ { 1 } \right\| _ { 2 } ^ { 2 } \right) \right\} u1max{u1TSu1+λ(1u122)}

对于凸优化问题,在最优点出导数为零,所以最优解的必要条件为:

2 u 1 ⋅ S + λ ( − 2 u 1 ) = 0 2 u _ { 1 } \cdot S + \lambda \left( - 2 u _ { 1 } \right) = 0 2u1S+λ(2u1)=0

也就是说:

S u 1 = λ u 1 S u _ { 1 } = \lambda u _ { 1 } Su1=λu1

可以看出 u 1 u _ { 1 } u1 是协方差矩阵 S S S 的一个特征向量,那么现在代入到原最优化问题:

max ⁡ u 1 u 1 T ⋅ λ ⋅ u 1  s.t. ∥ u 1 ∥ 2 2 = 1 \begin{aligned} \max _ { u _ { 1 } } \quad & u _ { 1 } ^ { T } \cdot \lambda \cdot u _ { 1 } \\ \text { s.t.} \quad & \left\| u _ { 1 } \right\| _ { 2 } ^ { 2 } = 1 \end{aligned} u1max s.t.u1Tλu1u122=1

可以进一步转换为:

max ⁡ u 1 λ  s.t. ∥ u 1 ∥ 2 2 = 1 \begin{aligned} \max _ { u _ { 1 } } \quad & \lambda \\ \text { s.t.} \quad & \left\| u _ { 1 } \right\| _ { 2 } ^ { 2 } = 1 \end{aligned} u1max s.t.λu122=1

也就是说在约束条件下希望该特征值最大。那么推广到多维空间映射,仍然适用。那么最佳的多维空间则由 Top d ′ d^{\prime} d 特征值(最大的 d ′ d^{\prime} d 个特征值)所对应的特征向量构成。

那么PCA的具体实现流程 :

 1. let  x ‾ = 1 N ∑ n = 1 N x n ,  and let  x n ← x n − x ‾ , X T = [ x 1 , ⋯   , x N ]  2. calculate  d ~  top eigenvectors  w 1 , w 2 , … , w d ~  of  X T X  3. return feature transform  Φ ( x ) = W ( x − x ‾ ) \begin{aligned} & \text { 1. let }\overline { \mathbf { x } } = \frac { 1 } { N } \sum _ { n = 1 } ^ { N } \mathbf { x } _ { n } , \text { and let } \mathbf { x } _ { n } \leftarrow \mathbf { x } _ { n } - \overline { \mathbf { x } } , X^T = [\mathbf x_1,\cdots,\mathbf x_N] \\ & \text { 2. calculate } \tilde { d } \text { top eigenvectors } \mathbf { w } _ { 1 } , \mathbf { w } _ { 2 } , \ldots , \mathbf { w } _ { \tilde { d } } \text { of } \mathbf { X } ^ { T } \mathbf { X } \\ & \text { 3. return feature transform } \mathbf { \Phi } ( \mathbf { x } ) = \mathbf { W } ( \mathbf { x } - \overline { \mathbf { x } } ) \end{aligned}  1. let x=N1n=1Nxn, and let xnxnx,XT=[x1,,xN] 2. calculate d~ top eigenvectors w1,w2,,wd~ of XTX 3. return feature transform Φ(x)=W(xx)

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

FlameAlpha

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

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

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

打赏作者

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

抵扣说明:

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

余额充值