机器学习技法 Lec 13中提到了eigen-vector、eigen-value 以及 PCA,对于没有相关知识背景的童鞋来说理解起来很困难,下面笔者对此进行了额外学习与整理。
1、eigen-vector和eigen-value
定义:
对应任意一个square matrix A,如果满足下面等式:
这里A是一个矩阵 ;V是一个向量;lambda是一个常数。我们就说V是A的eigenvector,lambda是A的eigenvalue。
两个矩阵相乘的意义是将右边矩阵中的每一列列向量变换到左边矩阵中每一行行向量为基所表示的空间中去。
矩阵实际可以看作一个变换(但并不是变换,只是看作),方程左边就是把向量V变到另一个位置,右边就是把向量V作了一个拉伸,拉伸量是lambda。那么它的意义就很明显了,表达了矩阵A的一个特性就是这个矩阵可以把向量V拉长(或缩短)lambda倍,仅此而已。
矩阵A并不是对所有的V都能拉长(缩短)。凡是能被A拉长(缩短)的向量称为A的特征向量(Eigenvector);拉长(缩短)量就为这个特征向量对应的特征值(Eigenvalue)。
如果A是一个square matrix,则永远存在、且可能存在多个eigen-vector和eigen-value。
事实上,一个变换矩阵的所有特征向量组成了这个变换矩阵的一组基。所谓基可以理解为坐标系的轴。在主成分分析(Principal Component Analysis,PCA)中,我们是通过在拉伸最大的方向设置基,忽略一些小的量,可以极大地压缩数据而减小失真。
变换矩阵的所有特征向量作为空间的基之所以重要,是因为在这些方向上变换矩阵可以拉伸向量而不必扭曲和旋转它,使得计算大为简单。所以特征值固然重要,我们的终极目标却是特征向量。
2、PCA(Principal Component Analysis)
PCA是一种常用的数据分析方法,PCA可用于提取数据的主要特征分量,常用于高维数据的降维。
PCA的算法步骤(设有m条n维数据):
1)将原始数据按列组成n行m列矩阵X
2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值
3)求出协方差矩阵(将一组N维向量降为K维(K大于0,小于N),其目标是选择K个单位模为1正交基,使得原始数据变换到这组基上后,各字段两两间协方差为0,而字段的方差则尽可能大(在正交的约束下,取最大的K个方差))。
4)求出协方差矩阵的特征值及对应的特征向量
5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P
6)Y=PX即为降维到k维后的数据
PCA本质上是将方差最大的方向作为主要特征,并且在各个正交方向上将数据“离相关”,也就是让它们在不同正交方向上没有相关性。
因此,PCA也存在一些限制,例如它可以很好的解除线性相关,但是对于高阶相关性就没有办法了,对于存在高阶相关性的数据,可以考虑Kernel PCA,通过Kernel函数将非线性相关转为线性相关,关于这点就不展开讨论了。另外,PCA假设数据各主特征是分布在正交方向上,如果在非正交方向上存在几个方差较大的方向,PCA的效果就大打折扣了。
想详细了解PCA的童鞋可以看下这篇博文:http://www.jianshu.com/p/bc84bec587ac