机器学习(二十六) 降维:流形学习

26.1 流形学习(manifold learning)

++"流形"是指局部具有欧氏空间的性质,能用欧氏距离进行距离计算++ 。这给降维方法带来了很大的启发:++若将低维流形嵌入到高维空间,数据样本在高维空间的分布虽然非常复杂,但在局部仍具有欧氏空间的性质++ ,因此,++可以比较容易在局部建立降维映射关系,再设法将局部映射关系推广到全局。++

介绍两种著名的流形学习方法:

26.1.1 等度量映射

等度量映射 (Isometric Mapping,简称Isomap) [Tenenbaum et al.,2000]的基本出发点,是认为低维流形嵌入到高维空间之后,++低维流形上两点之间的距离是S曲面上的"测地线" (geodesic)距离++ :想象一只虫子从一点爬到另一点,++即测地线距离是两点之间的本真距离++。显然,直接在高维空间中计算直线距离是不恰当的。

如何计算测地线距离?可利用流形在局部上具有欧氏空间的性质,对每个点基于欧氏距离找出其近邻点,建立一个近邻连接图。于是,++计算两点之间测地线距离的问题,就转变为计算近邻连接图上两点之间最短路径问题++。如下图可看出,基于近邻距离能很好地逼近低维流形上测地线距离。

lsomap算法描述:

  1. for i = 1, 2, ..., m do

  2. 确定 xi 的k近邻

  3. 将 xi 与k近邻点之间的距离设置为欧氏距离 (与其他点的距离设置为无穷大)

  4. end for

  5. 在近邻连接图上可采用著名**++Dijkstra算法 (详见[附录])++** 或Floyd算法,计算任意两样本点之间的距离 dist(xi, xj)

  6. ++将 dist(xi, xj) 作为MDS算法的输入++

<MDS算法:

(具体可详见我的博客 《机器学习(二十四) 降维 : MDS降维方法与 ...》)

  1. 根据 dist(xi, xj) 代入公式计算 disti.^2, dist.j^2, dist..^2
  2. 根据 bij = -(1/2)(distij^2 -disti·^2 -dist·j^2 +dist··^2) 计算矩阵B
  3. 对矩阵B做特征值分解:

(特征值分解具体算法实例可详见我的博客 《机器学习(二十五) 降维:... 及特征值分解》)
4. 取d'个最大特征值构成对角矩阵Λ',V'为对应的特征向量矩阵
5. 输出:(V')√(Λ') ∈ Rm×d' (每行是一个样本xi在低维空间的投影向量zi)
>

  1. ++return MDS算法的输出++

输出: 样本集在d'低维空间的投影矩阵 Z={z1, z2, ..., zm}

对近邻连接图的构建通常有两种做法:一种是指定近邻点个数,例如欧氏距离最近的k个点为近邻点;另一种是指定距离阈值,距离小于阈值的点被认为是近邻点。两种方式均有不足,例如若近邻范围指定得较大,则距离很远的点可能被误认为近邻,这样就会出现"短路"问题;近邻范围指定得较小,则图中有些区域可能与其他区域不存在连接,这样就出现"孤点"问题。"短路"与"孤点"都会给后续的最短路径计算造成误导。

需注意的是,Isomap仅是得到了训练样本在低维空间的坐标,对于新样本,如何将其映射到低维空间呢?这个问题的常用解决方案目前仅有一个权宜之计,是将训练样本的高维空间坐标作为输入、低维空间坐标作为输出,训练一个回归学习器来对新样本的低维空间坐标进行预测。

