PCA学习笔记
1.引言
使用主成分分析(PCA)的动机
简单来讲,使用PCA就是为了把高维数据降成低维数据,然后就可以使用可视化分析工具分析特征或者用一些机器学习算法进行深入操作。常常作为一种数据预处理的方法,但还是有必要学习一下的,在很多领域都会用到PCA,数据特征降维众多应用之一。
2.基于奇异值分解的PCA解释
2.1 主成分分析中的主成分是什么?
顾名思义,主成分分析就是把数据的主要成分给提取出来分析了,但是这个主成分怎么体现出来呢?(如果对奇异值分解不熟悉的话,建议先看下面的奇异值分解再跳回来看这段解释)那就取决于高维数据奇异值分解过后得到的,其中奇异值对角阵中奇异值从大到小的顺序就决定了每个奇异值对应奇异向量的重要程度。换句话讲,奇异值越大,则其对应的奇异向量(中对应的行向量,中对应的列向量)越重要。那么这些奇异值较大的分量就是我们需要的主成分,我们提取主成分分量也是根据奇异值排列来进行的。
这里说了一堆关于奇异值分解的东西,这相当地重要,不懂奇异值分解的话,PCA就有点难理解了。所以一定要先把奇异值分解搞懂了。
补习:奇异值分解
考研过研的人都没少算过矩阵的特征值分解,现在看来,那时候的纯数学学习仅仅是只见树木,不见森林啊!我们把这些东西用起来的时候才发现它的重要性,枯燥的数学往往让人绝望。数学之美就是巧妙地解决了各种各样的实际问题啊,在解决问题的过程里再看数学,就不会很枯燥了。废话不多说,简要回忆一下奇异值分解。接下来的内容主要参考(《深度学习》 Ian Goodfellow等人) 。
首先需要明确的只有方阵才有特征分解,非方阵没有特征分解,因此才需要奇异值分解。假设我们我们用特征分解去分析一个矩阵时,可以得到对应的特征向量矩阵和特征值构成的向量,于是我们把矩阵写成:
实际上,奇异值分解和特征分解是类似的,通过奇异值分解,可以将分解为:
其中,需要注意以下几点:
1:各个矩阵的维度:假设为,则为,为,为.
2:的列向量称为左奇异向量,的列向量称为右奇异向量,对角矩阵是上的元素称为的奇异值。
3:和都是正交矩阵,是对角矩阵,但不一定是方阵。
4:可以用A相关的特征分解解释A的奇异值分解:的左奇异向量是,的右奇异向量是. A的非零奇异值是特征值的平方根,也是特征值的平方根.
补习END
2.2 PCA算法流程
关于PCA的两个问题:
第一,降维是具体是如何操作的;
第二,将高维到低维压缩到低维还能保证保留主成分的机理是什么;
我们通过PCA的算法流程来回答这两个问题。
1.假设输入数据矩阵为m*n大小的,m行代表每个样本,n列代表特征,我们首先对数据进行缩放,因为这个算法对数据数值大小是敏感的。对于每个样本中的每个特征我们都进行归一化:
其中特征序号i=1,2,...,n; 样本序号j=1,2,...,m.
2.计算协方差矩阵
3.奇异值分解
4.从U中取出前k个左奇异向量,构造一个reduce矩阵
5.计算新的特征向量
于是,我们就完成了PCA降维,用来表示的主成分。当然也可以根据主成分特征向量来还原高维数据,上式两边同时左乘就可以了,注意是正交矩阵,具有性质.
第一个问题:降维是具体是如何操作的?
答:通过对高维数据的奇异值分解得到左奇异向量,然后对左奇异向量进行约减得到约减矩阵,我们用约减矩阵对原始高维数据进行“编码”(坐标轴变化)得到降维后的数据.
第二个问题:将高维到低维压缩到低维还能保证保留主成分的机理是什么?
答:对原始数据奇异值分解后,会得到奇异值矩阵,每个奇异值都有对应的奇异向量,而奇异值的大小决定了这个奇异向量的重要性,对奇异值进行降序排列后,我们取前k个奇异向量作为坐标变换的特征向量基,然后进行坐标变换后就得到了低维空间中的数据。
参考文献:
https://yoyoyohamapi.gitbooks.io/mit-ml/content/%E7%89%B9%E5%BE%81%E9%99%8D%E7%BB%B4/articles/PCA.html
http://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html#commentform
《深度学习》,Ian Goodfellow等人