降维的目标就是对输入的数目进行削减,由此剔除数据中噪声并提高机器学习方法的性能。本章将介绍按照数据方差最大方向调整数据的主成分分析降维方法。
之所以要降维,是因为降维之后,数据更容易进行处理,而且其相关特征可能在数据中明确地显示出来。
本章一开始对对降维技术进行了综述,然后集中介绍一种应用非常普遍的称为主成分分析的技术。最后,通过一个数据集的例子来展示PCA的工作过程。
13.1 降维技术
对数据进行简化的原因:(1)使数据在大规模特征下更加容易显示。(2)使得数据更加容易使用。(3)降低很多算法的开销。(4)去除噪声。(5)使得结果易懂。
在已标注和未标注的数据上都有降维技术,这里我们关注的是在未标注数据上的降维技术,该技术同时可以应用到已标注的数据。
第一种降维的方法称为主成分分析(Principal Component Analysis, PCA)。在PCA中,数据从原来的坐标系转换到新的坐标系,新坐标系的选择是由数据本身决定的。第一个新坐标轴选择的是原始数据中方差最大的方向,第二个新坐标轴的选择和第一个坐标轴正交且具有最大方差的方向。该过程一直重复,重复次数为原始数据中特征的数目。此时我们会发现,大部分方差都包含在最前面的几个新坐标轴中。因此,我们可以忽略余下的坐标轴,即对数据进行降维处理。
另外一种降维技术是因子分析(Factor Analysis)。在因子分析中,我们假设在观察数据的生成中有一些观察不到的隐变量。假设观察数据是这些隐变量和某些噪声的线性组合。那么隐变量的数据可能比观察数据的数目少,也就是说通过找到隐变量就可以实现数据的降维。
还有一种降维技术技术独立成分分析(Independent Component Analysis, ICA)。ICA假设数据是从N个数据源生成的,这一点和因子分析有点类似。假设数据是多个数据源的混合观察结果,这些数据源在统计上是相互独立的,而在PCA中只假设数据是不相关的。同因子分析一样,如果数据源的数目少于观察数据的数目,则可以实现降维。
13.2 PCA
13.2.1 移动坐标轴
通过PCA降维可以同时获得SVM和决策树的优点:(1)得到了和决策树一样简单的分类器,同时分类间隔和SVM一样好。(2)只需要考虑一维信息,数据可通过比SVM简单得多的很容易采用的规则进行区分。
接下来,我们就可以通过代码来实现PCA过程。我们曾经提到,第一个主成分就是数据差异性最大(即方差最大)的方向提取出来的,第二个主成分则来自于数据差异性次大的方向,并且该方向与第一个主成分方向正交。通过对数据集的协方差矩阵及其特征值分析,我们就可以求得这些主成分的值。
一旦得到协方差矩阵的特征向量,我们就可以保留最大的N个值。这些特征向量也给出了N个最重要特征的真实结构。我们可以通过将数据乘上这N个特征向量而将它们转换到新的空间。
13.2.2 在NumPython中实现PCA
将数据转换成前N个主成分的伪码大致如下:
去除平均值
计算协方差矩阵
计算协方差矩阵的特征值和特征向量
将特征值从大到小排序
保留最上面的N个特征向量
将数据转换到上述N个特征向量构建的新空间
13.3 本章小结
降维技术使得数据变得更加容易使用,并且它们往往能够去除数据中的噪声,使得其他机器学习任务更加精确。降维往往作为预处理步骤,在数据应用到其他算法之前清洗数据。有很多技术可以用于数据降维,在这些技术中,独立成分分析、因子分析和主成分分析比较流行,其中又以主成分分析应用广泛。
PCA可以从数据中识别其主要特征,它是通过沿着数据最大方差方向旋转坐标轴来实现的。选择方差最大的方向作为第一条坐标轴,后续坐标轴则与前面的坐标轴正交。协方差矩阵上的特征值分析可以用一系列的正交坐标轴来获取。