No.9 特征工程之降维

1基本概念
降维的意思是能够用一组个数为d的向量zi来代表个数为D的向量xi所包含的有用信息 , 其中dxi , 跟svm的参数相乘 。 假如能够将512*512的向量在保留有用信息的情况下降维到100 , 那么存储输入和参数的空间会减少很多 , 计算向量乘法的时间也会减少很多 。 所以降维能够有效的减少计算时间 。 而高维空间的数据很有可能出现分布稀疏的情况 , 即100个样本在100维空间分布肯定是非常稀疏的 , 每增加一维所需的样本个数呈指数级增长 , 这种在高维空间中样本稀疏的问题被称为维数灾难 。 降维可以缓解这种问题 。
No.9 特征工程之降维
文章图片
而为什么可以降维 , 这是因为数据有冗余 , 要么是一些没有用的信息 , 要么是一些重复表达的信息 , 例如一张512*512的图只有中心100*100的区域内有非0值 , 剩下的区域就是没有用的信息 , 又或者一张图是成中心对称的 , 那么对称的部分信息就重复了 。 正确降维后的数据一般保留了原始数据的大部分的重要信息 , 它完全可以替代输入去做一些其他的工作 , 从而很大程度上可以减少计算量 。 例如降到二维或者三维来可视化 。
2从什么角度出发来降维
一般来说可以从两个角度来考虑做数据降维 , 一种是直接提取特征子集做特征抽取 , 例如从512*512图中只取中心部分 , 一种是通过线性/非线性的方式将原来高维空间变换到一个新的空间 , 这里主要讨论后面一种 。 后面一种的角度一般有两种思路来实现 , 一种是基于从高维空间映射到低维空间的projection方法 , 其中代表算法就是PCA , 而其他的LDA、Autoencoder也算是这种 , 主要目的就是学习或者算出一个矩阵变换W , 用这个矩阵与高维数据相乘得到低维数据 。 另一种是基于流形学习的方法 , 流形学习的目的是找到高维空间样本的低维描述 , 它假设在高维空间中数据会呈现一种有规律的低维流形排列 , 但是这种规律排列不能直接通过高维空间的欧式距离来衡量 , 如下左图所示 , 某两点实际上的距离应该是下右图展开后的距离 。 如果能够有方法将高维空间中流形描述出来 , 那么在降维的过程中就能够保留这种空间关系 , 为了解决这个问题 , 流形学习假设高维空间的局部区域仍然具有欧式空间的性质 , 即它们的距离可以通过欧式距离算出(Isomap) , 或者某点坐标能够由临近的节点线性组合算出(LLE) , 从而可以获得高维空间的一种关系 , 而这种关系能够在低维空间中保留下来 , 从而基于这种关系表示来进行降维 , 因此流形学习可以用来压缩数据、可视化、获取有效的距离矩阵等 。
3降维方法流程
【No.9 特征工程之降维】主要的方法是线性映射和非线性映射方法两大类 , 下面介绍几种常用方法 。 其中初学者对公式的理解是其次 , 关键是对原理的理解 , 才对深入学习有所帮助 。
3.1线性映射
线性映射方法的代表方法有:PCA(PrincipalComponentAnalysis) , LDA(DiscriminantAnalysis)
3.1.1主成分分析算法(PCA)
最常用的线性降维方法 , 它的目标是通过某种线性投影 , 将高维的数据映射到低维的空间中表示 , 并期望在所投影的维度上数据的方差最大 , 以此使用较少的数据维度 , 同时保留住较多的原数据点的特性 。
3.1.2线性判别分析(LDA)
判别分析(DiscriminantAnalysis)所追求的目标与PCA不同 , 不是希望保持数据最多的信息 , 而是希望数据在降维后能够很容易地被区分开来 。 后面会介绍LDA的方法 , 是另一种常见的线性降维方法 。 另外一些非线性的降维方法利用数据点的局部性质 , 也可以做到比较好地区分结果 , 例如LLE , LaplacianEigenmap等 。
LDA是一种有监督的(supervised)线性降维算法 。 与PCA保持数据信息不同 , 核心思想:往线性判别超平面的法向量上投影 , 是的区分度最大(高内聚 , 低耦合) 。 LDA是为了使得降维后的数据点尽可能地容易被区分!
3.2非线性映射
非线性映射方法的代表方法有:核方法(核+线性) , 二维化和张量化(二维+线性) , 流形学习(ISOMap , LLE , LPP)
3.2.1基于核的非线性降维
代表方法有:KPCA , KFDA 。
KPCA的基本思想:通过Kerneltrick将PCA投影的过程通过内积的形式表达出来 。 将高维向量?(x)与对应特向β?(x)与对应特向β的内积转换成低维的核函数表示 。
3.2.2流形学习
流形学习的主要算法有:ISOMap(等距映射)、LE(拉普拉斯特征映射)、LLE(局部线性嵌入) 。
流形:直线或者曲线是一维流形 , 平面或者曲面是二维流形 , 更高维之后是多维流形 。 一个流形好比是d维的空间 , 是一个m维空间(m>n)被扭曲之后的空间 。 流形并不是一个“形状” , 而是一个“空间”流形学习的假设:数据采样于某一流形上 。


    推荐阅读