首页 > 其他分享 >【自学笔记】流形学习

【自学笔记】流形学习

时间:2024-11-30 12:59:50浏览次数:11  
标签:流形 映射 笔记 学习 嵌入 varphi 自学 数据

文章目录

流形学习 (Mainfold Learning)

流形学习解决的问题

  在实际应用中,数据往往以高维形式存在(如图像的像素矩阵、基因数据、文本向量等),但这些高维数据往往是高度冗余的,隐藏着潜在的低维结构。流形学习是一种工具,用来揭示这种低维结构。
  流形学习的目标是找到一个从高维空间到低维空间的映射。

1. 数据的低维表示

  流形学习假设,高维数据分布在一个嵌入的低维流形上。通过发现这种低维流形,可以:
  (1)压缩数据,提高存储和计算效率。
  (2)减少数据噪声,提升模型性能。

2. 数据结构的理解

  高维数据常包含复杂的内在结构。流形学习帮助揭示:
  (1)数据点之间的关系(如相似性)。
  (2)数据分布的局部与全局模式。

3. 数据可视化

  当数据维度过高时,无法通过人眼直观观察。流形学习通过降维使数据映射到二维或三维空间,便于:
  (1)聚类分析
  (2)分类任务的初步探索。
  (3)数据分布模式的发现。

4. 改善机器学习模型的输入

  降维后的数据更简单、更结构化,可以用作:
  (1)特征工程的一部分,提高模型的训练速度和泛化性能。
  (2)嵌入空间,用于检索、推荐系统或迁移学习。

流形理论

  流形(Manifold)这个名字来源于数学中的流形理论,它描述了一类在局部上看起来像欧几里得空间的几何结构。流形是流形学习的理论基础,因此这个领域被称为“流形学习”。

  在数学中,流形是一个可以在局部用低维欧几里得空间描述的几何对象,但在全局上可能有更复杂的结构。例如:
  (1)一条曲线是一个一维流形(局部看是线段)。
  (2)一个球面是一个二维流形(局部看是平面)。

  流形学习的一个核心假设是:高维数据其实是分布在某个低维流形上的。流形学习试图找到这个低维展开的结构。

概念

  一个拓扑空间 M M M被称为d维拓扑流形,如果它满足以下条件:
  (1) M M M 是一个 Hausdorff \text{Hausdorff} Hausdorff空间:

∀   p , q ∈ M , ∃   U , V ⊂ M \forall\ p, q \in M, \exist\ U, V \subset M ∀ p,q∈M,∃ U,V⊂M
s . t .     U ∩ V = ϕ , p ∈ U , q ∈ V s.t.\ \ \ U\cap V=\phi, p \in U, q \in V s.t.   U∩V=ϕ,p∈U,q∈V

  (2) M M M是第二可数的:

M M M的拓扑有一个可数基(countable basis)

  (3) M M M具有局部欧几里得性:

∀   p ∈ M , ∃   U ⊂ V p : = { p的邻域 } ,   φ : U → φ ( U ) ⊂ R d \forall\ p \in M, \exist\ U \subset \mathcal{V}_{p}:= \left \{\text{p的邻域} \right \}, \ \varphi:U \to \varphi(U) \subset \mathbb{R}^{d} ∀ p∈M,∃ U⊂Vp​:={p的邻域}, φ:U→φ(U)⊂Rd
s . t .    φ s.t. \ \ \varphi s.t.  φ是一个连续同胚映射,被称为 M M M的坐标图(chart)

对于拓扑空间 X X X、 Y Y Y,称映射 f : X → Y f:X\to Y f:X→Y为连续同胚映射,满足:
  1. f f f是连续的(continuous)。
  2. f f f是双射(bijection)。
  3. f − 1 : Y → X f^{-1}:Y\to X f−1:Y→X是连续的。
f f f也被称为嵌入

同胚映射描述了一种拓扑等价关系,即两个空间通过“连续变形”可以彼此转化,但不涉及撕裂、断裂或粘合的操作。

  对于拓扑流形 M M M,我们定义过渡映射(Transition Maps):

