一. 前言
1. LLE
局部线性嵌入(Locally Linear Embedding,以下简称LLE)是非常重要的降维方法。和传统的PCA,LDA等关注样本方差的降维方法相比,LLE关注于降维时保持样本局部的线性特征(保持原有拓扑结构),由于LLE在降维时保持了样本的局部特征,它广泛的用于图像识别,高维数据可视化等领域。LLE是非线性降维技术,可以说是流形学习方法最经典的算法之一。很多后续的流形学习、降维方法都与LLE有密切联系。
但是LLE在有些情况下也并不适用,如果数据分布在整个封闭的球面上,LLE则不能将它映射到二维空间,且不能保持原有的数据流形。那么我们在处理数据中,首先假设数据不是分布在闭合的球面或者椭球面上。
2. 流形学习
传统的机器学习方法中,数据点和数据点之间的距离和映射函数都是定义在欧式空间中的,然而在实际情况中,这些数据点可能不是分布在欧式空间中的(比如黎曼空间),因此传统欧式空间的度量难以用于真实世界的非线性数据,从而需要对数据的分布引入新的假设。
-
什么是流形?
流形(manifold)是一般几何对象的总称,是局部具有欧式空间性质的空间,包括各种纬度的曲线曲面,例如球体、弯曲的平面等。流形的局部和欧式空间是同构的,可以说流形是线性子空间的一种非线性推广。
数学意义上的流形比较抽象,不过我们可以认为LLE中的流形是一个不闭合的曲面。我们要降维的数据就分布在这个曲面上,且分布比较稠密。一个形象的流形降维过程如下图。我们有一块卷起来的布,我们希望将其展开到一个二维平面,我们希望展开后的布能够在局部保持布结构的特征,其实也就是将其展开的过程,就想两个人将其拉开一样。
-
流形与欧式空间
流形上的点本身是没有坐标的,所以为了表示这些数据点,我们把流形嵌入到外围欧式空间,用外围空间上的坐标来表示流形上的点。例如下面三元组表示一个球,它是一个2维曲面,即球面上只有两个自由度(只由两个变量θ和φ生成的),但我们一般将它嵌入到三维空间,用xyz坐标来表示这个球面。
需要注意的是,流形并不需要依靠嵌入在一个“外围空间”而存在,只是因为高维的数据对于我们这些可怜的低维生物来说总是很难以想像,所以最直观的方法就是嵌入到3维以下的欧式空间。 -
流形降维
流形学习的观点:认为我们所能观察到的数据实际上是由一个低维流行映射到高维空间的。由于数据内部特征的限制,一些高维中的数据会产生维度上的冗余,实际上这些数据只要比较低的维度就能唯一的表示。所以直观上来讲,一个流形好比是一个d维的空间,在一个m维的空间中(m > d)被扭曲之后的结果。需要注意的是流形并不是一个形状,而是一个空间。
假设数据是均匀采样于一个高维欧氏空间中的低维流形,流形学习就是从高维采样数据中恢复低维流形结构,即找到高维空间中的低维流形,并求出相应的嵌入映射,以实现维数约简或者数据可视化。它是从观测到的现象中去寻找事物的本质,找到产生数据的内在规律。 -
流形学习的一般过程
流形学习方法具有一些共同的特征:
1.构造流形上样本点的局部邻域结构。
2.用这些局部邻域结构来将样本点全局的映射到一个低维空间。
不同流形学习之间的不同之处主要是在于构造的局部邻域结构不同以及利用这些局部邻域结构来构造全局的低维嵌入方法的不同。
二. LLE算法
LLE算法认为每一个数据点都可以由其近邻点的线性加权组合构造得到。算法的主要步骤分为三步:
寻找每个样本点的k个近邻点;
流形学习的局部区域具有欧式空间的性质,那么在LLE中就假设某个点xi坐标可以由它周围的K个点的坐标线性组合求出。这个K是人为设定的,具体情况具体分析。需要注意,当k取值较小时,算法不能将数据很好地映射到低维空间,因为当近邻个数太少时,不能很好地反映数据的拓扑结构;但若k取值太大,不同类型的数据开始相互重叠,说明选取的近邻个数太多则不能反映数据的流形信息。由每个样本点的近邻点计算出该样本点的局部重建权值矩阵;
由该样本点的局部重建权值矩阵和其近邻点计算出该样本点的输出值。
具体推导参考这个大佬的文章:写的很细致。
https://www.cnblogs.com/pinard/p/6266408.html
参考:
https://blog.csdn.net/qq_16234613/article/details/79689681