【机器学习】非线性降维、流形学习的基本概念、如何选择合适的非线性降维方法以及非线性降维的流形学习实例(含python代码)

news2024/11/15 4:25:48

引言

非线性降维是机器学习中用来处理高维数据的一种方法,特别是当数据包含复杂的非线性结构时

文章目录

  • 引言
  • 一、非线性降维
    • 1.1 目的
    • 1.2 非线性降维方法
      • 1.2.1 核主成分分析 (Kernel PCA)
      • 1.2.2 局部线性嵌入 (LLE)
      • 1.2.3 等距映射 (Isomap)
      • 1.2.4 拉普拉斯特征映射 (LE)
      • 1.2.5 t-分布邻域嵌入 (t-SNE)
      • 1.2.6 自编码器 (Autoencoders)
      • 1.2.7 多维尺度分析 (MDS) 的非线性版本
      • 1.2.8 局部切空间对齐 (LTSA)
      • 1.2.9 曲线和曲面拟合
      • 1.2.10 基于流形的方法、
      • 1.2.11 基于深度学习的方法、
    • 1.3 挑战
    • 1.3 总结
  • 二、流形学习
    • 2.1 定义
    • 2.2 核心思想
    • 2.3 目的
    • 2.4 流形学习方法
      • 2.4.1 局部线性嵌入(LLE, Locally Linear Embedding)
      • 2.4.2 等距映射(Isomap)
      • 2.4.3 拉普拉斯特征映射(LE, Laplacian Eigenmaps)
      • 2.4.4 t-分布邻域嵌入(t-SNE)
      • 2.4.5 局部切空间对齐(LTSA, Local Tangent Space Alignment)
    • 2.5 流形学习的适用场景
  • 三、如何选择合适的非线性降维方法
    • 3.1 数据特性
    • 3.2 降维目的
    • 3.3 计算资源
    • 3.4 算法参数
    • 3.5 可扩展性
  • 四、选择合适的非线性降维方法的步骤
    • 4.1 理解数据
    • 4.2 实验多种方法
    • 4.3 评估性能
    • 4.4 考虑计算成本
    • 4.5 参数调整
    • 4.6 可解释性
    • 4.7 社区和实践
  • 五、非线性降维的流形学习实例
    • 5.1 代码示例
    • 5.2 代码解释

一、非线性降维

1.1 目的

非线性降维技术试图找到一种方法,将数据从高维空间映射到一个低维空间,同时保留数据的结构和重要特征

1.2 非线性降维方法

1.2.1 核主成分分析 (Kernel PCA)

  • 通过使用核函数,将数据隐式映射到高维特征空间,然后在这个空间中执行PCA。这种方法能够捕捉数据中的非线性关系

1.2.2 局部线性嵌入 (LLE)

  • 通过保持每个数据点与其近邻之间的线性关系来进行降维。它寻找每个点的最佳线性重构,并在低维空间中保持这些关系

1.2.3 等距映射 (Isomap)

  • 结合了多维尺度分析(MDS)和图论,通过计算数据点之间的最短路径(而不是直接欧几里得距离)来估计全局距离,然后使用这些距离进行降维

1.2.4 拉普拉斯特征映射 (LE)

  • 通过构建一个加权图来保持数据的局部邻域结构,并使用图拉普拉斯算子的特征向量来进行降维

1.2.5 t-分布邻域嵌入 (t-SNE)

  • 主要用于数据可视化,它使用高斯分布来模拟高维空间中的相似性,并在低维空间中使用t-分布来保持这种相似性。t-SNE特别擅长揭示数据的局部结构

1.2.6 自编码器 (Autoencoders)

  • 一种神经网络,通过学习一个编码函数将数据编码到一个低维表示,然后通过一个解码函数重建数据。自编码器可以包含非线性激活函数,从而实现非线性降维

1.2.7 多维尺度分析 (MDS) 的非线性版本

  • 通过修改传统的MDS算法来处理非线性降维问题

1.2.8 局部切空间对齐 (LTSA)

  • 旨在找到每个数据点的局部切空间,并将这些切空间对齐到一个全局的低维空间

1.2.9 曲线和曲面拟合

  • 通过拟合曲线或曲面来近似数据集中的非线性关系,并使用这些拟合的低维表示来降维

1.2.10 基于流形的方法、

  • 包括各种流形学习方法,如Hessian特征映射(HE)、局部切空间对齐(LTSA)和拉普拉斯特征映射(LE)

1.2.11 基于深度学习的方法、

  • 如深度自编码器、变分自编码器(VAEs)和生成对抗网络(GANs)等,它们可以通过学习数据的深层次表示来进行降维

1.3 挑战