附录\] **Dijkstra算法描述:** > 在带权有向图/无向图中,给定起点s,求s到图中任意点x的最短路径。其核心逻辑基于"局部最优解逐步扩展至全局最优解"的思想,算法步骤如下: > > 1. 初始化: > > . 设起点s的距离dist\[s\]=0,与其他所有点的距离初始化为无穷大(∞) > > . 将起点s加入优先队列Q,Q按点距离从小到大排序。 > > 2. 从Q中++++弹出dist\[u\]最小的点u 并加入集合S++++ ,++遍历u的所有近邻节点v:++ > > . ++若u到达v的路径长度 (即dist\[u\]+w(u,v),其中w(u,v)为u与v之间的欧氏距离++ \<边(u,v)的权重\>) ++小于当前dist\[v\],则将v加入Q,更新dist\[v\]=dist\[u\]+w(u,v)++ > > . 若v已在队列中,则更新其距离并调整队列顺序。 > > 3. 重复上述过程: > > 直到Q为空 (即所有相关的节点均被访问),此时集合S即为起点s到各点的最短路径。 #### 26.1.2 局部线性嵌入 Isomap算法是基于近邻样本之间的距离,与此不同,**局部线性嵌入 (Locally Linear Embedding,简称LLE)** ​\[Roweis and Saul,2000\] ++基于邻域内样本之间的线性关系++。 假定样本点 xi 的坐标能通过它的邻域样本 xj, xk, xl 的坐标通过线性组合而重构出来,即 **xi = wij·xj + wik·xk + wil·xl** \。 LLE先为每个样本 xi 找到其近邻集合 Qi,然后计算出基于 Qi 中的样本点对 xi 进行线性重构的系数 wi: min(w1, w2, ..., wm) Σ(i=1,m)\|\|xi - Σ(j∈Qi)wijxj\|\|\^2 s.t. Σ(j∈Qi)wij=1 其中xi和Qi均为已知,令Cjk=(xi-xj)ᵀ(xi-xk),wij有闭式解 ![](https://i-blog.csdnimg.cn/direct/11cafbf477d04aa28c4b272d9648865c.png) LLE在低维空间中保持wi不变,于是xi对应的低维空间坐标zi可通过下式求解: min(z1, z2, ..., zm) Σ(i=1,m)\|\|zi - Σ(j∈Qi)wijzj\|\|\^2 s.t. Σ(j∈Qi)wij=1 令Z=(z1, z2, ..., zm)∈Rd′×m,(W)ij=wij,M=(I-W)ᵀ(I-W),则对zi的求解可重写为: ![](https://i-blog.csdnimg.cn/direct/608c2561901841f3a8c376fce2430690.png) ++此目标可通过特征值分解求解:M最小的d'个特征值对应的特征向量组成的矩阵即为Zᵀ++。 **LLE算法描述:** > 输入:样本集D={x1, x2, ..., xm},近邻个数k,低维空间维数d' > > 1. for i=1, 2, ..., m do > > 2. 确定xi的近邻集合Qi (近邻k) > > 3. 基于 wij 闭式解,求得wij,j∈Qi > > 4. 对于j∉Qi,令wij=0 > > 5. end for > > 6. 基于M=(I-W)ᵀ(I-W) 求得M > > 7. 通过对M进行特征值分解: > > (特征值分解具体算法实例可详见我的博客 [《机器学习(二十五) 降维:... 及特征值分解》](https://blog.csdn.net/FluxMelodySun/article/details/159287650?spm=1001.2014.3001.5501 "《机器学习(二十五) 降维:... 及特征值分解》")) > > 8. return M最小的d'个特征值对应的特征向量组成的矩阵即为Zᵀ > > 输出:样本集D在低维空间的投影Z={z1, z2, ..., zm}

相关推荐
智算菩萨2 小时前
OpenCV色彩空间转换实战:BGR转HSV/LAB的工业应用场景详解(含自动化脚本)
人工智能·python·opencv·计算机视觉·自动化·音视频
码农三叔2 小时前
(11-3)感知-运动耦合与行为理解:行为识别与预测
人工智能·机器人·自动驾驶·agent·人形机器人
南啸天2 小时前
Context Window:上下文窗口”“token 上限
人工智能·ai·状态模式
XMAIPC_Robot2 小时前
基于RK3588 ARM+FPGA的电火花数控硬件平台总体设计(二)
运维·arm开发·人工智能·fpga开发·边缘计算
天行健,君子而铎2 小时前
从人工规则到智能认知:构建自适应、高性能与合规并重的数据分类分级体系
大数据·人工智能·分类
Are_You_Okkk_2 小时前
研发运维一体化:开源知识库落地案例与价值探析
运维·人工智能·架构·开源
俊哥V2 小时前
每日 AI 研究简报 · 2026-03-25
人工智能·ai
疯聊AI2 小时前
在Coze上部署openclaw并连接飞书,加飞书群
人工智能
ejjdhdjdjdjdjjsl2 小时前
halcon算子(模板匹配)
人工智能·深度学习