- PCA算法推导
关于PCA算法推导我觉得还是挺复杂的。之前在做数模比赛时,经常用到PCA算法,但是都是拿来直接套用解决实际问题,根本没有仔细思考原理推导。
这里总结一下PCA算法原理推导中用到的两个重要原理:
特征值分解矩阵和SVD分解矩阵。
1. 特征值分解矩阵原理
(1) 特征值与特征向量
如果一个向量v是矩阵A的特征向量,将一定可以表示成下面的形式:
其中,λ是特征向量v对应的特征值,一个矩阵的一组特征向量是一组正交向量。
(2) 特征值分解矩阵
对于矩阵A,有一组特征向量v,将这组向量进行正交化单位化,就能得到一组正交单位向量。特征值分解,就是将矩阵A分解为如下式:
其中,Q是矩阵A的特征向量组成的矩阵,则是一个对角阵,对角线上的元素就是特征值。
2. SVD分解矩阵原理
奇异值分解是一个能适用于任意矩阵的一种分解的方法,对于任意矩阵A总是存在一个奇异值分解:
假设A是一个m*n的矩阵,那么得到的U是一个m*m的方阵,U里面的正交向量被称为左奇异向量。Σ是一个m*n的矩阵,Σ除了对角线其它元素都为0,对角线上的元素称为奇异值。 是v的转置矩阵,是一个n*n的矩阵,它里面的正交向量被称为右奇异值向量。而且一般来讲,我们会将Σ上的值按从大到小的顺序排列。
SVD分解矩阵A的步骤:
(1) 求 的特征值和特征向量,用单位化的特征向量构成 U。
(2) 求 的特征值和特征向量,用单位化的特征向量构成 V。
(3) 将 或者 的特征值求平方根,然后构成 Σ。
- PCA算法步骤
- PCA算法目的
1.减少预测变量个数;
2.确保这些变量是相互独立的;
3.提供一个框架来解释结果;
4.去除噪声;
- PCA算法优缺点
优点:
它是无监督学习,完全无参数限制的。在PCA的计算过程中完全不需要人为的设定参数或是根据任何经验模型对计算进行干预,最后的结果只与数据相关,与用户是独立的。
用PCA技术可以对数据进行降维,同时对新求出的“主元”向量的重要性进行排序,根据需要取前面最重要的部分,将后面的维数省去,可以达到降维从而简化模型或是对数据进行压缩的效果。同时最大程度的保持了原有数据的信息。
各主成分之间正交,可消除原始数据成分间的相互影响。
计算方法简单,易于在计算机上实现。
缺点:
如果用户对观测对象有一定的先验知识,掌握了数据的一些特征,却无法通过参数化等方法对处理过程进行干预,可能会得不到预期的效果,效率也不高。
贡献率小的主成分往往可能含有对样本差异的重要信息。
特征值矩阵的正交向量空间是否唯一有待讨论。
在非高斯分布的情况下,PCA方法得出的主元可能并不是最优的,此时在寻找主元时不能将方差作为衡量重要性的标准。