参考:http://blog.codinglabs.org/articles/pca-tutorial.html
假设我们只有a和b两个字段,那么我们将它们按行组成矩阵 X X :
设原始数据矩阵X X 对应的协方差矩阵为 C C ,而P P 是一组基按行组成的矩阵,设 Y=PX Y = P X ,则 Y Y 为X X 对 P P 做基变换后的数据。设Y Y 的协方差矩阵为 D D ,我们推导一下D D 与 C C 的关系:
1)实对称矩阵不同特征值对应的特征向量必然正交。
2)设特征向量λ重数为r,则必然存在r个线性无关的特征向量对应于λ,因此可以将这r个特征向量单位正交化。
由上面两条可知,一个n行n列的实对称矩阵一定可以找到n个单位正交特征向量,设这n个特征向量为 e1,e2,⋯,en e 1 , e 2 , ⋯ , e n ,我们将其按列组成矩阵:
总结一下PCA的算法步骤:
设有m条n维数据。
1)将原始数据按列组成n行m列矩阵X
2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值
3)求出协方差矩阵C=1mXXT
4)求出协方差矩阵的特征值及对应的特征向量
5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P
6)Y=PX即为降维到k维后的数据
LDA L D A 用于降维,和 PCA P C A 有很多相同,也有很多不同的地方,因此值得好好的比较一下两者的降维异同点。
首先我们看看相同点:
1)两者均可以对数据进行降维。
2)两者在降维时均使用了矩阵特征分解的思想。
3)两者都假设数据符合高斯分布。
我们接着看看不同点:
1) LDA L D A 是有监督的降维方法,而 PCA P C A 是无监督的降维方法
2) LDA L D A 降维最多降到类别数 k−1 k − 1 的维数,而 PCA P C A 没有这个限制。
3) LDA L D A 除了可以用于降维,还可以用于分类。
4) LDA L D A 选择分类性能最好的投影方向,而 PCA P C A 选择样本点投影具有最大方差的方向。