主成分分析(Principal components analysis,PCA)是最重要的降维方法之一。在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用。一般我们提到降维最容易想到的算法就是PCA。PCA推导有两种方法:最大化方差,最小化重构误差。
1 PCA思想
主成分分析是特征提取的方法,它要做的是寻找使方差最大的方向,并在该方向投影。
PCA就是找出数据里最主要的方向,来代替原始数据。具体的,假如我们有m个n维数据,将数据从n维降到P维,使这m个P维的数据尽可能的表示原始数据集。基于样本点到这个超平面的距离足够近,或者说样本点在这个超平面上的投影能尽可能的分开两种标准,我们可以得到PCA的两种等价推导:基于最小投影距离,基于最大投影方差。
2 求协方差矩阵(参见协方差矩阵)
3 计算协方差矩阵的特征向量和特征值
因为协方差矩阵为方阵,我们可以计算它的特征向量和特征值,如下:
[eigenvectors,eigenvalues] = eig(cov)
我们可以看到这些矢量都是单位矢量,也就是它们的长度为1,这对PCA来说是很重要的。
4、选择成分组成模式矢量
求出协方差矩阵的特征值及特征向量后,按照特征值由大到小进行排列,丢弃特征值很小的部分,不会丢失很多信息。原始数据即从n维变为了P维。接下来要做的是组成一个模式矢量,这只是几个矢量组成的矩阵的一个名字而已,它由保持的所有特征矢量构成,每个特征矢量是这个矩阵的一列。
对于我们的数据集,因为有两个特征矢量,因此我们有两个选择。我们可以用两个特征矢量组成模式矢量:
我们也可以忽略其中较小特征值的一个特征矢量,从而得到如下模式矢量:
5、得到降维后的数据
其中rowFeatureVector是由模式矢量作为列组成的矩阵的转换,因此它的行就是原来的模式矢量,而且对应最大特征的特征矢量在该矩阵的最上一行。rowdataAdjust是每一维数据减去样本均值后,所组成矩阵的转置,即数据项目在每一列中,每一行是一维,对我们的样本来说即是,第一行为x维上数据,第二行为y维上的数据。FinalData是最后得到的数据,数据项目在它的列中,维数沿着行。
结果为:
0.8280 0.1751
-1.7776 -0.1429
0.9922 -0.3844
0.2742 -0.1304
1.6758 0.2095
0.9129 -0.1753
-0.0991 0.3498
-1.1446 -0.0464
-0.4380 -0.0178
-1.2238 0.1627
这将仅仅给出屋面选择的数据。我们的原始数据有两个轴(x和y),所以我们的原始数据按这两轴分布。我们可以按任何两个我们喜欢的轴表示我们的数据。如果这些轴是正交的,这种表达将是最有效的,这就是特征矢量总是正交的重要性。我们已经将我们的数据从原来的xy轴表达变换为现在的单个特征矢量表达。
(说明:如果要恢复原始数据,只需逆过程计算即可)即:
到此为止,相信你已经掌握了PCA及其原理了
参考
https://blog.csdn.net/xiao_lxl/article/details/72730000
https://www.cnblogs.com/pinard/p/6239403.html
https://my.oschina.net/gujianhan/blog/225241