统计学习方法04-16 PCA

本博客主要用于本人重新复习知识点,所有参考列在文尾。如有错误,希望一起交流。

PCA在做什么?

数据存在很多特征,但很多特征之间是有冗余的,所以我们可以通过更少的主成分去总结数据。PCA并不是在挑选特征,而是由旧特征构建新特征 (寻找最佳的线性组合)。

  • 何为总结数据 ?尽可能体现数据的差异(最大方差,方差:原数据在投影线上的红点的散步,通过每个红点到数据中心的均方根距离来衡量红点的散布),尽可能好地重建原本特性的特征(最小误差,误差:原数据投影在投影线上的均方根距离)。这两者可以同时到达(勾股定理)。

协方差矩阵,对角线是方差,其他位置是两个维度的协方差,反应两个变量同向/反向变化+变化程度


基础知识

主成分分析 属于 无监督学习方法

  • 做法:利用正交变换把 由线性相关变量表示的观测数据 转换为 少数几个由线性无关变量表示的数据。通常主成分个数会比原始数据少,所以PCA属于 降维方法

  • 用处:主要用于发现数据中的基本结构,即数据变量之间的关系,是数据分析和其它机器学习方法的有力工具。

总体主成分分析:在数据总体上进行的主成分分析;
样本主成分分析:在有限样本上进行的主成分分析。


1. 总体主成分分析

PCA的基本思想

  1. 首先对给定数据进行规范化
  2. 之后对数据进行正交变换,原来由线性相关变量表示的数据,通过正交变换变成由若干个线性无关的新变量表示的数据。新变量是可能的正交变换中变量的方差的和(信息保存)最大的,方差表示在新变量上的信息大小。

PCA的直观解释

  1. 规范化后数据分布在原点附近;

  2. 主成分分析对数据进行正交变换,等价于进行坐标系旋转变换,将数据投影到新坐标系的坐标轴上,坐标轴表示主成分,数据在每一轴上的坐标值的平方表示相应变量的方差,并且满足这个坐标系实在所有可能的新坐标系中,坐标轴上的方差的和最大的。

    PCA旨在选取正交变换中方差最大的变量,作为第一主成分 ,也就是旋转变换中坐标值的平方和最大的轴。 max ⁡ ( O A ′ 2 + O B ′ 2 + O C ′ 2 ) = min ⁡ ( A A ′ 2 + B B ′ 2 + C C ′ 2 ) \max(OA'^2+OB'^2+OC'^2) = \min(AA'^2+BB'^2+CC'^2) max(OA2+OB2+OC2)=min(AA2+BB2+CC2)

总体主成分的定义

随机变量 x = ( x 1 , . . . , x m ) T x=(x_1,...,x_m)^T x=(x1,...,xm)T 到随机变量 y = ( y 1 , . . . , y m ) T y=(y_1,...,y_m)^T y=(y1,...,ym)T 的线性变换 y i = α T x = α 1 i x 1 + α 2 i x 2 + . . . + α m i x m y_i = \alpha^Tx=\alpha_{1i}x_1+\alpha_{2i}x_2+...+\alpha_{mi}x_m yi=αTx=α1ix1+α2ix2+...+αmixm. 给定一个这样的线性变换,如果它满足:

  1. 系数向量 α i T \alpha_i^T αiT 是单位向量 == α i T α i = 1 , i = 1 , . . . , m \alpha_i^T \alpha_i =1, i=1,...,m αiTαi=1,i=1,...,m.
  2. y i y_i yi y j y_j yj 互不相关 == c o v ( y i , y j ) = 0   ( i ≠ j ) cov(y_i,y_j) = 0 \ (i \not= j) cov(yi,yj)=0 (i=j).
  3. y 1 y_1 y1 x x x 所有线性变换中方差最大的;
    y 2 y_2 y2 是与 y 1 y_1 y1 不相关的x的所有线性变换中方差最大的;
    y 2 y_2 y2 是与 y 1 , y 2 , . . . , y i − 1 y_1,y_2,...,y_{i-1} y1,y2,...,yi1 都不相关的 x x x 的所有线性变换中方差最大的。

