2.9 主成分分析
主成分分析(Principal Component Analysis,PCA)是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫作主成分。
2.9.1 图解PCA核心思想
PCA可解决训练数据中存在数据特征过多或特征累赘的问题。核心思想是将m维特征映射到n维(n < m),这n维形成主元,是重构出来最能代表原始数据的正交特征。
假设数据集中包含m个n维数据,如果n=2,需要降维到n'=1,现在想找到某一维度方向代表这两个维度的数据。图2-9中有u1、u2两个向量方向,哪个向量才是我们所想要的,可以更好地代表原始数据集?
图2-9 PCA核心思想图解示意图
从图中可以看出,u1比u2好,为什么?有以下两个主要评价指标。
(1)样本点到这个直线的距离足够近。
(2)样本点在这个直线上的投影能尽可能分开。
如果需要降维的目标维数是其他任意维,则:
(1)样本点到这个超平面的距离足够近。
(2)样本点在这个超平面上的投影能尽可能分开。
2.9.2 PCA算法推理
下面基于最小投影距离为评价指标推理。
假设数据集中包含m个n维数据,且数据进行了中心化。经过投影变换得到的新坐标为,其中w是标准正交基,即。
如果我们将数据从n维降到n'维,经过降维后,新坐标为。样本点在新坐标系下的投影为,其中 在低维坐标系里第j维的坐标。
如果用去恢复,则得到的恢复数据为,其中W为标准正交基组成的矩阵。
考虑到整个样本集,要想使样本点到超平面的距离足够近,目标是最小化 。对此式进行推理,可得:
在推导过程中,分别用到了,矩阵转置公式,,以及矩阵的迹,最后两步是将代数和转为矩阵形式。
由于W的每一个向量wj是标准正交基,是数据集的协方差矩阵,是一个常量。最小化又可等价于:
利用拉格朗日函数可得到:
对W求导,可得-XXTW+λW=0,即XXTW=λW。XXT是由n'个特征向量组成的矩阵,λ为XXT的特征值。W即为我们想要的矩阵。
对于原始数据,只需要,就可把原始数据集降维到最小投影距离的n'维数据集。
基于最大投影方差的推导,这里就不再赘述,有兴趣的读者可自行查阅资料。
2.9.3 PCA算法流程总结
输入:n维样本集,目标降维维数为n'。
输出:降维后的新样本集。
主要步骤如下。
(1)对所有的样本进行中心化,。
(2)计算样本的协方差矩阵XXT。
(3)对协方差矩阵XXT进行特征值分解。
(4)取出最大的n'个特征值对应的特征向量。
(5)标准化特征向量,得到特征向量矩阵W。
(6)转化样本集中的每个样本。
(7)得到输出新样本集。
注:在降维时,有时不明确目标维数,而要指定降维后的主成分比重阈值k(k∈(0,1])。假设n个特征值为,则n'可从得到。
2.9.4 PCA思想总结
PCA就是将高维数据通过线性变换投影到低维空间的过程。去除可以被其他向量代表的线性相关向量,去除较小特征值对应的特征向量,找出最能代表原始数据的投影方法。
完成PCA的关键是求解协方差矩阵。协方差矩阵,能同时表现不同维度间的相关性及各个维度上的方差。协方差矩阵度量的是维度与维度之间的关系,而非样本与样本之间的关系。对角化后的协方差矩阵、对角线上较小的新方差对应的就是那些该去掉的维度,所以取那些含有较大能量(特征值)的维度即可,其余的就舍掉,即去冗余。
2.9.5 PCA算法的优缺点
PCA算法的优缺点如表2-8所示。
表2-8 PCA算法的优缺点
2.9.6 降维的必要性及目的
降维的必要性如下。
(1)避免多重共线性和预测变量之间相互关联。多重共线性会导致解空间的不稳定,从而可能导致结果的不连贯。
(2)高维空间本身具有稀疏性。一维正态分布有68%的值落于正负标准差之间,而在十维空间上只有2%。
(3)避免过多的变量对查找规律造成冗余麻烦。
(4)仅在变量层面上分析可能会忽略变量之间的潜在联系。例如几个预测变量可能落入仅反映数据某一方面特征的一个组内。
降维的目的如下。
(1)减少预测变量的个数。
(2)确保这些变量是相互独立的。
(3)提供一个框架来解释结果。相关特征,特别是重要特征更能在数据中明确显示出来;如果只有二维或者三维的话,就更便于可视化展示。
(4)数据在低维下更容易处理、使用。
(5)去除数据噪声。
(6)降低算法运算开销。
2.9.7 KPCA与PCA的区别
KPCA用到了核函数思想,使用了核函数的主成分分析一般称为核主成分分析(Kernelized PCA,KPCA)。
应用PCA算法的前提是假设存在一个线性超平面,进而投影。如果数据不是线性的,该怎么办?这时候就需要用到KPCA,数据集从n维映射到线性可分的高维N(N>n),然后再从N维降维到一个低维度n'(n'<n<N)。
假设高维空间数据由n维空间的数据通过映射ϕ产生。
n维空间的特征分解为:
其映射为:
KPCA通过在高维空间进行协方差矩阵的特征值分解,然后用和PCA一样的方法进行降维。由于KPCA需要核函数的运算,因此它的计算量要比PCA大很多。