降维算法(一)—— PCA算法

原文http://blog.sina.com.cn/s/blog_c493e7920101kh86.html
降维算法(一)—— PCA算法
信息技术的发展,使得人们获取的数据呈指数级的形式增长,但大量的数据也给人们造成了“数据丰富但知识匮乏”的现象。数据降维技术就是解决这一问题的技术之一。有效的数据降维技术能够揭示原始数据的内在结构和联系,不仅可以消除数据间的冗余,以简化数据,提高计算效率,还改善数据的可理解性,提高学习算法的精度。
1. PCA简介
PCA(Principal component analysis)主成份分析,是数据降维方法里传统的降维方法,根据不同的数据属性类型划分,其属于线性降维方法;根据是否利用样本的先验知识划分,其数据无监督降维方法。
维基百科定义,Principal component analysis (PCA) is a statistical procedure that uses orthogonal transformation(正交变换)to convert a set of observations of possibly correlated variables into a set of values of linearly uncorrelated(线性不相关的) variables called principal components.
由此可知,PCA算法的重点就是矩阵变换,使用的矩阵来源于原始数据构成的协方差矩阵,下面将讲解协方差矩阵。
2. PCA算法的步骤
2.1. 获取数据降维算法(一)—— PCA(每一个数据为一个m维列向量)。
对于在PCA算法中使用的数据我们需要限定,这里假设-1数据结构都是线性的。这也就决定了它能进行的主元分析之间的关系也是线性的。
2.2. 求出数据平均值降维算法(一)—— PCA,并用原数据减去均值得到降维算法(一)—— PCA
在几何可以理解为,将数据分布的空间的中心点移动到数据的均值点上。在这里我们也提出假设(假设-2):数据使用中值和方差进行充分统计。使用中值和方差进行充分的概率分布描述的模型只限于指数型概率分布模型。(例如高斯分布),也就是说,如果我们考察的数据的概率分布并不满足高斯分布或是指数型的概率分布,那么PCA将会失效。
2.3. 计算协方差矩阵 降维算法(一)—— PCA
关于协方差矩阵有如下介绍:
对于一组具有m个观测变量,n个采样时间点的采样数据X,可以得到一个m*n的矩阵。
定义的协方差矩阵:降维算法(一)—— PCA
我们知道,协方差矩阵性质如下:
降维算法(一)—— PCA是一个m*m的平方对称矩阵。
降维算法(一)—— PCA对角线上的元素是对应的观测变量的方差。
降维算法(一)—— PCA非对角线上的元素是对应的观测变量之间的协方差。
假设-3:对角线上方差大的是信号,方差小的是噪音。
• 在对角线上的元素越大,表明信号越强,变量的重要性越高;元素越小则表明可能是存在的噪音或是次要变量。
• 在非对角线上的元素大小则对应于相关观测变量对之间冗余程度的大小。
一般情况下,初始数据的协方差矩阵总是不太好的,表现为信噪比不高且变量间相关度大。PCA的目标就是通过基变换对协方差矩阵进行优化,找到相关“主元”。那么如何优化呢?其实就是将协方差矩阵对角化。
2.4. 计算协方差矩阵的特征值与特征向量。
假设-4:矩阵P所对应的一组变换基降维算法(一)—— PCA必须是标准正交的。
有 Y =PX,使得降维算法(一)—— PCA是一个对角阵。
经公式推导:矩阵P为降维算法(一)—— PCA特征向量排成矩阵E的转置。降维算法(一)—— PCA
在这里我们得到了矩阵P,它不仅要起到将协方差矩阵对角化的作用,同时降维的目的,我们需要相对重要的“主元”,所以矩阵P的组成还应按照特征向量对应的特征值大小来排列。这就是接下来的步骤。

2.5. 由大到小依次排列特征值及对应特征向量,选取需要的维数,组成变换矩阵。
原则上,特征值大对应的对角线上的元素就越大,其重要性就越高,所以将特征值最大的特征向量排在对前面。根据需要选取需要的维度,有时在没有明确维度的前提下,会更具贡献度选择最后的维度。贡献度与特征值是正相关的,特征值越大代表这个维度的贡献度越大。例如当排序后前k(k)个特征值之和占总的m个特征值之和的百分之九十以上,我们就完全可以取前k个特征值对应的特征向量。
2.6. 计算出降维后的新样本矩阵。(Y =PX)
根据变换公式,我们可以得到降维后的数据。
3. 总结
PCA算法的优点是简单,而且无参数限制,可以方便的应用与各个场合。因此应用极其广泛,从神经科学到计算机图形学都有它的用武之地。被誉为应用线形代数最价值的结果之一。但是,PCA的模型中存在诸多的假设条件(文中以标出),决定了它存在一定的限制,在有些场合可能会造成效果不好甚至失效。
同时,PCA算法中的完全无参数限制,使得其利用不了样本的先验知识,可能达不到预期的效果,效率也不高。在使用时需要注意。

你可能感兴趣的:(机器学习,算法)