【机器学习】机器学习的基本分类-无监督学习-t-SNE(t-分布随机邻域嵌入)

t-SNE(t-分布随机邻域嵌入)

t-SNE(t-distributed Stochastic Neighbor Embedding)是一种用于降维的非线性技术,常用于高维数据的可视化。它特别适合展示高维数据在二维或三维空间中的分布结构,同时能够很好地保留局部邻域关系。


1. t-SNE 的核心思想

t-SNE 的目标是将高维数据嵌入到低维空间,同时尽可能保持高维空间中点与点之间的相对距离(特别是局部邻域的结构)。它通过以下方式实现:

  1. 邻域概率建模:在高维空间中定义相邻点的概率分布,点越接近,概率越高。
  2. 低维空间分布:在低维空间中构造一个相似的概率分布,使得该分布与高维分布尽可能接近。
  3. 优化目标:通过最小化两种分布之间的差异(通常使用 Kullback-Leibler (KL) 散度),得到优化的嵌入结果。

2. t-SNE 的工作流程

步骤 1:高维数据的相似性建模

对于数据点 x_ix_j,计算高维空间中点之间的相似度,定义为条件概率:

p_{j|i} = \frac{\exp\left(-\|x_i - x_j\|^2 / 2\sigma_i^2\right)}{\sum_{k \neq i} \exp\left(-\|x_i - x_k\|^2 / 2\sigma_i^2\right)}

  • \sigma_i 是点 x_i 的标准差(自适应调整)。
  • 对称化处理,定义联合概率 p_{ij}

p_{ij} = \frac{p_{j|i} + p_{i|j}}{2N}

其中 N 是样本总数。

步骤 2:低维空间的相似性建模

在低维空间中,使用 t-分布(自由度为1的学生 t 分布)定义点 y_i​ 和 y_j 的相似性:

q_{ij} = \frac{\left(1 + \|y_i - y_j\|^2\right)^{-1}}{\sum_{k \neq l} \left(1 + \|y_k - y_l\|^2\right)^{-1}}

t-分布的尾部较长,可以防止点之间距离过大时影响降维效果。

步骤 3:优化目标

通过最小化高维分布 p_{ij} 和低维分布 q_{ij} 之间的 Kullback-Leibler (KL) 散度:

\text{KL}(P || Q) = \sum_{i \neq j} p_{ij} \log\left(\frac{p_{ij}}{q_{ij}}\right)

最小化 KL 散度可以调整低维空间中的点位置,使得 q_{ij} 接近 p_{ij}​。

步骤 4:梯度下降

通过梯度下降优化 KL 散度,逐步调整低维空间中的点。


3. t-SNE 的优点和缺点

优点
  1. 适合非线性数据降维:相比 PCA,t-SNE 更适合揭示复杂数据的非线性结构。
  2. 良好的可视化效果:特别适用于高维数据的二维或三维可视化,能清晰显示聚类和分布。
  3. 保留局部结构:很好地保持高维空间中局部邻域的关系。
缺点
  1. 计算复杂度高:对大规模数据(样本数较多)效率较低。
  2. 难以解释全局结构:t-SNE 更关注局部结构,可能会扭曲全局分布。
  3. 超参数敏感:如 perplexity 和学习率,对最终结果影响较大,需要调试。
  4. 不可逆降维:t-SNE 是非线性降维,不能将低维结果映射回高维。

4. t-SNE 的常见超参数

  1. Perplexity:表示每个点的邻域大小,常在 5 到 50 之间。较大的 perplexity 会关注更大的局部结构。
  2. 学习率:用于优化的步长,常设置为 200 或 N/12(N 为样本数)。
  3. 迭代次数:一般设置为 1000 次以上。

5. t-SNE 的实现(Python 示例)

以下使用 scikit-learn 库实现 t-SNE:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_digits
from sklearn.manifold import TSNE

# 加载数据集
digits = load_digits()
X = digits.data
y = digits.target

# 使用 t-SNE 进行降维
tsne = TSNE(n_components=2, perplexity=30, random_state=0)
X_embedded = tsne.fit_transform(X)

# 绘制结果
plt.figure(figsize=(8, 6))
scatter = plt.scatter(X_embedded[:, 0], X_embedded[:, 1], c=y, cmap='Spectral', s=15)
plt.colorbar(scatter, label='Digits')
plt.title('t-SNE Visualization of Digits Dataset')
plt.xlabel('t-SNE Component 1')
plt.ylabel('t-SNE Component 2')
plt.show()


6. t-SNE 的改进方法

由于 t-SNE 的高计算复杂度,后续有一些改进版本:

  1. Barnes-Hut t-SNE:通过快速近似方法将时间复杂度降低到 O(N \log N)
  2. Parametric t-SNE:结合神经网络训练,适用于大规模数据。
  3. UMAP(Uniform Manifold Approximation and Projection):是一种快速替代 t-SNE 的方法,在保留局部结构的同时,更能体现全局结构。

7. 应用场景

  1. 数据可视化:在 NLP、计算机视觉等领域用于展示高维数据的分布。
  2. 聚类分析:辅助识别高维数据中的聚类结构。
  3. 降维预处理:为复杂模型(如分类或聚类算法)提供降维后的输入。

t-SNE 是一种强大的非线性降维工具,广泛应用于高维数据分析和可视化。尽管存在一些缺点,但通过合理调参和改进版本的使用,它依然是数据科学的重要工具。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

哈尔滨工业大学《2024年801自动控制原理真题》 (完整版)

本文内容,全部选自自动化考研联盟的:《哈尔滨工业大学801自控考研资料》的真题篇。后续会持续更新更多学校,更多年份的真题,记得关注哦~ 目录 2024年真题 Part1:2024年完整版真题 2024年真题

数据可视化:提升年度报表分析效率的新路径

在当今复杂多变的商业环境中,企业年度报表不仅是反映企业过去一年经营成果的重要文件,更是指导未来战略规划的基石。它如同一面镜子,既映照出企业的辉煌成就,也不避讳地揭示了存在的问题与挑战。本文将从企业年度报表的编制原则、…

探秘Redis哨兵模式:原理、运行与风险全解析

一、引言 Redis 概述 在当今的数据存储领域,Redis 占据着十分重要的地位。它是一个内存中的数据存储,凭借其出色的性能和丰富的功能,被数百万开发人员广泛应用于诸多场景之中,已然成为构建高性能、可扩展应用程序的得力工具。 从…

芯品荟|SWM221系列芯片之TFTLCD彩屏显示及控制

“革新未来,智驭控制新纪元”,由广东华芯微特集成电路有限公司市场总监张琢,对SWM221系列的强大功能表现进行了整体介绍。 确实,华芯微特在TFTLCD显示及控制有十多年应用基础和积累的团队,仍勇于挑战,自我…

Liinux下VMware Workstation Pro的安装,建议安装最新版本17.61

建议安装最新版本17.61,否则可能有兼容性问题 下载VMware Workstation安装软件 从官网网站下载 https://support.broadcom.com/group/ecx/productdownloads?subfamilyVMwareWorkstationPro 选择所需版本 现在最新版本是17.61,否则可能有兼容性问题…

pyfink1.20版本下实现消费kafka中数据并实时计算

1、环境 JDK版本:1.8.0_412python版本:3.10.6apache-flink版本:1.20.0flink版本:1.20kafka版本:kafka_2.12-3.1.1flink-sql-connector-kafka版本:3.3.0-1.202、执行python-flink脚本 从kafka的demo获取消…

Python 写的《桌面时钟》屏保

原代码: # 日历式时钟 # 导入所需的库 # 作者:Hoye # 日期:2024年12月16日 # 功能:显示当前日期、星期、时间,并显示模拟时钟 import tkinter as tk from tkinter import ttk import time import math import sysdef …

51c自动驾驶~合集41

我自己的原文哦~ https://blog.51cto.com/whaosoft/12830614 #SFPNet 迈向通用Lidar分割!取代Transformer的新架构SFPNet 迈向通用激光雷达语义分割(),取代Transformer的新架构SFPNet,新数据集S.MID 论文标题&am…

前端之CSS光速入门