这时候分别称 y 1 , y 2 , . . , y m y_1,y_2,..,y_m y1,y2,..,ym x x x 的第一主成分、第二主成分、… 、第 m m m 主成分。


总体主成分主要性质

定理总体主成分协方差矩阵的特征值和特征向量的关系:


推论


性质


主成分的个数

两个定理为选择 k k k 个主成分提供了理论依据。

具体选择 k k k 的方法 ==> 利用方差贡献率 (通常是取k使得累计方差贡献率达到规定的百分比之上)

  • k k k 主成分 y k y_k yk 的方差贡献率: y k y_k yk 的方差与所有方差之和 的比: η = λ k ∑ i = 1 m λ i \eta = \displaystyle \frac{\lambda_k}{\sum_{i=1}^m \lambda_i} η=i=1mλiλk;
  • k k k 个主成分 y 1 , . . . , y k y_1,...,y_k y1,...,yk 的累计方差贡献率: ∑ i = 1 k η i = ∑ i = 1 k λ i ∑ i = 1 m λ i \sum_{i=1}^k \eta_i = \displaystyle \frac{\sum_{i=1}^k \lambda_i}{\sum_{i=1}^m \lambda_i} i=1kηi=i=1mλii=1kλi
    累计方差贡献率反映了主成分保留信息的比例。
  • k个主成分 y 1 , . . . , y k y_1,...,y_k y1,...,yk 对原有变量 x i x_i xi 的贡献率: v i = ρ 2 ( x i , ( y 1 , . . . , y k ) ) = ∑ j = 1 k ρ 2 ( x i , y j ) = ∑ j = 1 k λ j α i j 2 σ i i v_i = \rho^2(x_i, (y_1,...,y_k)) = \sum_{j=1}^k \rho^2(x_i, y_j) = \sum_{j=1}^k \frac{\lambda_j \alpha_{ij}^2}{\sigma_{ii}} vi=ρ2(xi,(y1,...,yk))=j=1kρ2(xi,yj)=j=1kσiiλjαij2
    反映了对某个原有变量 x i x_i xi 保留信息的比例。

规范化变量的总体主成分

目的:为了消除量纲对主成分产生的不合理影响,需要对各个随机变量实施规范化,使其均值为 0,方差为 1。

公式:设 x = ( x 1 , . . . , x m ) T x=(x_1,...,x_m)^T x=(x1,...,xm)T 为 m 维随机变量, x i x_i xi 为第i个随机变量,则其规范化随机变量为 x i ∗ = x i − E ( x i ) v a r ( x i ) , i = 1 , . . . , m x_i^* = \displaystyle \frac{x_i-\mathbb{E}(x_i)}{\sqrt{var(x_i)}}, i = 1,...,m xi=var(xi) xiE(xi),i=1,...,m.

注意:规范化随机变量的协方差矩阵就是相关矩阵 R R R,所以主成分分析通常在规范化随机变量的协方差矩阵 (相关矩阵) 上进行。

规范化变量的总体主成分性质:

  1. 规范化变量主成分的协方差矩阵 Λ ∗ = d i a g ( λ 1 ∗ , λ 2 ∗ , . . . , λ m ∗ ) , λ 1 ∗ ≥ λ 2 ∗ ≥ . . . ≥ λ m ∗ ≥ 0 \Lambda^* = diag(\lambda_1^*,\lambda_2^*,...,\lambda_m^*), \lambda_1^* \ge \lambda_2^* \ge ... \ge \lambda_m^* \ge 0 Λ=diag(λ1,λ2,...,λm),λ1λ2...λm0 R R R 的特征值;
  2. 协方差矩阵的特征值之和为 m m m;
  3. 规范化随机变量 x i ∗ x_i^* xi 与主成分 y k ∗ y_k^* yk 的相关系数(因子负荷量) 为 ρ ( y k ∗ , x i ∗ ) = λ k ∗ e i k ∗ ,    k , i = 1 , 2 , . . . , m \rho(y_k^*,x_i^*) = \sqrt{\lambda_k^*}e_{ik}^*, \ \ k,i =1,2,...,m ρ(yk,xi)=λk eik,  k,i=1,2,...,m,其中 e k ∗ = ( e 1 k ∗ , e 2 k ∗ , . . . , e m k ∗ ) T e_k^*=(e_{1k}^*,e_{2k}^*,...,e_{mk}^*)^T ek=(e1k,e2k,...,emk)T R R R 对应于特征值 λ k ∗ \lambda_k^* λk 的单位特征向量。
  4. x i ∗ x_i^* xi 与主成分 y k ∗ y_k^* yk 的相关系数的平方和为1: ∑ i = 1 m ρ 2 ( y k ∗ , x i ∗ ) = ∑ i = 1 m λ k ∗ e i k ∗ 2 = 1 \sum_{i=1}^m \rho^2(y_k^*,x_{i}^*) = \sum_{i=1}^m \lambda_k^*e_{ik}^{*2} =1 i=1mρ2(yk,xi)=i=1mλkeik2=1

