主成份分析
主成分分析(PCA)可以用一个很形象的例子说明一下。请看下图:
例如在此坐标系下有这样几个点,现在是二维的,我们想把这些点都映射到一个一维的,看能不能降维。于是我们想找到这样如下图的一条线作为一维的坐标轴。使这些点都在这条线附近。
PCA的思想就是这样一个降维的思想,假设现在是n维的坐标系,我们想通过PCA的方法将其降维到m维坐标系上。
一.为什么要用PCA进行降维?
因为实际情况中我们的训练数据会存在特征过多或者是特征累赘的问题。举一个简单的例子,我们都非常熟悉线性回归,现在我们考虑多元线性回归,有一个因变量y和三个自变量x1,x2,x3。但是通过我们的分析得知自变量x1和x2有很强的线性关系,这就造成了信息的冗余,其实这三个自变量的信息可以通过降维用二维的变量表示,这就是为什么要降维。
二. PCA如何降维?
假设我们有如下两个变量x和y,他们分别有10条数据,已知x和y有很强的线性关系,我们想通过PCA在不损失很多信息的前提下对数据进行降维。
step 1:分别求 x 和 y 的平均值,然后对所有的样例都减去对应的均值,这里求得 x 的均值为 1.81 , y 的均值为 1.91,减去均值后得到数据如下:
注意,此时我们一般应该在对特征进行方差归一化,目的是让每个特征的权重都一样,但是由于我们的数据的值都比较接近,所以归一化这步可以忽略不做
第一步的算法步骤如下:
本例中步骤3、4没有做。
step 2: 求特征协方差矩阵
step 3: 求解协方差矩阵的特征值和特征向量
step 4: 将特征值从大到小进行排序,选择其中最大的 k 个,然后将其对应的 k 个特征向量分别作为列向量组成特征矩阵.
这里的特征值只有两个,我们选择最大的那个,为: 1.28402771 ,其对应的特征向量为:
step 5: 将样本点投影到选取的特征向量上
假设样本长度为 m ,特征数为 n ,减去均值后的样本矩阵为 DataAdjust(m*n),协方差矩阵为 n*n ,选取 k 个特征向量组成后的矩阵为 EigenVectors(n*k),则投影后的数据 FinalData 为:
FinalData (m*k) = DataAdjust(m*n) X EigenVectors(n*k)
得到的结果是: