这两天重新看了PCA的相关知识,重新理解了下数学推导,这篇文章把该讲的都讲了,附上链接。下面是一点理解,再迷惑的时候看看。
http://blog.codinglabs.org/articles/pca-tutorial.html
根据上述推导,我们发现要达到优化目前,等价于将协方差矩阵对角化:即除对角线外的其它元素化为0,并且在对角线上将元素按大小从上到下排列,这样我们就达到了优化目的。这样说可能还不是很明晰,我们进一步看下原矩阵与基变换后矩阵协方差矩阵的关系:
设原始数据矩阵X对应的协方差矩阵为C,而P是一组基按行组成的矩阵,设Y=PX,则Y为X对P做基变换后的数据。设Y的协方差矩阵为D,我们推导一下D与C的关系:
现在事情很明白了!我们要找的P不是别的,而是能让原始协方差矩阵对角化的P。换句话说,优化目标变成了寻找一个矩阵P,满足 PCPT PCPT是一个对角矩阵,并且对角元素按从大到小依次排列,那么P的前K行就是要寻找的基,用P的前K行组成的矩阵乘以X就使得X从N维降到了K维并满足上述优化条件。
此时,我们把C的特征向量当做P,由于矩阵对角化的性质,D为对角化矩阵,对角线上的值为特征向量对应的特征值。特征向量有良好的性质两两正交,在基向量中两两正交,说明了降维之后保证每一维不相关。D的矩阵本身意义为降维之后的数据协方差矩阵,基向量两两正交说明不同属性协方差为0,但是保证同一属性降维后方差尽量大,也就是投影间距尽量大,所以取特征值的最大的几个做为降维的基向量,这样取P的前几行就可以。p*X得到Y降维后的数据。