参考资料:http://www.cnblogs.com/GatsbyNewton/articles/4776683.html
特征降维一般有两类方法:特征选择和特征抽取。特征选择即从高纬度的特征中选择其中的一个子集来作为新的特征;而特征抽取是指将高纬度的特征经过某个函数映射至低纬度作为新的特征。常用的特征抽取方法就是PCA。
当B向量为单位向量时,A和B两个向量相乘的意义在于:求A向量在B向量上的投影。
那么,如果B是一个矩阵,A是一个列向量,B的每一个行向量都是单位向量,那么B和A相乘的意义在于:求A在以B中行向量为基的空间的映射。
如果B中行向量中的数量比A中列向量的维数少,就达到降维的目的了。
那么现在问题来了,新的基怎么找?
我们肯定希望在新的空间里能够保留原空间尽可能多的信息,这就对基提出了第一个要求,新的基必须是正交的,因为如果不是正交的,每个基上携带的信息就有一定程度的重合。
协方差矩阵可以描述每个属性之间的相关性,我们希望变换后的协方差矩阵除对角线上的元素外其他元素都是0,这样就保证两个属性之间尽可能不相关。
这就需要对协方差矩阵进行对角化,用矩阵分析中的求特征值和特征向量就可以解决这个问题。
总结一下PCA的算法步骤:
设有m条n维数据。
1)将原始数据按列组成n行m列矩阵X
2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值
3)求出协方差矩阵
4)求出协方差矩阵的特征值及对应的特征向量
5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P
6)Y=PX即为降维到k维后的数据