四、流形学习

  1. 流形学习manifold learning是一类借鉴了拓扑流形概念的降维方法。

  2. 流形是在局部和欧氏空间同胚的空间,它在局部具有欧氏空间的性质,能用欧氏距离进行距离计算。

    如果低维流形嵌入到高维空间中,则数据样本在高维空间的分布虽然看起来非常复杂,但是在局部上仍然具有欧氏空间的性质。

  3. 当维数被降低至二维或者三维时,能对数据进行可视化展示,因此流形学习也可用于可视化。

  4. 流形学习若想取得很好的效果,则必须对邻域保持样本密采样,但这恰恰是高维情形下面临的重大障碍。因此流形学习方法在实践中的降维性能往往没有预期的好。

  5. 流形学习对于噪音数据非常敏感。噪音数据可能出现在两个区域连接处:

    • 如果没有出现噪音,这两个区域是断路的。
    • 如果出现噪音,这两个区域是短路的。

4.1 多维缩放

4.1.1 多维缩放原理

  1. 多维缩放Multiple Dimensional Scaling:MDS要求原始空间中样本之间的距离在低维空间中得到保持。

  2. 假设 四、流形学习 - 图1 个样本在原始空间中的距离矩阵为 四、流形学习 - 图2:

    四、流形学习 - 图3

    其中 四、流形学习 - 图4 为样本 四、流形学习 - 图5 到样本 四、流形学习 - 图6 的距离。

    假设原始样本是在 四、流形学习 - 图7 维空间,目标是获取样本在 四、流形学习 - 图8 维空间且欧氏距离保持不变,其中满足 四、流形学习 - 图9

    假设样本集在原空间的表示为 四、流形学习 - 图10 ,样本集在降维后空间的表示为 四、流形学习 - 图11

    四、流形学习 - 图12

    所求的正是 四、流形学习 - 图13 矩阵,同时也不知道 四、流形学习 - 图14

    很明显:并不是所有的低维空间都满足线性映射之后,样本点之间的欧氏距离保持不变。

  3. 四、流形学习 - 图15 ,即 :

    四、流形学习 - 图16

    其中 四、流形学习 - 图17 为降维后样本的内积。

    则根据降维前后样本的欧氏距离保持不变有:

    四、流形学习 - 图18

    假设降维后的样本集 四、流形学习 - 图19 被中心化,即 四、流形学习 - 图20,则矩阵 四、流形学习 - 图21 的每行之和均为零,每列之和均为零。即:

    四、流形学习 - 图22

    于是有:

    四、流形学习 - 图23

    令:

    四、流形学习 - 图24

    代入 四、流形学习 - 图25 ,有:

    四、流形学习 - 图26

    右式根据 四、流形学习 - 图27 给出了 四、流形学习 - 图28,因此可以根据原始空间中的距离矩阵 四、流形学习 - 图29 求出在降维后空间的内积矩阵 四、流形学习 - 图30

    现在的问题是已知内积矩阵 四、流形学习 - 图31 ,如何求得矩阵 四、流形学习 - 图32

  4. 对矩阵 四、流形学习 - 图33 做特征值分解,设 四、流形学习 - 图34,其中

    四、流形学习 - 图35

    为特征值构成的对角矩阵, 四、流形学习 - 图36四、流形学习 - 图37 为特征向量矩阵。

    假定特征值中有 四、流形学习 - 图38个非零特征值,它们构成对角矩阵 四、流形学习 - 图39。令 四、流形学习 - 图40 为对应的特征向量矩阵,则 四、流形学习 - 图41

    此时有 四、流形学习 - 图42四、流形学习 - 图43

  5. 在现实应用中为了有效降维,往往仅需要降维后的距离与原始空间中的距离尽可能相等,而不必严格相等。

    此时可以取 四、流形学习 - 图44 个最大特征值构成对角矩阵 四、流形学习 - 图45 。令 四、流形学习 - 图46 表示对应的特征向量矩阵,则 四、流形学习 - 图47

