在高维情况下出现的数据样本稀疏、距离计算苦难等问题,是所有机器学习方法共同面临的严重障碍,被称为“维数灾难”。缓解维数灾难的一个重要途径就是降维。
降维目的:因为在原始的高维空间中,包含有冗余信息以及噪音信息,在实际应用例如图像识别中造成了误差,降低了准确率;通过降维,我们希望减少冗余信息所造成的误差,提高识别(或其他应用)的精度。又或者通过降维算法来寻求数据内部的本质结构特征。
降维:通过某种数学变换将原始高位属性空间转为一个低维“子空间”。
目前大部分降维算法处理向量表达的数据,也有一些降维方法处理高阶张量表达的数据。
从什么角度出发来降维?
1.提取特征子集做特征抽取。
2.通过线性、非线性的方式将原来高维空间变换到一个新的空间。特征降维方法:Lasso,PCA,小波分析,LDA,奇异值分解SVD,拉普拉斯特征映射,SparseAutoEncode,局部线性嵌入LLE,等距映射lsomap。
EG:假如一张512512的图只有中心100100的区域内有非0值,剩下的区域就是没有用的信息,又或者一张图是成中心对称的,那么对称的部分信息就重复了。正确降维后的数据一般保留了原始数据的大部分的重要信息,它完全可以替代输入去做一些其他的工作,从而很大程度上可以减少计算量。例如降到二维或者三维来可视化。
主成分分析(PCA)
算法讲解
PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。
PCA计算过程:
1.将原始数据按列组成n行m列矩阵X
2.将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值
3.求出协方差矩阵C=\frac{1}{m}XX^\mathsf{T}
4.求出协方差矩阵的特征值及对应的特征向量
5.将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P
6.Y=PX即为降维到k维后的数据-
PCA实例
线性判别(LDA)
算法讲解
线性判别式分析(Linear Discriminant Analysis),简称LDA,也称为Fisher线性判别(Fisher Linear Discriminant , FLD),是模式识别的经典算法,在1996年有Belhumeur引入模式识别和人工智能领域。
- 用途:数据预处理中的降维,分类任务
- 目标:LDA关心的是能够最大化类间区分度的坐标轴成分,将特征空间(数据集中的多维样本)投影到一个维度更小的k维子空间中,同时保持区分类别的信息。
-
基本思想:是将高维的模式样本投影到最佳鉴别矢量空间,以达到抽取分类信息和压缩特征空间维数的效果,投影后保证模式样本在新的子空间有最大的类间距离和最小的类内距离,即模式在该空间中有最佳的可分离性。
-
与PCA不同,更关心分类而不是方差
流形学习
- 目的:找到高维空间样本的低维描述。
-
算法思想:它假设在高维空间中数据会呈现一种有规律的低维流形排列,但是这种规律排列不能直接通过高维空间的欧式距离来衡量,如下左图所示,某两点实际上的距离应该是下右图展开后的距离。如果能够有方法将高维空间中流形描述出来,那么在降维的过程中就能够保留这种空间关系,为了解决这个问题,流形学习假设高维空间的局部区域仍然具有欧式空间的性质,即它们的距离可以通过欧式距离算出(Isomap),或者某点坐标能够由临近的节点线性组合算出(LLE),从而可以获得高维空间的一种关系,而这种关系能够在低维空间中保留下来,从而基于这种关系表示来进行降维,因此流形学习可以用来压缩数据、可视化、获取有效的距离矩阵等。
局部线性嵌入(LLE)
算法讲解
- ocally linear embedding(LLE)是一种非线性降维算法,它能够使降维后的数据较好地保持原有流形结构。LLE可以说是流形学习方法最经典的工作之一。很多后续的流形学习、降维方法都与LLE有密切联系。
- 见图“流形学习.png”,使用LLE将三维数据映射到二维之后,映射后的数据仍能保持原有的数据流形(红色的点互相接近,蓝色的也互相接近),说明LLE有效地保持了数据原有的流行结构。
- 但是LLE在有些情况下也并不适用,如果数据分布在整个封闭的球面上,LLE则不能将它映射到二维空间,且不能保持原有的数据流形。那么我们在处理数据中,首先假设数据不是分布在闭合的球面或者椭球面上。
-
LLE算法认为每一个数据点都可以由其近邻点的线性加权组合构造得到。算法的主要步骤分为三步:
1.寻找每个样本点的k个近邻点;
2.由每个样本点的近邻点计算出该样本点的局部重建权值矩阵;
3.由该样本点的局部重建权值矩阵和其近邻点计算出该样本点的输出值。具体的算法流程如下图所示:
- PCA
- LDA