2. 样本主成分分析

观测数据以及线性变换后的相关信息


样本主成分分析的定义与性质


传统的主成分分析 进行步骤

在这里插入图片描述
在这里插入图片描述
可以将原变量和主成分的因子负荷量在平面坐标中表示:



常用的主成分分析 进行步骤


3. 优缺点

缺点:

  • 它可以很好的解除线性相关,但是对于高阶相关性就没有办法了,对于存在高阶相关性的数据,可以考虑Kernel PCA,通过Kernel函数将非线性相关转为线性相关。
  • PCA假设数据各主特征是分布在正交方向上,如果在非正交方向上存在几个方差较大的方向,PCA的效果就大打折扣了。

PCA是一种无参数技术,也就是说面对同样的数据,如果不考虑清洗,谁来做结果都一样,没有主观参数的介入。所以PCA便于通用实现,但是本身无法个性化的优化。


应用

  1. 用PCA进行降维
    降维后可以接一个逻辑回归,实现分类任务(人脸识别:参考
  2. 用PCA做数据可视化
    将高维数据降低到2维或是3维,放到坐标系中自然就可视了。
  3. 用PCA做图像压缩

Python 实现

Sklearn库

补充:sklearn 数据预处理中 fit(), transform() 与 fit_transform() 的区别

  • fit():简单来说,就是求得训练集X的均值啊,方差啊,最大值啊,最小值啊这些训练集X固有的属性。可以理解为一个训练过程。
  • transform():在Fit的基础上,进行标准化,降维,归一化等操作(看具体用的是哪个工具,如PCA,StandardScaler等)。
  • fit_transform()fit_transformfittransform 的组合,既包括了训练又包含了转换。
  • transform()fit_transform() 功能:对数据进行某种统一处理(比如标准化~N(0,1),将数据缩放(映射)到某个固定区间,归一化,正则化等).
  1. fit_transform(trainData) 对部分数据先拟合 fit,找到该部分数据的整体指标,如均值、方差、最大值最小值等等(根据具体转换的目的),然后对该 trainData 进行转换 transform,从而实现数据的标准化、归一化等等。
  2. 根据对之前部分 trainData 进行 fit 的整体指标,对剩余的数据(testData)使用同样的均值、方差、最大最小值等指标进行转换transform(testData),从而保证 train、test 处理方式相同。

所以,一般都是这么用:

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
sc.fit_tranform(X_train)
sc.tranform(X_test)

注意:

  • 必须先用 fit_transform(trainData),之后再 transform(testData)
  • 如果直接 transform(testData),程序会报错
  • 如果 fit_transfrom(trainData) 后,使用 fit_transform(testData),虽然也能归一化,但是两个结果不是在同一个“标准”下的,具有明显差异。(一定要避免这种情况)


资源

人脸识别常用数据集大全:https://zhuanlan.zhihu.com/p/31378836


参考

  1. 李航,统计机器学习方法(第二版),2019:297 - 320.
  2. 通俗理解:https://www.zhihu.com/question/41120789/answer/474222214
  3. 应用:https://blog.csdn.net/ctyqy2015301200079/article/details/85325125
  4. 优缺点:https://blog.csdn.net/ws_developer/article/details/81634059
  5. sklearn:https://zhuanlan.zhihu.com/p/42297868
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值