4.1.2 多维缩放算法

  1. 多维缩放MDS算法:

    • 输入:

      • 距离矩阵 四、流形学习 - 图48
      • 低维空间维数 四、流形学习 - 图49
    • 输出:样本集在低维空间中的矩阵 四、流形学习 - 图50

    • 算法步骤:

      • 根据下列式子计算 四、流形学习 - 图51

        四、流形学习 - 图52

      • 根据下式计算矩阵 四、流形学习 - 图53四、流形学习 - 图54

      • 对矩阵 四、流形学习 - 图55 进行特征值分解。

      • 四、流形学习 - 图56四、流形学习 - 图57 个最大特征值所构成的对角矩阵, 四、流形学习 - 图58 表示对应的特征向量矩阵, 计算: 四、流形学习 - 图59

4.2 等度量映射

4.2.1 算法

  1. 等度量映射 Isometric Mapping:Isomap的基本观点是:低维流形嵌入到高维空间后,直接在高维空间中计算直线距离具有误导性。因为在高维空间中的直线距离在低维嵌入流形上是不可达的。

  2. 低维嵌入流形上,两点之间的距离是“测地线”geodesic距离。

    • 计算测地线距离的方法是:利用流形在局部上与欧氏空间同胚这个性质,对每个点基于欧氏距离找出它在低维流形上的近邻点, 然后就能建立一个近邻连接图。

      • 图中近邻点之间存在链接。
      • 图中非近邻点之间不存在链接。
    • 于是计算两点之间测地线距离的问题转变为计算近邻连接图上两点之间的最短路径问题(可以通过著名的Dijkstra算法或者Floyd算法)。

    • 在得到任意两点的距离之后,就可以通过MDS算法来获得样本点在低维空间中的坐标。

  3. Isomap算法:

    • 输入:

      • 样本集 四、流形学习 - 图60
      • 近邻参数 四、流形学习 - 图61
      • 低维空间维数 四、流形学习 - 图62
    • 输出:样本集在低维空间中的矩阵 四、流形学习 - 图63

    • 算法步骤:

      • 对每个样本点 四、流形学习 - 图64 ,计算它的 四、流形学习 - 图65 近邻。同时将 四、流形学习 - 图66 与 它的 四、流形学习 - 图67 近邻的距离设置为欧氏距离,与其他点的距离设置为无穷大。
      • 调用最短路径算法计算任意两个样本点之间的距离,获得距离矩阵 四、流形学习 - 图68
      • 调用多维缩放MDS算法,获得样本集在低维空间中的矩阵 四、流形学习 - 图69

4.2.2 性质

  1. Isomap算法有个很大的问题:对于新样本,如何将其映射到低维空间?

    常用的方法是:

    • 将训练样本的高维空间坐标作为输入,低维空间坐标作为输出,训练一个回归学习器。
    • 用这个回归学习器来对新样本的低维空间进行预测。

    这仅仅是一个权宜之计,但是目前并没有更好的办法。如果将新样本添加到样本集中,重新调用Isomap算法,则会得到一个新的低维空间。

    • 一方面计算量太大(每个新样本都要调用一次Isomap算法)。
    • 另一方面每次降维后的空间都在变化,不利于降维后的训练过程。
  2. 对于近邻图的构建有两种常用方案:

    • 一种方法是指定近邻点个数,比如指定距离最近的 四、流形学习 - 图70 个点为近邻点 。这样得到的近邻图称作 四、流形学习 - 图71 近邻图。
    • 另一种方法是指定距离阈值 四、流形学习 - 图72 ,距离小于 四、流形学习 - 图73 的点被认为是近邻点。这样得到的近邻图称作 四、流形学习 - 图74 近邻图。

    这两种方案都有不足:

    • 如果近邻范围过大,则距离很远的点也被误认作近邻,这就是“短路”问题。
    • 如果近邻范围过小,则图中有些区域可能与其他区域不存在连接,这就是“断路”问题 。 短路问题和断路问题都会给后续的最短路径计算造成误导。

4.3 局部线性嵌入 LLE

  1. Isomap试图保持邻域内样本之间的距离不同,局部线性嵌入Locally Linear Embedding:LLE试图保持邻域内样本之间的线性关系。

    这种线性保持在二维空间中就是保持共线性,三维空间中就是保持共面性。

  2. 假定样本点 四、流形学习 - 图75 的坐标能够通过它的邻域样本 四、流形学习 - 图76 进行线性组合而重构出来,即:四、流形学习 - 图77LLE算法希望这种关系在低维空间中得到保持。

