PCA降维算法的总结(谨慎观看)

PCA主成分分析降维算法——无监督

1、概述

一般我们获取的数据维度很高,可以使用PCA(Principal Components Analysis)算法降低维度,去除噪声的同时也减少了计算量,是一种数据压缩的算法。

2、目标

降低数据维度,基于方差提取出最有价值的信息;从数学的角度来看,PCA的目标是通过某种线性投影,将高维的数据映射到低维的空间中,即把原先的n个特征用数目更少的m个特征取代,并且,我们希望在所投影的维度上数据的方差最大,尽量使新的m个特征互不相关。

3、降维后数据的意义

在经过一系列的矩阵变化完成降维后,其中具体某一维所表达的含义可能变得不清楚,但并不影响最终结果,因为像分类和预测这样的任务,我们想得到的是一个结果,并不需要对中间的一个过程进行解释。

4、解决问题

1、降低维度 2、在压缩数据的同时让信息损失最小化 3、维度少的数据通过可视化更容易理解 4、保护隐私

5、数学术语:

  1. 方差(Variance)——度量一组数据分散的程度。方差是各个样本与样本均值的差的平方和的均值。
  2. 协方差(Covariance)——度量两个变量的变动的同步程度,也就是度量两个变量线性相关性程度。如果两个变量的协方差为0,则统计学上认为二者线性无关。如果协方差大于0表示正相关,小于0表示负相关。
  3. 协方差矩阵(Covariance matrix)——由数据集中两两变量的协方差组成。
  4. 特征向量——存在非零矩阵 A 和标量λ,若有向量 x 且满足Ax=λx, 那么 x 就为特征向量、λ为特征值,一个特征值对应一个特征向量。
  5. PCA思想——寻找协方差矩阵的特征向量和特征值就等价于拟合一条能保留最大方差的直线或主成分。因为特征向量追踪到了主成分的方向,而最大方差和协方差的轴线表明了数据最容易改变的方向。

6、PCA降维过程一般可分为四个步骤:

  • 对样本进行中心化操作,方便方差的计算
  • 计算样本的协方差矩阵
  • 对协方差矩阵做特征值分解
  • 取最大的m个特征值对应的特征向量,构造投影矩阵W(变换矩阵)

7、算法流程

首先,我们需要对数据进行标准化,可以使用sklearn中的StandardScaler类,其是一个用来讲数据进行归一化和标准化类(参考)

PCA有多种推导方式,最直观的方式是最大方差和最小平方误差。

这里只说一下最大方差理论(最小平方误差理论——推导参考这里

信号处理中认为信号具有较大的方差,噪声有较小的方差,信噪比就是信号与噪声的方差比,越大越好。

一个直观的想法是,我们从m维的feature space投影到m−1维的feature subspace时,希望使得其方差能最大化的得到保留(也就是数据之间的差异性保留越多越好)——此处参考向量的表示和基变换,基是正交的,线性无关,直观上可以说是垂直的;基变换简单来说就是数据与一个基做内积运算,结果作为第一个新的坐标分量,然后与第二个基做内积运算,结果作为第二个新的坐标分量。

设投影到新的单位向量u中,那么投影点和原点的距离是xTu 。我们的目标是求最佳的u,使得投影后的样本点方差最大(希望投影后的投影尽可能地分散)。可以这样理解,比如原始数据为150行4列,即150个样本,每个样本是4维(特征),我们想要将其降成2维(特征),即变为150行2列的数据,只需要在中间构造一个4行2列的矩阵即可

我们的目的是寻找一个一维基,使得所有数据变换为这个基上的坐标表示后,方差值最大。

如果单纯只选择方差最大的方向,那么后续方向应该会和方差最大的方向接近重合。比如说你想把10维的映射成2维的,且找到了一个x轴,其是方差最大的,那么方差第二大的轴就一定与x轴非常接近(可以想成都快跟x轴重合了),但是如果所有轴都接近重合了,那么所有特征之间就都是(线性)相关的,不利于建模。

为了让两个字段(x轴y轴之类的意思)尽可能表示更多的原始信息,我们是希望他们之间是不相关的,所以用两个字段的协方差表示其相关性。当协方差为0时,表示两个字段完全独立。为了让协方差为0,选择第二个基时只能在与第一个基正交的方向上选择。因此最终选择的两个方向一定是正交的。

那么我们的优化目的就是将一组N维向量降为K维(0<K<N),目标是选择K个单位正交基,使原始数据变换到这组基上后,各字段两两间协方差为0,字段的方差尽可能大。协方差矩阵如下图
在这里插入图片描述

有一点要注意,在数据预处理时,我们已经对数据进行了归一化和标准化,这使得新的X数据集均值为0,方差为1了,此时协方差公式中每个变量不用在减去各自的均值。(自己搜吧,我真的不会用markdown写公式 = =)

可以观察到协方差矩阵主对角线上的两个元素分别是两个字段(特征或维度)的方差,而其它元素是a和b的协方差。所以我们要做的就是让非对角线上的元素(即协方差)都为0。因为协方差矩阵是实对称阵,n行n列的实对称阵一定可以找n个单位正交特征向量,必然可以对角化,且对角阵主对角线上元素为特征值。

协方差矩阵对角化,如下图
在这里插入图片描述

因此,我们只需要对协方差矩阵进行特征值分解,得到的前 k 大特征值对应的特征向量就是最佳的 k 维新特征,而且这 k 维新特征是正交的。

总结一下寻找PCA中的投影矩阵(变换矩阵)的思路——先求协方差矩阵,再算其特征值和特征向量,再把特征值比较大的特征向量提取出来,比如你是100维数据想降到10维,你就取前十个大的特征值对应的特征向量,构造一个矩阵,在乘上原始数据矩阵,就得到新的降维后的数据矩阵

8、应用(copy=_=!)

  1. PCA 将 n 个特征降维到 k 个,可以用来进行数据压缩,如果 100 维的向量最后可以用 10 维来表示,那么压缩率为 90%。同样图像处理领域的 KL 变换使用 PCA 做图像压缩。但 PCA 要保证降维后,还要保证数据的特性损失最小。

  2. 可用于数据预处理,减少feature space的大小,从而减少运算,减少overfitting。

  3. 可用于noise reduction algorithm。

  4. Match/define better calculation

    例如在人脸相似度匹配中,一个图像中属于人脸的并不是主要部分,而大部分都是噪声,因此我们可以使用PCA降维,使得某些维度能够衡量脸的形状大小等等。
    在计算相似度时,将两个图像通过PCA投影到子空间,再通过距离度量。

9、总结(copy=_=!)

  1. PCA 的思想是将 n 维向量(特征)映射到 k 维上(0<k<n),这 k 维是全新的正交特征。这 k 维特征称为主元,是重新构造出来的 k 维特征,他们能从方差的角度最大化的保留数据存在的差异,并减少维度。
  2. PCA 技术的一个很大的优点是,它是完全无参数限制的。在 PCA 的计算过程中完全不 需要人为的设定参数或是根据任何经验模型对计算进行干预,最后的结果只与数据相关, 与用户是独立的。 但是,这一点同时也可以看作是缺点。如果用户对观测对象有一定的先验知识,掌握了 数据的一些特征,却无法通过参数化等方法对处理过程进行干预,可能会得不到预期的 效果,效率也不高。
  3. 有时数据的分布并不是满足高斯分布。如图表 5 所示,在非高斯分布的情况下,PCA 方法得出的主元可能并不是最优的。在寻找主元时不能将方差作为衡量重要性的标准。

参考文章链接:https://blog.csdn.net/crazy_scott/article/details/90581508

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值