一、CSS介绍 什么是CSS? CSS(Cascading Style Sheet),层叠样式表,用于控制页面的样式. CSS能够对网页中元素位置的排版进行像素级的精确控制,实现美化页面的效果.能够做到页面的样式和结构分离.(CSS可以理解为"东方四大邪术"的化妆术.对页面展示进行化…

P8615 拼接平方数 P8699 排列数

文章目录 [蓝桥杯 2014 国 C] 拼接平方数[蓝桥杯 2019 国 B] 排列数 [蓝桥杯 2014 国 C] 拼接平方数 题目描述 小明发现 49 49 49 很有趣,首先,它是个平方数。它可以拆分为 4 4 4 和 9 9 9,拆分出来的部分也是平方数。 169 169 169 也有…

【AIGC】结构化的力量:ChatGPT 如何实现高效信息管理

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯结构化的定义 (Structuration: Definition)1. 结构化的定义2. 结构化的示例3. 技术领域中的结构化数据 💯有序的规则的重要…

如何实现日期选择窗口

文章目录 1 概念介绍2 使用方法3 示例代码我们在上一章回中介绍了TimePicker Widget相关的内容,本章回中将介绍DatePickerDialog Widget.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 我们在这里说的DatePickerDialog是一种弹出窗口,只不过窗口的内容固定显示为日期,它…

开启数字化时代心理服务新篇章:专属线上心理咨询服务小程序

在当今快节奏的社会中,心理健康问题日益受到人们的关注。然而,传统的心理咨询模式往往受限于时间和地点,使得许多人在寻求心理帮助时感到不便。与此同时,心理课程的传播也面临着诸多挑战,如何高效地触达目标客户群体&a…

ElasticSearch 简介

一、什么是 ElastcSearch? ElasticSearch 是基于 Lucene 的 Restful 的分布式实时全文搜索引擎。 1.1 ElasticSearh 的基本术语概念 index 索引 索引类似与 mysql 中的数据库,ES 中的索引是存储数据的地方,包含了一堆有相似结构的文档数据…

条件概率相关公式

条件概率 条件概率是指在事件 B 已经发生的情况下,事件 A 发生的概率,记作 P(A∣B) 。其定义公式为: ( P(B) > 0 ) 全概率公式 全概率公式用于计算由一组互斥且完备的事件构成的事件的概率。设 是一组互斥且完备…

【C++】C++11(lambda、可变参数模板、包装器、线程库)

🌈个人主页:秦jh_-CSDN博客🔥 系列专栏:https://blog.csdn.net/qinjh_/category_12575764.html?spm1001.2014.3001.5482 ​ 目录 前言 lambda表达式 C98中的一个例子 lambda表达式语法 函数对象与lambda表达式 新的类功能…

12.11数据结构-图

无向完全图:在无向图中,如果任意两个顶点之间都存在边,则称该图为无向完全图。 有向完全图:在有向图中,如果任意两个顶点之间都存在方向相反的两条弧,则称该图为有向完全图。 含有n个顶点的无向完全图有…

深度学习作业 - 作业十一 - LSTM

问题一 推导LSTM网络中参数的梯度,并的分析其避免梯度消失的效果 LSTM网络是为了解简单RNN中存在的长程依赖问题而提出的一种新型网络结构,其主要思想是通过引入门控机制来控制数据的流通,门控机制包括输入门、遗忘门与输出门,同…

Sigrity System Explorer DC IR Drop Analysis模式进行直流压降仿真分析操作指导

Sigrity System Explorer DC IR Drop Analysis模式进行直流压降仿真分析操作指导 Sigrity System Explorer DC IR Drop Analysis模式可以用于直流压降仿真分析,通过搭建简易拓扑用于前仿真分析,下面搭建一个简易的直流系统进行说明,以下图为例,准备好PCB的SPICE模型SpiceNe…

华为HarmonyOS实现跨多个子系统融合的场景化服务 -- 4 设置打开App Button

场景介绍 本章节将向您介绍如何使用Button组件打开APP功能,可调用对应Button组件打开另一个应用。 效果图展示 单击“打开APP”按钮,出现提示弹窗,单击“允许”,跳转至新的应用界面。 说明 弹窗是否弹出以及弹窗效果与跳转目标…