四、流形学习
流形学习
manifold learning
是一类借鉴了拓扑流形概念的降维方法。流形是在局部和欧氏空间同胚的空间,它在局部具有欧氏空间的性质,能用欧氏距离进行距离计算。
如果低维流形嵌入到高维空间中,则数据样本在高维空间的分布虽然看起来非常复杂,但是在局部上仍然具有欧氏空间的性质。
当维数被降低至二维或者三维时,能对数据进行可视化展示,因此流形学习也可用于可视化。
流形学习若想取得很好的效果,则必须对邻域保持样本密采样,但这恰恰是高维情形下面临的重大障碍。因此流形学习方法在实践中的降维性能往往没有预期的好。
流形学习对于噪音数据非常敏感。噪音数据可能出现在两个区域连接处:
- 如果没有出现噪音,这两个区域是断路的。
- 如果出现噪音,这两个区域是短路的。
4.1 多维缩放
4.1.1 多维缩放原理
多维缩放
Multiple Dimensional Scaling:MDS
要求原始空间中样本之间的距离在低维空间中得到保持。假设 个样本在原始空间中的距离矩阵为 :
其中 为样本 到样本 的距离。
假设原始样本是在 维空间,目标是获取样本在 维空间且欧氏距离保持不变,其中满足 。
假设样本集在原空间的表示为 ,样本集在降维后空间的表示为 。
所求的正是 矩阵,同时也不知道 。
很明显:并不是所有的低维空间都满足线性映射之后,样本点之间的欧氏距离保持不变。
令 ,即 :
其中 为降维后样本的内积。
则根据降维前后样本的欧氏距离保持不变有:
假设降维后的样本集 被中心化,即 ,则矩阵 的每行之和均为零,每列之和均为零。即:
于是有:
令:
代入 ,有:
右式根据 给出了 ,因此可以根据原始空间中的距离矩阵 求出在降维后空间的内积矩阵 。
现在的问题是已知内积矩阵 ,如何求得矩阵 。
对矩阵 做特征值分解,设 ,其中
为特征值构成的对角矩阵, , 为特征向量矩阵。
假定特征值中有 个非零特征值,它们构成对角矩阵 。令 为对应的特征向量矩阵,则 。
此时有 , 。
在现实应用中为了有效降维,往往仅需要降维后的距离与原始空间中的距离尽可能相等,而不必严格相等。
此时可以取 个最大特征值构成对角矩阵 。令 表示对应的特征向量矩阵,则 。
4.1.2 多维缩放算法
多维缩放
MDS
算法:输入:
- 距离矩阵 。
- 低维空间维数 。
输出:样本集在低维空间中的矩阵 。
算法步骤:
根据下列式子计算 :
根据下式计算矩阵 : 。
对矩阵 进行特征值分解。
取 为 个最大特征值所构成的对角矩阵, 表示对应的特征向量矩阵, 计算: 。
4.2 等度量映射
4.2.1 算法
等度量映射
Isometric Mapping:Isomap
的基本观点是:低维流形嵌入到高维空间后,直接在高维空间中计算直线距离具有误导性。因为在高维空间中的直线距离在低维嵌入流形上是不可达的。低维嵌入流形上,两点之间的距离是“测地线”
geodesic
距离。计算测地线距离的方法是:利用流形在局部上与欧氏空间同胚这个性质,对每个点基于欧氏距离找出它在低维流形上的近邻点, 然后就能建立一个近邻连接图。
- 图中近邻点之间存在链接。
- 图中非近邻点之间不存在链接。
于是计算两点之间测地线距离的问题转变为计算近邻连接图上两点之间的最短路径问题(可以通过著名的
Dijkstra
算法或者Floyd
算法)。在得到任意两点的距离之后,就可以通过
MDS
算法来获得样本点在低维空间中的坐标。
Isomap
算法:输入:
- 样本集
- 近邻参数 。
- 低维空间维数 。
输出:样本集在低维空间中的矩阵 。
算法步骤:
- 对每个样本点 ,计算它的 近邻。同时将 与 它的 近邻的距离设置为欧氏距离,与其他点的距离设置为无穷大。
- 调用最短路径算法计算任意两个样本点之间的距离,获得距离矩阵 。
- 调用多维缩放
MDS
算法,获得样本集在低维空间中的矩阵 。
4.2.2 性质
Isomap
算法有个很大的问题:对于新样本,如何将其映射到低维空间?常用的方法是:
- 将训练样本的高维空间坐标作为输入,低维空间坐标作为输出,训练一个回归学习器。
- 用这个回归学习器来对新样本的低维空间进行预测。
这仅仅是一个权宜之计,但是目前并没有更好的办法。如果将新样本添加到样本集中,重新调用
Isomap
算法,则会得到一个新的低维空间。- 一方面计算量太大(每个新样本都要调用一次
Isomap
算法)。 - 另一方面每次降维后的空间都在变化,不利于降维后的训练过程。
对于近邻图的构建有两种常用方案:
- 一种方法是指定近邻点个数,比如指定距离最近的 个点为近邻点 。这样得到的近邻图称作 近邻图。
- 另一种方法是指定距离阈值 ,距离小于 的点被认为是近邻点。这样得到的近邻图称作 近邻图。
这两种方案都有不足:
- 如果近邻范围过大,则距离很远的点也被误认作近邻,这就是“短路”问题。
- 如果近邻范围过小,则图中有些区域可能与其他区域不存在连接,这就是“断路”问题 。 短路问题和断路问题都会给后续的最短路径计算造成误导。
4.3 局部线性嵌入 LLE
与
Isomap
试图保持邻域内样本之间的距离不同,局部线性嵌入Locally Linear Embedding:LLE
试图保持邻域内样本之间的线性关系。这种线性保持在二维空间中就是保持共线性,三维空间中就是保持共面性。
假定样本点 的坐标能够通过它的邻域样本 进行线性组合而重构出来,即: 。
LLE
算法希望这种关系在低维空间中得到保持。
4.3.1 重构系数求解
LLE
首先为每个样本 找到其近邻点下标集合 , 然后计算基于 中的样本点对 进行线性重构的系数 。定义样本集重构误差为( 为 的分量):
目标是样本集重构误差最小,即:
这样的解有无数个,对权重增加约束,进行归一化处理。即:
现在就是求解最优化问题:
该最优化问题有解析解。令 ,则可以解出:
其中:
- 刻画了 到 的差向量,与 到 的差向量的内积。
- 刻画了这些内积中,与 相关的内积的比例。
4.3.2 低维空间保持
求出了线性重构的系数 之后,
LLE
在低维空间中保持 不变。设 对应的低维坐标 ,已知线性重构的系数 ,定义样本集在低维空间中重构误差为:
现在的问题是要求出 ,从而使得上式最小。即求解:
令 ,其中 为低维空间的维数( 为原始样本所在的高维空间的维数)。令
定义 ,于是最优化问题可重写为: 。
该最优化问题有无数个解。添加约束 ,于是最优化问题为:
该最优化问题可以通过特征值分解求解:选取 最小的 个特征值对应的特征向量组成的矩阵即为 。
LLE
中出现了两个重构误差。- 第一个重构误差:为了在原始空间中求解线性重构的系数 。目标是:基于 中的样本点对 进行线性重构,使得重构误差最小。
- 第二个重构误差:为了求解样本集在低维空间中的表示 。目标是:基于线性重构的系数 ,将 中的样本点对 进行线性重构,使得重构误差最小。
4.3.2 LLE 算法
LLE
算法:输入:
- 样本集 。
- 近邻参数 。
- 低维空间维数 。
输出:样本集在低维空间中的矩阵 。
算法步骤:
对于样本集中的每个点 ,执行下列操作:
确定 的 近邻,获得其近邻下标集合 。
对于 , 根据下式计算 :
对于 ,
根据 构建矩阵 。
计算 。
对 进行特征值分解,取其最小的 个特征值对应的特征向量,即得到样本集在低维空间中的矩阵 。