「人工智能」No.9 特征工程之降维

【导读:当今人类即将或者已然了进入智能时代,这是·情报通·人工智能科普系列第[9]篇文章,欢迎阅读和收藏!】

1 基本概念

降维的意思是能够用一组个数为 d 的向量 z i 来代表个数为 D 的向量 x i 所包含的有用信息,其中 dx i ,跟 svm 的参数相乘。假如能够将 512*512 的向量在保留有用信息的情况下降维到 100 ,那么存储输入和参数的空间会减少很多,计算向量乘法的时间也会减少很多。所以降维能够有效的减少计算时间。而高维空间的数据很有可能出现分布稀疏的情况,即 100 个样本在 100 维空间分布肯定是非常稀疏的,每增加一维所需的样本个数呈指数级增长,这种在高维空间中样本稀疏的问题被称为维数灾难。降维可以缓解这种问题。

而为什么可以降维,这是因为数据有冗余,要么是一些没有用的信息,要么是一些重复表达的信息,例如一张 512*512 的图只有中心 100*100 的区域内有非 0 值,剩下的区域就是没有用的信息,又或者一张图是成中心对称的,那么对称的部分信息就重复了。正确降维后的数据一般保留了原始数据的大部分的重要信息,它完全可以替代输入去做一些其他的工作,从而很大程度上可以减少计算量。例如降到二维或者三维来可视化。

2 从什么角度出发来降维

一般来说可以从两个角度来考虑做数据降维,一种是直接提取特征子集做特征抽取,例如从 512*512 图中只取中心部分,一种是通过线性 / 非线性的方式将原来高维空间变换到一个新的空间,这里主要讨论后面一种。后面一种的角度一般有两种思路来实现,一种是基于从高维空间映射到低维空间的 projection 方法,其中代表算法就是 PCA ,而其他的 LDA 、 Autoencoder 也算是这种,主要目的就是学习或者算出一个矩阵变换 W ,用这个矩阵与高维数据相乘得到低维数据。另一种是基于流形学习的方法,流形学习的目的是找到高维空间样本的低维描述,它假设在高维空间中数据会呈现一种有规律的低维流形排列,但是这种规律排列不能直接通过高维空间的欧式距离来衡量,如下左图所示,某两点实际上的距离应该是下右图展开后的距离。如果能够有方法将高维空间中流形描述出来,那么在降维的过程中就能够保留这种空间关系,为了解决这个问题,流形学习假设高维空间的局部区域仍然具有欧式空间的性质,即它们的距离可以通过欧式距离算出 (Isomap) ,或者某点坐标能够由临近的节点线性组合算出 (LLE) ,从而可以获得高维空间的一种关系,而这种关系能够在低维空间中保留下来,从而基于这种关系表示来进行降维,因此流形学习可以用来压缩数据、可视化、获取有效的距离矩阵等。

3 降维方法流程

主要的方法是 线性映射 非线性映射 方法两大类,下面介绍几种常用方法。其中初学者对公式的理解是其次,关键是对原理的理解,才对深入学习有所帮助。

3.1 线性映射

线性映射方法的代表方法有: PCA ( Principal Component Analysis ) LDA ( Discriminant Analysis )

3.1.1 主成分分析算法( PCA )

最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中表示,并期望在所投影的维度上数据的方差最大,以此使用较少的数据维度,同时保留住较多的原数据点的特性。

3.1.2 线性判别分析( LDA )

判别分析 (Discriminant Analysis) 所追求的目标与 PCA 不同,不是希望保持数据最多的信息,而是希望数据在降维后能够很容易地被区分开来。后面会介绍 LDA 的方法,是另一 种常见的线性降维方法。另外一些非线性的降维方法利用数据点的局部性质,也可以做到比较好地区分结果,例如 LLE , Laplacian Eigenmap 等。

LDA 是一种有监督的( supervised )线性降维算法。与 PCA 保持数据信息不同,核心思想:往线性判别超平面的法向量上投影,是的区分度最大(高内聚,低耦合)。 LDA 是为了使得降维后的数据点尽可能地容易被区分!

3.2 非线性映射

非线性映射方法的代表方法有:核方法(核 + 线性),二维化和张量化(二维 + 线性),流形学习( ISOMap , LLE , LPP )

3.2.1 基于核的非线性降维

代表方法有: KPCA , KFDA 。

KPCA 的基本思想:通过 Kernel trick 将 PCA 投影的过程通过内积的形式表达出来。将高维向量 ϕ(x) 与对应特向 βϕ(x) 与对应特向 β 的内积转换成低维的核函数表示。

3.2.2 流形学习

流形学习的主要算法有: ISOMap (等距映射)、 LE (拉普拉斯特征映射)、 LLE (局部线性嵌入)。

流形:直线或者曲线是一维流形,平面或者曲面是二维流形,更高维之后是多维流形。一个流形好比是 d 维的空间,是一个 m 维空间( m>n )被扭曲之后的空间。流形并不是一个 “ 形状 ” ,而是一个 “ 空间 ”流形学习的假设:数据采样于某一流形上。