非线性降维技术面临的挑战包括:

  • 计算复杂度:非线性降维算法通常比线性方法更复杂,计算成本更高
  • 局部最小值:某些非线性降维方法可能会陷入局部最小值,因此需要仔细选择初始化和优化策略
  • 过拟合:对于具有大量参数的非线性方法,存在过拟合的风险,特别是在小数据集上

1.3 总结

需要注意的是:

  • 流形学习方法通常对数据的局部结构很敏感,并且可能不适用于所有类型的数据,它们可能不如其他降维技术(如主成分分析PCA)那样高效,尤其是在处理大规模数据集时
  • 如果数据呈现出明显的流形结构,则LLE、Isomap或LE可能是合适的选择
  • 如果目标是数据可视化,t-SNE通常能提供非常好的效果

总的来说,非线性降维是处理复杂高维数据的有力工具,但需要根据具体情况进行适当的选择和调整,每种方法都有其优势和局限性,适用于不同的数据特性和应用场景。选择合适的非线性降维方法通常需要考虑数据的规模、结构复杂性、计算资源和降维目标

二、流形学习

2.1 定义

流形学习(Manifold Learning)是机器学习中的一种技术,它主要用于高维数据的降维

2.2 核心思想

流形学习的核心思想是假设高维数据实际上是由低维结构嵌入在高维空间中的,这种低维结构被称为流形

2.3 目的

流形学习的目标就是发现并利用这种低维结构来降低数据的维数,同时保持数据的内在结构和几何属性

2.4 流形学习方法

2.4.1 局部线性嵌入(LLE, Locally Linear Embedding)

  • LLE试图保持每个数据点与其近邻的线性关系。它首先在每个数据点附近找到一组近邻,然后尝试用这些近邻的线性组合来重建该点,最后将这些线性关系保持到低维空间

2.4.2 等距映射(Isomap)

  • Isomap结合了多维尺度分析(MDS)和图论的思想。它通过计算数据点之间的最短路径(而不是直接距离)来估计全局距离,然后使用这些距离进行降维

2.4.3 拉普拉斯特征映射(LE, Laplacian Eigenmaps)

  • LE通过构建一个加权图来保持数据点的局部邻域结构。在这个图中,每个数据点是一个顶点,边权重反映了点之间的相似性。降维后的数据保持了图的几何结构

2.4.4 t-分布邻域嵌入(t-SNE)

  • t-SNE是一种非线性技术,主要用于数据的可视化。它使用高斯分布来建模每个数据点与其近邻之间的相似性,然后在低维空间中使用更重的尾部的t-分布来保持这种相似性

2.4.5 局部切空间对齐(LTSA, Local Tangent Space Alignment)

  • LTSA旨在找到每个数据点的局部切空间,并将这些切空间对齐到一个全局的低维空间

2.5 流形学习的适用场景

  • 数据可视化:将高维数据降至2维或3维,以便可以直观地观察数据结构和模式
  • 预处理:作为机器学习管道的一部分,流形学习可用于降维,以减少计算复杂度和过拟合的风险
  • 特征提取:在某些情况下,流形学习可以用来提取有意义的特征,这些特征可以用于后续的分类或回归任务

三、如何选择合适的非线性降维方法

选择合适的非线性降维方法是一个复杂的过程,通常需要考虑以下因素:

3.1 数据特性

  • 结构复杂性:如果数据具有明显的非线性结构,如流形结构,则LLE、Isomap、LE或t-SNE可能是更好的选择
  • 局部与全局结构:如果数据的局部结构比全局结构更重要,t-SNE可能更合适;如果需要保持全局结构,则Isomap可能更好
  • 噪声水平:一些方法对噪声更敏感,例如t-SNE可能会在存在噪声的情况下放大局部结构

3.2 降维目的

  • 可视化:如果目标是数据可视化,t-SNE通常能提供非常好的效果
  • 预处理:如果降维是为了后续的机器学习任务,可能需要选择能保留更多原始数据信息的方法,如核PCA或自编码器

3.3 计算资源

  • 计算复杂度:一些方法(如t-SNE)计算成本较高,特别是对于大数据集
  • 运行时间:如果实时处理或快速迭代是必要的,需要选择计算效率更高的方法

3.4 算法参数

  • 参数数量和调整:一些方法有更多的参数需要调整,这可能需要更多的经验和对数据的理解

3.5 可扩展性

  • 大数据集:对于大规模数据集,需要选择可以高效扩展的方法

四、选择合适的非线性降维方法的步骤

4.1 理解数据

通过可视化、统计数据分析和特征工程来理解数据的性质

4.2 实验多种方法

尝试不同的非线性降维方法,并比较它们在保持数据结构方面的效果