如果两个坐标图 φ : U → R d \varphi:U\to \mathbb{R}^{d} φ:U→Rd和 ψ : V → R d \psi :V\to \mathbb{R}^{d} ψ:V→Rd满足 U ∩ V ≠ ϕ U\cap V\ne \phi U∩V=ϕ,过渡映射即在 U ∩ V U\cap V U∩V中从一个坐标系转换到另一个坐标系的映射
   ψ ∘ φ − 1 : φ ( U ∩ V ) → ψ ( U ∩ V ) \psi \circ \varphi^{-1}:\varphi(U\cap V)\to \psi(U\cap V) ψ∘φ−1:φ(U∩V)→ψ(U∩V)

  对于拓扑流形,过渡映射是连续的。

  在拓扑流形的基础上,称 M M M为光滑流形,满足:

过渡映射 ψ ∘ φ − 1 : φ ( U ∩ V ) → ψ ( U ∩ V ) \psi \circ \varphi^{-1}:\varphi(U\cap V)\to \psi(U\cap V) ψ∘φ−1:φ(U∩V)→ψ(U∩V)是一个 C ∞ C^{\infty} C∞光滑映射,即具有无限阶连续导数的函数

  再进一步,称 M M M为解析流形,满足:

对于 U U U中的每个点 p p p, φ \varphi φ在 p p p处是解析的,即可以展开为幂级数。
对于 U U U中的每个点 p p p, ψ ∘ φ − 1 \psi \circ \varphi^{-1} ψ∘φ−1也是解析的。

  称 M M M为紧致流形,满足:

M M M是紧致的(compact),即 M M M的任意开覆盖都有有限子覆盖

  如果 M M M不是紧致的,则称 M M M为无界流形

惠特尼嵌入定理(Whitney Embedding Theorem)

  对于任何光滑流形 M M M(包括无界流形),如果流形 M M M的维度 n ≤ 2 d n \le 2d n≤2d,则存在一个光滑嵌入 f : M → R d f:M\to \mathbb{R}^{d} f:M→Rd,使得流形 M M M可以嵌入到 R d \mathbb{R}^{d} Rd中。
  定理告诉我们,任何光滑流形都能在一个适当的维度下被嵌入到一个欧几里得空间中,并且保持其光滑结构。对于流形来说,“嵌入” 意味着流形的几何和拓扑结构不被改变。
  定理中的维度条件 n ≤ 2 d n \le 2d n≤2d指的是流形的维度 n n n必须小于等于目标空间 R d \mathbb{R}^{d} Rd维度的两倍。这保证了流形能够在目标空间中被嵌入而不发生“折叠”或“交叉”。

主成分分析(PCA)

  尽管PCA通常被视为线性降维方法,但它也可以看作流形学习的一个特例,尤其是在数据接近线性流形时。PCA通过寻找数据集的最大方差方向来进行降维。
  处理类别数据、独热编码和降维(主成分分析)

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

  LLE是一种无监督学习算法,基于一个假设:数据存在于一个低维流形上,这个流形在局部区域是线性的。我们希望找出一个嵌入,能够保留这些局部线性关系。
  局部线性嵌入LLE

等距映射(Isomap)

  等距映射(Isomap,Isometric Mapping)是一种非线性降维算法,属于流形学习方法,用于在保留高维数据几何结构的前提下,将数据降到低维空间。Isomap 是对经典多维缩放(MDS,Multidimensional Scaling)的扩展,通过保留点对点之间的流形距离来实现降维。
  等距映射

t-分布邻域嵌入(t-SNE, t-distributed Stochastic Neighbor Embedding)

  t-分布邻域嵌入(t-SNE, t-Distributed Stochastic Neighbor Embedding)是一种常用于降维和可视化高维数据的非线性算法。它尤其擅长将高维数据映射到2D或3D空间,以便进行可视化,同时保持数据点之间的相对结构。

t-SNE 是一种基于概率的降维方法,它的目标是保持高维空间中相似数据点的相对距离关系,同时尽可能减少低维空间中相似点的距离差异。
  t-分布邻域嵌入(t-SNE, t-distributed Stochastic Neighbor Embedding)

