signed

QiShunwang

“诚信为本、客户至上”

python机器学习——主成分分析理论简介

2020/8/20 9:30:42   来源:

主成分分析理论简介

  • 一、特征降维
    • 1.1什么是特征降维?
    • 1.2为什么要进行特征降维?
    • 1.3特征选择和特征抽取
  • 二、主成分分析(PCA)理论
    • 2.1 算法描述
    • 2.2 PCA 在图像识别的应用
    • 2.3、主成分分析法优缺点
  • 参考

一、特征降维

1.1什么是特征降维?

采用低维度的特征来表示高维度的特征,减少计算机运算量的同时,最大程度保证信息量的完整。

1.2为什么要进行特征降维?

首先在机器学习中,如果特征的分量数目(也可称之为维度)过多,会发生所谓的维数灾难。维数灾难最直接的后果就是过拟合现象,而发生该现象最根本的原因是:

a. 维度增加时,有限的样本空间会越来越稀疏。因此模型出现在训练集上表现良好,但对新数据缺乏泛化能力的现象。

如果训练集可以达到理论上的无限个,那么就不存在维度灾难,我们可以用无限个维度去得到一个完美的分类器。训练集样本越少,越应该用少量的特征,如果 N 个训练样本足够覆盖一个一维的特征空间,那么需要 N2N^2 个样本去覆盖一个同样密度的二维的特征空间,需要 N3N^3 个样本去覆盖三维的特征空间。换句话说,就是训练样本多少需要随着维度指数增长。

b. 维度增加时,每个样本数据越来越不可能符合所有维度(特征),这使得大部分样本都变成了噪声。

如果模型训练完毕后,发现模型在样本集上表现良好,但在新数据上准确率低于或高于某阈值,可基本判定发生了过拟合。例如在新数据上准确率低于 50% 或高于 90% 。也可在模型训练阶段采用交叉验证来检测是否发生了过拟合。基本方法是将训练数据分为一个或多个数据集,用一部分数据集训练模型,另一部分验证模型准确度。如果分类结果在训练集合和测试集合上相差很多,那么就是产生了过拟合。

我们之所以使用降维后的数据表示,一个重要原因就是希望通过降维,减少冗余信息所造成的误差,提高识别(或其他应用)的精度,避免过拟合,当然还有许多其他目的,如:希望通过降维算法来寻找数据内部的本质结构特征;希望通过降维来加速后续计算的速度;解决数据稀疏的问题等。

1.3特征选择和特征抽取

特征降维就是用来减少维度,去除过拟合现象的方法。特征降维分为两种特征选择和特征抽取。

首先我们应明确特征选择与特征抽取的区别:

a.特征选择 Feature Selection

选择有效的特征子集,即去掉不相关或冗余的特征。目的是减少特征个数,提高模型精度,减少运行时间。特征选择后留下的特征的数值在选择前后没有变化。

b.特征抽取 Feature Extraction

特征抽取是指改变原有的特征空间,并将其映射到一个新的特征空间。例如某个特征是一张图片,将这张图片中的点,线条或颜色提取出来并参数化,就是一个特征抽取的过程。因此这个例子是特征抽取,但不能算是特征降维。

另一种情况,例如特征空间包含城市名称,城市等级和城市人口。这三种特征有很强的相关性,但并不能互相替代。因为例如北上广同为一线城市,但人口总量还是有区别的,因此不能在特征选择时简单的将城市人口去掉。但为了达到降维的目的,我们可以将高维特征空间映射到低维特征空间,且城市等级和人口在低维空间都有所表达。此时降维的本质就是学习一个映射函数 f : x—>z,其中 x 是原始数据点的表达,z 是数据点映射后的低维向量表达,通常 z 的维度小于 x 的维度。抽取前后特征值的数值会发生变化,维度会降低,且各维度特征之间的相关性会降低。

二、主成分分析(PCA)理论

