当前位置: 首页 > backend >正文

从代码学习机器学习 - UMAP降维算法 scikit-learn版

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、UMAP降维算法介绍
  • 二、代码实践
  • 三、代码中可调整的降维参数
  • 总结


前言

在机器学习和数据科学领域,我们经常会遇到高维数据。高维数据虽然包含了丰富的信息,但也带来了“维度灾难”的问题,使得数据分析、可视化和模型训练变得更加困难和低效。降维技术应运而生,它旨在将高维数据转换到低维空间,同时尽可能保留原始数据中的重要信息和结构。主成分分析(PCA)等线性降维方法简单高效,但难以处理非线性结构的数据。流形学习作为非线性降维的重要分支,其中的t-SNE算法在可视化高维数据方面表现出色,但其计算成本较高且难以保留全局结构。近年来,统一流形近似与投影(UMAP)作为一种新的非线性降维算法逐渐流行起来。


一、UMAP降维算法介绍

统一流形近似与投影(UMAP,Uniform Manifold Approximation and Projection)是一种新兴的非线性降维算法,与 t-SNE 类似,旨在将高维数据映射到低维空间,常用于数据可视化和探索性数据分析。UMAP 凭借其在速度、保留数据全局结构方面的优势,近年来受到广泛关注。

核心思想:

UMAP 的理论基础根植于黎曼几何和代数拓扑。其核心思想是假设高维数据 Lying on or near a low-dimensional manifold(躺在或接近一个低维流形上)。算法试图在低维空间中构建一个与高维空间中数据拓扑结构相似的表示。简单来说,UMAP 致力于在降维后的空间中,维持数据点之间的“邻近”关系,使得原本在高维空间中靠近的点在低维空间中依然靠近,同时尽可能地反映数据整体的结构。

算法步骤:

UMAP 算法主要包含以下两个主要步骤:

  1. 构建高维空间的模糊拓扑结构:

    • 对于高维空间中的每个数据点,UMAP 首先寻找其最近邻点。
    • 基于这些最近邻信息,构建一个加权图。图中的边代表数据点之间的连接,边的权重反映了连接的强度或概率。这种权重的计算方式基于黎曼几何中的概念,旨在捕捉数据在局部区域的流形结构。
    • 通过对这个加权图进行处理,UMAP 构建一个“模糊的”拓扑表示,它不是一个 rigid 的结构,而是允许一定的灵活性,以更好地适应数据的内在流形结构。
  2. 在低维空间优化嵌入:

    • 在低维目标空间(例如二维或三维用于可视化)中随机初始化数据点的位置。
    • UMAP 使用了一种基于交叉熵的损失函数,来衡量高维空间中构建的模糊拓扑结构与低维空间中对应点的距离关系的相似性。
    • 通过随机梯度下降等优化方法,调整低维空间中数据点的位置,最小化损失函数。这个优化过程旨在使得低维嵌入能够最好地近似高维空间的拓扑结构。

与 t-SNE 的比较:

UMAP 与 t-SNE 在目标上相似,都是为了在高维数据中发现隐藏的结构并进行可视化,但在方法和性能上存在一些关键差异:

  • 速度: UMAP 通常比 t-SNE 快得多,尤其是在处理大规模数据集时。这是因为 UMAP 在构建高维图时采用了更高效的算法,并且其优化过程也相对更快。
  • 全局结构保留: 相较于 t-SNE 更侧重于保留数据的局部结构,UMAP 在保留数据的全局结构方面表现更好。这意味着 UMAP 生成的低维嵌入更能反映数据整体的聚类和分布情况。
  • 理论基础: UMAP 拥有更坚实的数学理论基础,借鉴了黎曼几何和代数拓扑的概念,这使得其行为更容易理解和预测。
  • 参数敏感性: 尽管 UMAP 也有参数需要调整,但通常来说,UMAP 对参数的敏感性低于 t-SNE,更容易获得稳定的结果。
  • 确定性: 在相同的参数和输入数据下
http://www.xdnf.cn/news/2645.html

相关文章:

  • 【Linux】基于环形队列的生产消费者模型
  • 机器学习第三篇 模型评估(交叉验证)
  • 腾讯云服务器独立ip服务器优点是什么?服务器需要固定ip吗?
  • WebRtc08:WebRtc信令服务器实现
  • 简单分析自动驾驶发展现状与挑战
  • cURL 入门:10 分钟学会用命令行发 HTTP 请求
  • MySQL慢查询分析工具:EXPLAIN
  • Awesome-Embodied-AI:具身AI机器人领域最全资源汇总(含人形机器人,多足机器人,灵巧手等精选资源)
  • C++11线程间通信同步与Linux中MySQL连接池实现
  • XLSX.utils.sheet_to_json设置了blankrows:true,但无法获取到开头的空白行
  • JDBC 使用流程详解
  • rag增强检索-基于关键词检索的混合检索模式
  • vue响应式原理——vue2和vue3的响应式实现区别
  • 非结构化数据解析
  • wsl(8) -- 图形界面
  • 封装el-autocomplete,接口调用
  • Ubuntu安装brew
  • OSI 模型(开放系统互联模型)
  • FEKO许可安装
  • CCF推荐学术会议-C(网络与信息安全):SAC 2025
  • Python学习之路(六)-图像识别
  • 数字化转型的未来趋势:从工具到生态,聚焦生态合作、绿色转型与全球化布局
  • Vue3 Element Plus el-tabs数据刷新方法
  • 更快的图像局部修改与可控生成:Flex.2-preview
  • 航顺 芯片 开发记录 (一) 2025年4月27日19:23:32
  • 【博客系统】博客系统第二弹:实现博客列表接口
  • T检验、F检验及样本容量计算学习总结
  • 通过示例学习:连续 XOR
  • SpringBoot驾校报名小程序实现
  • 详细PostMan的安装和基本使用方法