4.3 评估性能

如果降维是为了后续的机器学习任务,评估每种方法对任务性能的影响

4.4 考虑计算成本

评估每种方法的计算成本,确保它适合你的计算资源

4.5 参数调整

对于每种方法,可能需要调整参数来优化降维结果

4.6 可解释性

考虑是否需要降维结果具有可解释性,某些方法(如特征选择)可能提供更好的解释性

4.7 社区和实践

查看相关文献和社区实践,了解哪些方法在类似的数据上表现良好

五、非线性降维的流形学习实例

下面是一个使用Python进行非线性降维的流形学习实例

  • 我们将使用scikit-learn库中的Manifold模块来实现局部线性嵌入(LLE)和等距映射(Isomap)两种方法,并使用著名的Swiss Roll数据集来演示

5.1 代码示例

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_swiss_roll
from sklearn.manifold import LocallyLinearEmbedding, Isomap
# 生成Swiss Roll数据集
X, color = make_swiss_roll(n_samples=1500)
# 使用LLE进行降维
lle = LocallyLinearEmbedding(n_components=2)
X_lle = lle.fit_transform(X)
# 使用Isomap进行降维
isomap = Isomap(n_components=2)
X_isomap = isomap.fit_transform(X)
# 绘制原始数据
fig, ax = plt.subplots(1, 3, figsize=(15, 5))
ax[0].scatter(X[:, 0], X[:, 1], X[:, 2], c=color, cmap=plt.cm.Spectral)
ax[0].set_title("Original Data")
# 绘制LLE降维结果
ax[1].scatter(X_lle[:, 0], X_lle[:, 1], c=color, cmap=plt.cm.Spectral)
ax[1].set_title("LLE")
# 绘制Isomap降维结果
ax[2].scatter(X_isomap[:, 0], X_isomap[:, 1], c=color, cmap=plt.cm.Spectral)
ax[2].set_title("Isomap")
# 显示图形
plt.show()

输出结果:
在这里插入图片描述

5.2 代码解释

  • 首先生成了一个Swiss Roll数据集
  • 然后分别使用LLE和Isomap方法将其降至二维
  • 最后,我们绘制了原始数据以及两种降维方法的结果

请注意,Swiss Roll数据集是一个三维数据集,其中数据点在三维空间中形成了一个卷曲的形状。通过降维到二维,我们可以更容易地看到数据的内在结构。在这个例子中,我们使用颜色来表示原始数据中的第三个维度,以便于在二维图中区分不同的点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2081275.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

3秒AI写真出图,Stable Diffusion2024升级版+使用教程来了!(无需安装,解压即用)

要说今年摄影圈最大的新秀 那妥妥的就Stable Diffusion 比如下面的写真照片 你敢信这是SD绘画生成的? 就在刚刚它又全面升级了 新版无需安装,直接解压就能用 比之前推送的更加智能、快速和简单 另外还特意为大家准备了 Stable Diffusion 人工智能…

新书速览|Altium Designer 24入门与案例实践:视频教学版

本书内容 《Altium Designer 24入门与案例实践:视频教学版》以当前最新的板卡级设计软件Altium Designer 24为基础,全面讲述电路设计的各种基本操作方法与技巧,并演示两个大型综合实战案例。《Altium Designer 24入门与案例实践:视频教学版》配套示例源文…

RAG的基石:大语言模型文本向量化能力对比

什么是具象的高维向量空间?也许这是一个,在不同的平行空间里面,对不同的物体有各自的表示… 一、概述 大家都比较关心大语言模型的能力,但往往容易忽略其向量化(Embedding)的能力。在RAG应用中&#xff0c…

USB3202N多功能数据采集卡16位模拟量250K频率LabVIEW采集卡

品牌:阿尔泰科技 系列:多功能数据采集卡 概述: USB3202N多功能数据采集卡,LabVIEW无缝连接,提供图形化API函数,提供8通道(RSE、NRSE)、4通道(DIFF)模拟量输…

计算机毕业设计hadoop+spark+hive物流预测系统 物流大数据分析平台 物流信息爬虫 物流大数据 机器学习 深度学习

流程: 1.Python爬虫采集物流数据等存入mysql和.csv文件; 2.使用pandasnumpy或者MapReduce对上面的数据集进行数据清洗生成最终上传到hdfs; 3.使用hive数据仓库完成建库建表导入.csv数据集; 4.使用hive之hive_sql进行离线计算&…

matlab可以把多个二维图合成为三维瀑布图吗??

🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收…

小皮服务器无法启动Mysql服务器