标签:流形,映射,笔记,学习,嵌入,varphi,自学,数据
From: https://blog.csdn.net/qq_40432278/article/details/144119172

相关文章

  • 《程序员的修炼之道:从小工到专家》阅读笔记四
    第四章:把握项目的本质第四章讨论了如何理解和把握项目的本质。作者认为,程序员不仅要关注代码实现,还要深入了解项目的核心目标和需求,这样才能创造更具价值的产品。本章强调了有效沟通在开发过程中的重要性。与项目相关人员(如客户、项目经理、设计师等)保持积极沟通,确保自己对项目的......
  • 《程序员的修炼之道:从小工到专家》阅读笔记六
    第六章:并发编程第六章介绍了并发编程的基本概念和实用方法。随着现代计算机性能的提升,程序在多核处理器上执行的需求越来越高,并发编程成为了许多应用的核心。然而,并发编程带来的挑战也不容忽视。作者详细探讨了并发的优缺点、常见问题和最佳实践。首先,作者解释了并发的优势,包括......
  • 《程序员的修炼之道:从小工到专家》阅读笔记五
    第五章:异常与错误处理第五章探讨了异常和错误处理在软件开发中的重要性。作者指出,错误是不可避免的,因此处理错误和异常是编写健壮代码的重要步骤。程序员不仅要处理错误,还需要设计出一个可靠的错误处理机制,以确保程序在出现问题时能够有序地进行恢复或退出。作者介绍了几种常见......
  • 24/11/30 ABC381+莫队+分块+整体二分学习笔记
    [ABC381D]好题。由于题目描述中提到了取出的子序列长度必须是偶数个,所以可以考虑对于原来的\(a\)序列每次进行长度为\(2\)的尺取,这时候不难发现对于开头位置具有两个答案,一个是从\(1\)为开头,一个是从\(2\)为开头,所以写个函数封装一下就好了,类似这种cout<<max(solve(1),solve(2......
  • 《Django 5 By Example》阅读笔记:p388-p454
    《Django5ByExample》学习第15天,p388-p454总结,总计66页。一、技术总结1.celery我觉得书中这种用法太简单了。2.flower用于监控celery。#安装pipinstallflower#启动celery-Amyshopflower--basic-auth=root:root#访问http://127.0.0.1:55553.支......
  • 动态内存管理的知识点笔记总结
    开始之前,我们解释一为什么存在动态内存分配?在我们之前写的:intarr[10]={0};连续开辟40个字节的空间inta=10;在内存开辟4个字节但是,1.这种大小是固定死的,我们是无法改变的。2.数组在申明的时候,必须指定数组的长度,它所需要的内存在编译时分配。但是对于空间的需求......
  • Task1&Task2学习笔记
    Task1&Task2学习笔记Python解释器的安装进入【官网】(WelcometoPython.org)下载关于注释注释可以大大增强程序的可读性,怎么写注释呢?单行注释,可以使用#开头多行注释使用'''将注释包裹使用"""将注释包裹(三个双引号)基础的控制台输出print()函数的使用print()......
  • [Day4]PythonAdvanced-学习笔记
    [PythonAdvanced]学习笔记-Day4概览Date:2024-11-29TimeSpent:6hoursTopics:FastAPIDifficulty:⭐⭐⭐(1-5⭐)今日计划FastAPI框架入门修改MTtranslator为异步处理学......
  • 11月29日记录(《代码大全》(第二版)精读笔记)
    在《代码大全》(第二版)中,系统考虑部分是对软件开发过程中的系统性思维和整体设计的重要探讨。作者史蒂夫·麦克康奈尔强调,软件开发不仅仅是编写代码,更是一个复杂系统的构建过程,涉及多个层面的考虑,包括需求分析、架构设计、模块划分、接口设计等。以下是对系统考虑部分的精读笔记。......
  • 【Python-Open3D学习笔记】005Mesh相关方法
    TriangleMesh相关方法文章目录TriangleMesh相关方法1.查看mesh三角形面信息2.可视化三角形3.上采样4.计算mesh形成的面积和体积1.查看mesh三角形面信息defview_hull_triangles(hull:o3d.geometry.TriangleMesh):"""查看mesh三角形面信息(顶点索引......