主成分分析(Principal Component Analysis,PCA), 是一种最常用的线性降维方法。它的原理是通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。它的目标是通过某种线性投影,将高维的数据映射到低维的空间中表示,并期望在所投影的维度上数据的方差最大,以此使用较少的数据维度,同时保留住较多的原数据点的特性。

通俗的理解,如果把所有的点都映射到一起,那么几乎所有的信息(点和点之间的距离关系)都丢失了,而如果映射后方差尽可能的大,那么数据点则会分散开来,以此来保留更多的信息。可以证明,PCA 是丢失原始数据信息最少的一种线性降维方式。(实际上就是最接近原始数据,但是PCA并不试图去探索数据内在结构)。

样本点 xi 在新空间中超平面上的投影是 W^T*xi,若所有样本点的投影能尽可能分开,则应该使投影后样本点的方差最大化,即图 1 所示:

在这里插入图片描述

因此优化目标可写作:
在这里插入图片描述

控制W的长度为1,是因为如果W可以成比例放大的话,那么我们的优化目标将趋于正无穷,也失去了优化的意义。

对该优化目标使用拉格朗日乘子法求解得

在这里插入图片描述
于是只需要对协方差矩阵 XX^T 进行特征值分解,将求得的特征值排序,再取前 d’ 个特征值对应的特征向量构成 W=(ω1,ω2,…,ωd’)。这就是主成分分析对应的线性变换W的解。

实践中通常通过对 X 进行奇异值分解来代替协方差矩阵的特征值分解。

2.1 算法描述

在这里插入图片描述

2.2 PCA 在图像识别的应用

在这里插入图片描述
观察图 3 的例子,当使用1个特征向量的时候,3 的基本轮廓已经保留下来了,特征向量使用的越多就越与原始数据接近。

以上内容有两处需要注意的地方:

① PCA 的思想是将 n 维特征映射到 k 维上( k < n ),这 k 维是全新的正交特征。这 k 维特征称为主成分,是重新构造出来的 k 维特征,而不是简单地从 n 维特征中去除其余 n-k 维特征。

② PCA 和线性回归的区别,PCA 是保证投射的误差(图4 右图的黄线)最小,而线性回归是保证沿 y 方向的误差(图4 左图的黄线)最小。

2.3、主成分分析法优缺点

优点:

① 可消除变量之间的强相关性。因为主成分分析法在对原始数据指标变量进行变换后形成了彼此互不想关的主成分,而且实践证明指标间相关程度越高,主成分分析效果越好。

② 可减少特征选择的工作量,对于其他评估方法,由于难以消除特征间的相关影响,所以选择特征时要花费不少精力,而主成分分析法由于可以消除这种相关影响,所以在指标选择上相对容易些。

③ 主成分分析中各主成分是按方差大小依次排列顺序的,在分析问题时,可以舍弃一部分主成分,只取前面方差较大的几个主成分来代表原变量,从而减少了计算工作量。用主成分分析法作综合评估时,由于选择的原则是累计贡献率 ≥85% ,不至于因为节省了工作量却把关键指标漏掉而影响评估结果。
  
缺点:
  
① 在主成分分析中,我们首先应保证所提取的前几个主成分的累计贡献率达到一个较高的水平(即变量降维后的信息量须保持在一个较高水平上),其次对这些被提取的主成分必须都能够给出符合实际背景和意义的解释(否则主成分将空有信息量而无实际含义)。
  
②主成分的解释其含义一般多少带有点模糊性,不像原始变量的含义那么清楚、确切,这是变量降维过程中不得不付出的代价。因此,提取的主成分个数 m 通常应明显小于原始变量个数 p(除非 p 本身较小),否则维数降低的“利”可能抵不过主成分含义不如原始变量清楚的“弊”。
  
③由于主成分是原始特征的线性组和,当系数的符号有正有负时,主成分的意义就不易明确了。

参考

[1] 李航. 统计学习方法[M]. 清华大学出版社, 北京, 2012.
[2] 周志华. 机器学习[M]. 清华大学出版社, 北京, 2016.
[3] 范淼,李超.Python 机器学习及实践[M].清华大学出版社, 北京, 2016.