ML Note 3.4 - PCA

Principal components analysis 尝试寻找 n n n 维原空间的一个 M M M 维子空间,使样本集在其上的投影保留了尽量多的信息。在 PCA 之前,我们首先需要对数据集归一
x i : = x i − x ˉ x_i := x_i - \bar x xi:=xixˉ

使用设计矩阵的定义 X = [ x 1 , x 2 , … , x m ] T X = [x_1, x_2,\dots,x_m]^T X=[x1,x2,,xm]T 我们可以完成从原空间到子空间的映射
Y = X P Y = XP Y=XP

其中 P = [ u 1 , u 2 , … , u M ] P = [u_1, u_2, \dots, u_M] P=[u1,u2,,uM] 是由一组单位正交向量构成的变换矩阵。对于保留尽量多的原始信息这一目标,存在着下面两种理解

  1. Y Y Y 的样本方差尽可能大
  2. Y Y Y 恢复到原空间后偏差尽可能小

下面将会证明这两种理解是等价的。

最大方差思想

假设 M = 1 M = 1 M=1 则算法只需找到一个向量 u u u 满足
max ⁡ u ∣ ∣ X u ∣ ∣ 2 / m s . t . u T u = 1 \begin{array}{rl} \max\limits_u & ||Xu||^2 / m\\ s.t. & u^Tu = 1 \end{array} umaxs.t.Xu2/muTu=1

设协方差矩阵
Σ = 1 m X T X \Sigma = \frac{1}{m} X^TX Σ=m1XTX

则优化目标可以化为 u T Σ u u^T\Sigma u uTΣu 。应用拉格朗日乘数法可以得到
∂ ∂ u ( u T Σ u + λ ( u T u − 1 ) ) = Σ u + λ u = 0 \frac{\partial}{\partial u} (u^T\Sigma u + \lambda(u^Tu - 1)) = \Sigma u + \lambda u = 0 u(uTΣu+λ(uTu1))=Σu+λu=0

因此 u u u λ \lambda λ 分别是 Σ \Sigma Σ 的特征向量和对应特征值。重新考察目标函数
u T Σ u = λ u T u = λ u^T\Sigma u = \lambda u^Tu = \lambda uTΣu=λuTu=λ

也就是说,样本在特征向量 u u u 方向上的投影,所构成的样本集的方差即为其特征值。因此 u u u 应该是 Σ \Sigma Σ 的最大特征值对应的特征向量,称为 first principal components 。一般地对于 M ≠ 1 M \ne 1 M=1 的情况,可以循环地执行以下步骤

  1. 选取原空间中的第一主成分 u u u
  2. 取原空间对于向量 u u u 的补空间作为下一次循环的原空间

最小均方误差思想

假设存在原空间的某个坐标系 [ u 1 , u 2 , … , u n ] [u_1, u_2, \dots, u_n] [u1,u2,,un] ,取其中前 M M M 个坐标轴 [ u 1 , u 2 , … , u M ] [u_1, u_2, \dots, u_M] [u1,u2,,uM] 构成子空间坐标变换矩阵 P P P 。不妨设某个样本 x x x 在这样的坐标系下具有坐标 ( x 1 , x 2 , … , x n ) (x_1, x_2, \dots, x_n) (x1,x2,,xn) ,则容易证明其对应的 y = ( x 1 , x 2 , … , x M ) y = (x_1, x_2, \dots, x_M) y=(x1,x2,,xM)

现在我们希望找到一种方法使 y y y 恢复到原空间,并与 x x x 尽可能一致。但是由于缺少 x M + 1 , x M + 2 , … , x n x_{M + 1}, x_{M + 2}, \dots, x_n xM+1,xM+2,,xn 的信息,我们只能用其均值 0 0 0 来进行估计。也就是说重构得到的向量
x ~ = ( y 1 , y 2 , … , y M , 0 , … , 0 ) \tilde x = (y_1, y_2, \dots, y_M, 0, \dots, 0) x~=(y1,y2,,yM,0,,0)

这时就会引入重构误差
J = ∣ ∣ x − x ~ ∣ ∣ 2 = ∑ i = M + 1 n x i 2 = ∑ i = M + 1 n u i T x x T u i J = ||x - \tilde x||^2 = \sum\limits_{i = M + 1}^n x_i^2 = \sum\limits_{i = M + 1}^n u_i^Txx^Tu_i J=xx~2=i=M+1nxi2=i=M+1nuiTxxTui

对于所有样本,均方误差的定义如下
J = ∑ i = M + 1 n u i T Σ u i J = \sum\limits_{i = M + 1}^n u_i^T \Sigma u_i J=i=M+1nuiTΣui

接下来的讨论与最大方差思想类似。不同点在于这里需要选出 n − M n - M nM 个特征向量使特征值最小。这些特征向量将作为补空间的一组基,而子空间的基则是剩余的 M M M 个主成分。因此在结论上,最小均方误差思想和最大方差思想一致。

处理高维数据