一、用小皮服务器启动mysq,启动后几秒钟就停止了 出现了这种情况怎么办? 二、因为电脑已经启动了mysql服务 关闭掉已启动的mysql服务就好 在电脑任务栏的空白处右键,出现‘任务管理器’ 找到mysql服务,右键“结束任务” 三、再…

【论文笔记】独属于CV的注意力机制CBAM-Convolutional Block Attention Module

目录 写在前面 一、基数和宽度 二、通道注意力模块(Channel Attention Module) 三、空间注意力模块(Spatial Attention Module) 四、CBAM(Convolutional Block Attention Module) 五、总结 写在前面 …

调试JS代码

一、vs code调试 1.在vs code中如何进行代码调试? 首先,在vs code中配置 auto-attach,通过ctrl shift p,输入 auto-attach。设置成smart(智能)。如下图: 然后,对需要调试的语句在…

AWS子账号的创建与管理:提升安全性与灵活性

在现代云计算环境中,亚马逊网络服务(AWS)提供了强大的功能,允许用户创建和管理子账号。通过合理地使用子账号,企业可以有效地提升安全性、管理复杂性以及资源的灵活性。我们九河云一起细探讨AWS子账号的创建方法。 为什…

2-78 基于matlab-GUI的DTW算法语音识别

基于matlab-GUI的DTW算法语音识别,具有16页分析报告。能识别0-9数字,正确率90。预处理过程包括预滤波、采样和量化、分帧、加窗、预加重、端点检测等。经过预处理的语音数据进行特征参数提取。在训练阶段,将特征参数处理之后,每个…

双目相机实现物体尺寸的精准测量

双目视觉系统是一种模拟人类双眼的立体视觉原理,通过两个摄像头从不同的角度捕捉同一场景的图像,从而获取目标物体的三维信息。 目录 1,设备选型 2,双目相机测量的现实意义 2.1 技术优势 2.2 面对的挑战 2.3 发展趋势 3&am…

黑神话的大头怪幽魂很简单! 黑神话悟空幽魂打法攻略

《黑神话:悟空》已经发售了三天,玩家们也已经踏上了“天命人”的路程。不过因游戏Boss太难打成为取经路上的拦路虎,有不少玩家被幽魂挡住了脚步,并纷纷叫苦。 近日,“你希望黑神话悟空出难度调节吗”这个话题也登上微博…

MyBatis查询 ▎修改 ▎删除

前言: 在现代应用开发中,数据库操作是核心环节。MyBatis 作为一款灵活的持久层框架,提供了直接编写 SQL 语句的能力,避免了其他 ORM 框架可能带来的性能和功能限制。MyBatis 的查询、修改和删除操作是开发者必须掌握的基本技能。这些操作不仅…

基差、升水与贴水,股指期货市场的重要概念解析

在股指期货市场中,基差、升水和贴水是三个至关重要的概念。它们不仅影响着市场的价格动态,还对套利和套期保值者的策略制定具有重大意义。本文将详细解析这三个概念,帮助读者更好地理解期货市场的运作机制。 一、基差:现货与期货…

公司叫你写three.js 编辑器不会写,我这有思路

低代码------就是将一些复用的流程和操作进行封装简化使用,目前 web 二维 在市场上已经非常普遍,而web 三维低代码普及率并不是很高。 这是我早期创造three低代码内核的一个思维导图 开源地址 https://github.com/z2586300277/three-editor 预览查看 …

如何将ip地址随机更换

在数字化时代,‌IP地址作为网络身份的重要标识,‌其管理和使用方式对于个人和企业都具有重要意义。‌在某些场景下,‌如‌突破地域限制、‌数据抓取或隐私保护等,‌用户可能需要实现IP地址的随机更换。‌本文将深入探讨如何将IP地…

Citrix ADC Release 13.1 Build 54.29 (nCore, VPX, SDX, CPX, BLX) - 混合多云应用交付控制器

Citrix ADC Release 13.1 Build 54.29 (nCore, VPX, SDX, CPX, BLX) - 混合多云应用交付控制器 Citrix ADC - 混合多云应用交付控制器 请访问原文链接:https://sysin.org/blog/citrix-adc-13/,查看最新版。原创作品,转载请保留出处。 作者…

电脑开机之后进入emergency mode

电脑开机之后进入emergency mode 本章只针对统信系统 emergency mode 统信UOS Cannot open access to console. The root account is locked 故障现象 电脑开机之后进入emergency mode,提示Cannot open access to console. The root account is locked,按回车也无法进系…

SQLi-LABS 通关攻略【36-40】

SQLi-LABS 36关 1.本关依旧是宽字节注入 2.测试闭合方式 ?id1 //正常显示 ?id1 //显示错误 ?id1%df //显示错误 ?id1%df -- //显示正常 3.测试回显点 ?id-1%df%27…