4.3.1 重构系数求解

  1. LLE首先为每个样本 四、流形学习 - 图78 找到其近邻点下标集合 四、流形学习 - 图79, 然后计算基于 四、流形学习 - 图80 中的样本点对 四、流形学习 - 图81 进行线性重构的系数 四、流形学习 - 图82

    定义样本集重构误差为( 四、流形学习 - 图83四、流形学习 - 图84 的分量):

    四、流形学习 - 图85

    目标是样本集重构误差最小,即:

    四、流形学习 - 图86

  2. 这样的解有无数个,对权重增加约束,进行归一化处理。即:

    四、流形学习 - 图87

    现在就是求解最优化问题:

    四、流形学习 - 图88

    该最优化问题有解析解。令 四、流形学习 - 图89 ,则可以解出:

    四、流形学习 - 图90

    其中:

    • 四、流形学习 - 图91 刻画了 四、流形学习 - 图92四、流形学习 - 图93 的差向量,与 四、流形学习 - 图94四、流形学习 - 图95 的差向量的内积。
    • 四、流形学习 - 图96 刻画了这些内积中,与 四、流形学习 - 图97 相关的内积的比例。

    lle

4.3.2 低维空间保持

  1. 求出了线性重构的系数 四、流形学习 - 图99 之后, LLE在低维空间中保持 四、流形学习 - 图100 不变。

    四、流形学习 - 图101 对应的低维坐标 四、流形学习 - 图102 ,已知线性重构的系数 四、流形学习 - 图103 ,定义样本集在低维空间中重构误差为:

    四、流形学习 - 图104

    现在的问题是要求出 四、流形学习 - 图105 ,从而使得上式最小。即求解:

    四、流形学习 - 图106

  2. 四、流形学习 - 图107,其中 四、流形学习 - 图108 为低维空间的维数( 四、流形学习 - 图109 为原始样本所在的高维空间的维数)。令

    四、流形学习 - 图110

    定义 四、流形学习 - 图111 ,于是最优化问题可重写为:四、流形学习 - 图112

    该最优化问题有无数个解。添加约束 四、流形学习 - 图113 ,于是最优化问题为:

    四、流形学习 - 图114

    该最优化问题可以通过特征值分解求解:选取 四、流形学习 - 图115 最小的 四、流形学习 - 图116 个特征值对应的特征向量组成的矩阵即为 四、流形学习 - 图117

  3. LLE 中出现了两个重构误差。

    • 第一个重构误差:为了在原始空间中求解线性重构的系数 四、流形学习 - 图118 。目标是:基于 四、流形学习 - 图119 中的样本点对 四、流形学习 - 图120 进行线性重构,使得重构误差最小。
    • 第二个重构误差:为了求解样本集在低维空间中的表示 四、流形学习 - 图121 。目标是:基于线性重构的系数 四、流形学习 - 图122 ,将 四、流形学习 - 图123 中的样本点对 四、流形学习 - 图124 进行线性重构,使得重构误差最小。

4.3.2 LLE 算法

  1. LLE算法:

    • 输入:

      • 样本集 四、流形学习 - 图125
      • 近邻参数 四、流形学习 - 图126
      • 低维空间维数 四、流形学习 - 图127
    • 输出:样本集在低维空间中的矩阵 四、流形学习 - 图128

    • 算法步骤:

      • 对于样本集中的每个点 四、流形学习 - 图129,执行下列操作:

        • 确定 四、流形学习 - 图130四、流形学习 - 图131 近邻,获得其近邻下标集合 四、流形学习 - 图132

        • 对于 四、流形学习 - 图133, 根据下式计算 四、流形学习 - 图134

          四、流形学习 - 图135

        • 对于 四、流形学习 - 图136四、流形学习 - 图137

      • 根据 四、流形学习 - 图138 构建矩阵 四、流形学习 - 图139

      • 计算 四、流形学习 - 图140

      • 四、流形学习 - 图141 进行特征值分解,取其最小的 四、流形学习 - 图142 个特征值对应的特征向量,即得到样本集在低维空间中的矩阵 四、流形学习 - 图143