主成分分析(PCA)
假设我们一组二维数据点如图(1)所示,我们可以看出这两个维度具有很高的相似性,也就是说两个维度之间具有很高的冗余性,如果我们只想保留一个维度,那么该怎么选择才能尽可能多的保留原始数据的信息呢。我们先对数据进行归一化处理,得到的数据点如图(2)所示。然后将数据点映射到另一个新的空间,如图(3)所示,那么为了尽可能多的保留原始信息,我们需要将数据向x轴做一个投影。然后再将得到的一为向量投影回原始空间,得到了图(4),此时所有的数据点都在一条直线上,所以此时我们使用一维向量就可以表示这些数据点,也就是完成了降维。
图(1)
图(2)
图(3)
图(4)
在图(3)中,我们为什么会选择向x轴做投影呢,因为向x轴投影之后,数据点看起来和原来最数据点分布最相近,同时向x轴投影也使得数据点最分散,即投影后的数据的方差最大。
也就是说向投影之后方差最大的维度进行投影,投影后的数据能最大程度上的保留原始数据的信息。
图(5)
如图(5)所示,原本信号是一个一维向量,但是由于高斯噪声的存在,信号变成了一个二维向量,同时两个维度之间有着很高的冗余度。在这个二维向量中,信号占据了原始信息很大的一部分,而噪声只代表原始信息很小的一部分。又因为信号是高斯噪声,因此在噪声方向,数据的方差较小,而在信号方向,数据方差比较大。为了在降维的同时尽可能保留原始信息,所以我们应该向信号方向做投影,也就是选择向方差最大的方向做投影。
- PCA算法的思想
PCA算法的思想减少冗余和剔除噪声,将原始n维特征映射到k维空间上,其中k<n,其中k是指一个全新的正交特征。为了在映射之后可以保留原始数据尽可能多的信息,我们希望原始数据映射到k维空间中,使其方差尽可能的大。
- PCA算法的推导
假设原始数据为 的归一化矩阵 。其中 为样本的维度。 为样本的个数。设定投影变换的新坐标系为 的矩阵 。其中 均为标准正交基。我们就是要找到 个向量,使 投影到由 这 个向量构成的空间中得到的数据方差最大。
假设我们选择一个向量 。将 向进行投影,并计算方差。
设 是 的 个样本,每个样本的投影向量如下:
由于 是单位向量。所以上式等于
我们接下来就可以计算所有数据点的方差
我们要在 的条件下使方差 最大。通过拉格朗日乘法可以获得如下函数
求导可得
带入到方差 可得
也就是说当向量 是矩阵 的特征向量的时候, 向向量 投影可以获得最大的方差,方差的大小为特征值 。
根据上述原理,我们需要的 个向量就是前 个特征值所对应的特征向量。也就使说转换矩阵 由前 个特征值所对应的特征向量组成。
- PCA算法流程
(1)对原始数据 进行归一化处理
(2)求出 的协方差矩阵
(3)对 进行特征值分解
(4)取前 个特征值对应的特征向量构成转换矩阵
(5))通过 对数据进行降维
- 举例
假设我们有一组二维数据点
首先对数据进行归一化。得到矩阵
求出 的协方差矩阵
特征值为 。选择值大的特征值所对应的特征向量
通过 对数据进行降维
- PCA算法的优缺点
优点:
(1) 它是无监督学习,完全无参数限制的。在PCA的计算过程中完全不需要人为的设定参数或是根据任何经验模型对计算进行干预,最后的结果只与数据相关,与用户是独立的
(2) 用PCA技术可以对数据进行降维,同时对新求出的“主元”向量的重要性进行排序,根据需要取前面最重要的部分,将后面的维数省去,可以达到降维从而简化模型或是对数据进行压缩的效果。同时最大程度的保持了原有数据的信息
(3) 各主成分之间正交,可消除原始数据成分间的相互影响
(4) 计算方法简单,易于在计算机上实现
缺点:
(1) 如果用户对观测对象有一定的先验知识,掌握了数据的一些特征,却无法通过参数化等方法对处理过程进行干预,可能会得不到预期的效果,效率也不高
(2)贡献率小的主成分往往可能含有对样本差异的重要信
知乎:
https://www.zhihu.com/people/233333-4/activities
有问题欢迎来撩
参考:
https://blog.csdn.net/baimafujinji/article/details/79376378
https://blog.csdn.net/u013719780/article/details/78352262
《机器学习》周志华