模型求解可以通过 SVD 完成,但是对于高维数据 n ≫ m n \gg m nm 计算量会大一些。对于这种情况我们可以计算矩阵 X X T XX^T XXT 的特征值 λ \lambda λ 和特征向量 u u u 。这个矩阵的维数是 m m m 因此比较容易计算。算出来之后可以证明
X T X ( X T u ) = X T ⋅ λ u X^TX(X^Tu) = X^T\cdot \lambda u XTX(XTu)=XTλu

因此 X T u X^Tu XTu 即为 Σ \Sigma Σ 的特征向量,同时特征值 λ \lambda λ 并没有改变。因为1 ∣ ∣ X T u ∣ ∣ 2 = λ ||X^Tu||^2 = \lambda XTu2=λ 所以归一化可得特征向量
v = X T u λ v = \frac{X^Tu}{\sqrt{\lambda}} v=λ XTu

相关系数矩阵

如果原空间中数据的各个特征量纲不同,可以使用数据的相关系数矩阵代替原数据。但是计算相关系数时,需要保证特征的标准差非零。当且仅当某个特征的取值为常数,其标准差才会为零。因此可以将标准差为零的特征提前删除,而不会造成误差。

结果分析

F j = X u j F_j = Xu_j Fj=Xuj 表示第 j j j 个主成分的取值。不难证明
F i T F j = u i T X T X u j = { m λ j i = j 0 i ≠ j F_i^TF_j = u_i^TX^TXu_j = \begin{cases} m\lambda_j & i = j\\ 0 & i \ne j \end{cases} FiTFj=uiTXTXuj={mλj0i=ji=j

因为 X X X 经过了归一化,因此
V a r ( F j ) = λ j C o v ( F i , F j ) = 0 \begin{array}{rcl} Var(F_j) &=& \lambda_j\\ Cov(F_i, F_j) &=& 0 \end{array} Var(Fj)Cov(Fi,Fj)==λj0

贡献率

从最大方差的角度思考,我们的目标是最大化 ∑ j = 1 M V a r ( F j ) \sum_{j = 1}^M Var(F_j) j=1MVar(Fj) 。因此某个主成分对整体的贡献可以被 λ \lambda λ 所度量。定义第 j j j 主成分贡献率
c j = λ j ∑ j = 1 n λ j c_j = \frac{\lambda_j}{\sum_{j = 1}^n \lambda_j} cj=j=1nλjλj

不难看出随着 j j j 的增大,贡献率在逐渐减小,但累积贡献率 ∑ i = 1 j c i \sum_{i = 1}^j c_i i=1jci 却在增大。实际应用中,一般对累积贡献率设定某个阈值 ξ \xi ξ 来确定主成分的个数。

被提取率

对于原数据中的每个特征,其信息可能分散到多个主成分中
x = [ u 1 , u 2 , … , u n ] y x = [u_1, u_2, \dots, u_n]y x=[u1,u2,,un]y

我们同样使用方差作为信息的度量,设
V a r ( x i ) = σ i 2 = V a r ( ∑ j = 1 n ( u j ) i F j ) = ∑ j = 1 n ( u j ) i 2 λ j Var(x_i) = \sigma_i^2 = Var\left(\sum_{j = 1}^n (u_j)_iF_j\right) = \sum_{j = 1}^n (u_j)_i^2\lambda_j Var(xi)=σi2=Var(j=1n(uj)iFj)=j=1n(uj)i2λj

其中 ( u j ) i (u_j)_i (uj)i 表示主成分 u j u_j uj 的第 i i i 个元素。定义
Ω i = ∑ j = 1 M ( u j ) i 2 λ j σ i 2 \Omega_i = \sum_{j = 1}^M \frac{(u_j)_i^2\lambda_j}{\sigma_i^2} Ωi=j=1Mσi2(uj)i2λj

为特征 x i x_i xi 的被提取率。事实上相关系数
ρ ( x i , F j ) = ( u j ) i λ j σ i \rho(x_i, F_j) = \frac{(u_j)_i\sqrt{\lambda_j}}{\sigma_i} ρ(xi,Fj)=σi(uj)iλj

因此被提取率还可以被定义为
Ω i = ∑ j = 1 M ρ 2 ( x i , F j ) \Omega_i = \sum_{j = 1}^M \rho^2(x_i, F_j) Ωi=j=1Mρ2(xi,Fj)


  1. 设矩阵 A T A A^TA ATA 有特征值 λ i \lambda_i λi 和特征向量 v i v_i vi ,则 ∣ ∣ A v i ∣ ∣ 2 = ( A v i ) T A v i = v i T A T A v i = v i T ( λ i v i ) = λ i \begin{array}{rcl} ||Av_i||^2 &=& (Av_i)^TAv_i\\ &=& v_i^TA^TAv_i\\ &=& v_i^T(\lambda_iv_i)\\ &=& \lambda_i \end{array} Avi2====(Avi)TAviviTATAviviT(λivi)λi ↩︎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

LutingWang

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

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

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

打赏作者

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

抵扣说明:

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

余额充值