首先介绍一下主成分分析(PCA)的主要思想:将n维特征映射到k维上,映射后的k维特征也即主成分。PCA降维的主要过程是:(1)从原始空间中顺序地找出一组相互正交的坐标轴。其中,第一个新坐标轴选择是原始数据中方差最大的方向,第二个新坐标轴选取是与第一个坐标轴正交的平面中使得方差最大的,第三个轴是与第1,2个轴正交的平面中方差最大的。依次类推,可以得到n个这样的坐标轴。(2) 只保留前面k个含有绝大部分方差的坐标轴。事实上,在获取新的坐标轴的过程中,我们会发现:大部分方差包含在前面k个坐标轴中,后面的坐标轴所含的方差几乎为0。因此,PCA相当于只保留包含绝大部分方差的维度特征,而忽略包含方差几乎为0的特征维度,实现对数据特征的降维处理。
那么,我们如何找到这些包含最大差异性的主成分方向呢?
答案是可以通过计算数据矩阵的协方差矩阵,然后得到协方差矩阵的特征值特征向量,选择特征值最大(即方差最大)的k个特征所对应的特征向量组成的矩阵。这样就可以将数据矩阵转换到新的空间当中,实现数据特征的降维。
得到协方差矩阵的特征值和特征向量有特征值分解协方差矩阵和奇异值分解协方差矩阵这两种方法。在这里仅介绍基于特征值分解协方差矩阵实现PCA算法的过程, 并举例讲解主成分分析法的使用过程。
基于特征值分解协方差矩阵实现PCA算法的过程如下: 前提:输入数据集
,目标:降到k维。
(1)将数据去中心化,即每一位特征减去各自的平均值。
(2) 计算协方差矩阵
。
(3)用特征值分解方法求协方差矩阵
的特征值与特征向量。
(4) 对特征值从大到小排序,选择其中最大的k个。然后将其对应的k个特征向量分别作为行向量组成特征向量矩阵P。
(5)将数据转换到k个特征向量构建的新空间中,即Y=PX。
下面举例说明主成分分析法的使用过程。
目标:将矩阵
降到一行。
过程如下:
(1)因为X矩阵的每行已经是零均值,所以不需要去平均值。
(2)求协方差矩阵:
(3)求协方差矩阵的特征值与特征向量。
求解后的特征值为:
,
对应的特征向量为:
其中对应的特征向量分别是一个通解,
和
可以取任意实数。那么标准化后的特征向量为:
(4)矩阵P为:
(5)最后我们用P的第一行乘以数据矩阵X,就得到了降维后的表示: