How to Use t-SNE Effectively.(翻译:如何高效地使用t-SNE)

article/2025/9/29 12:10:19

Translation: How to use t-SNE effectively

    • 1. 这些超参数真的很重要
    • 2. 在t-SNE图中,簇大小没有任何意义
    • 3. 集群之间的距离可能没有任何意义
    • 4. 随机噪声并不总是随机的。
    • 5. 有时你会看到一些形状
    • 6. 对于拓扑,你可能需要多个绘图
    • 7. 结论

尽管t-SNE在可视化高维数据方面非常有用,但t-SNE的降维图有时可能会很费解或是具有误导性的。通过研究它在简单情况下的行为,我们可以学习如何更有效地使用它。(原文的图更具动态效果)原文网址链接: How to Use t-SNE Effectively

t-SNE是研究高维数据的一种流行方法,它是由van der Maaten和Hinton在2008年提出。这种技术已经在机器学习领域得到了广泛应用,因为它具有一种近乎神奇的能力,可以从数百维甚至数千维的数据中生成效果显著的二维“地图”。尽管这些图效果不错,但很容易被误读。这篇笔记的目的是防止一些常见的误读。
t-SNE原文: Visualizing Data using t-SNE.

我们将通过一系列简单的例子来说明t-SNE图可以显示什么,不能显示什么。t-SNE方法确实有用,但,前提是你知道如何解释它。

在开始之前:如果你以前不知道t-SNE,下面的数学原理是你需要了解的。它的目标是在高维空间中取一组点并在低维空间(通常是二维平面)中找到这些点的真实表示。该算法是非线性的,能够适应底层数据,在不同的区域进行不同的转换。这些差异可能是造成混淆的主要原因。

t-SNE的第二个特性是它有一个可调的参数:“perplexity”(困惑度),它可大致理解为如何平衡你的数据集的局部特征和全局特征。从某种意义上说,这个参数是对每个点的近邻点数的猜测。困惑度对生成的图像有复杂的影响。原文说,“SNE在改变困惑度方面有良好的鲁棒性,困惑度典型的值在5-50之间。”但事情远不止如此。想要从t-SNE中获得更多的信息,意味着要分析具有不同困惑的多个情况。

这还没完。例如,t-SNE算法在连续运行时并不总是产生类似的输出结果,而且它还有与优化过程相关的额外超参数。

1. 这些超参数真的很重要

像学习编程语言的“Hello world”如我们一样,让我们从t-SNE的“Hello world”开始:由两个距离较远的集群组成的数据集。为了简单,我们将使用二维平面上的集群,如左图所示。(为了清晰起见,这两个簇是不同颜色的。)右图显示了5个不同的困惑度的t-SNE图。
1
在van der Maaten和Hinton提出perplexity的值域为5-50区间的情况下,这些图显示了这些簇,尽管它们的形状非常不同。超出这个范围,就有点奇怪了。perplexity=2时,局部特征占主导地位。perplexity=100的图像中,簇混合在了一起,说明了一个问题:算法要想正常运行,perplexity确实要小于点数。否则,实现可能会出现意外的现象。

上面的每个图都是用5000次迭代完成的,学习率(通常称为“epsilon”)为10,并且在第5000步时达到了一个稳定的点。这些值有多大的影响?根据我们的经验,最重要的是直到达到稳定的迭代次数。
2
上图片显示了perplexity=30时的五种不同运行结果。前四个在稳定之前就停止了。通过不同的迭代次数10、20、60和120,可以看到图中似乎有一维甚至像点样的集群图像。如果你看到t-SNE图中有奇怪的“收缩”形状,那么很可能这个过程被过早地停止了。不幸的是,没有固定的迭代次数可以产生稳定的结果。不同的数据集需要不同的迭代次数达到收敛。

另一个问题是,使用相同的超参数进行多次运行是否会产生相同的结果。在这个简单的双集群示例和我们讨论的大多数其他示例中,多次运行给出相同的结果。然而,某些数据集在不同的运行中产生明显不同的图;稍后我们将给出其中一个示例。

从现在开始,除非另有说明,否则我们将显示5000次迭代的结果。这对于本文中(相对较小的)示例的收敛来说已经足够了。然而,我们将继续展示一系列的困惑度,因为这似乎在每个情况下都有很大的不同。

2. 在t-SNE图中,簇大小没有任何意义

到目前为止,一切顺利。但如果两个集群的标准差不同,规模也不同呢?(这里的尺寸指的是由于点的离散度不同而导致的簇的大小不同,而不是点的数量。)下面是平面上混合高斯分布的t-SNE图,其中一种分布的大小是另一种分布的10倍。
3
令人惊讶的是,这两个簇在t-SNE图中看起来差不多大。发生什么事了?t-SNE算法将其“距离”的概念与数据集中区域密度的变化相适应,自然地扩展了密集的簇,压缩了稀疏的簇,改变了簇的大小。需要明确的是,这与任何降维技术都会扭曲距离的一般事实是不同的。(毕竟,在本例中,所有数据一开始都是二维的。)相反,密度均衡是通过设计实现的,是t-SNE的一个可预测特征。

然而,底线是在t-SNE图中看不到集群的相对大小。

3. 集群之间的距离可能没有任何意义

那么集群之间的距离有什么影响呢?下一个图显示了三个集群(也即是簇)的高斯分布,每个50点,其中一对的距离是另一对的5倍。
4
perplexity=50时,该图给出了全局几何特征的良好视觉显示。对于较低的perplexity,集群间的距离看起来相等。当perplexity=100时,我们可以很好地看到全局几何特征,但是其中一个集群要比其他集群小得多。既然perplexity=50时,在这个例子中我们能得到一个很好的图像,那么如果我们想要看到全局几何特征,我们是否可以将perplexity一直设置为50呢?

很遗憾,不可以。如果我们在每个簇中添加更多的点,那么困惑就必须增加来补偿。这是三个高斯簇的t-SNE图,每个簇有200个点,而不是50个。现在,所有的测试困惑值都没有给出一个好的结果。
5
看到全局特征的话,需要微调perplexity。现实世界中的数据可能有多个具有不同数量元素的集群。遗憾的是,perplexity是一个全局的参数,可能没有一个perplexity可以捕获所有集群之间的距离。解决这个问题可能是未来研究的一个有趣领域。

基本的信息是,t-SNE图中分离良好的簇之间的距离可能没有任何意义。

4. 随机噪声并不总是随机的。

一个典型的误区是认为你看到的只是随机数据的模式。当你看到噪音时识别它是一项关键的技能,但建立正确的直觉需要时间。关于t-SNE的一个棘手的问题是它把很多现有的直觉抛到了一边。下面的图表显示了真正随机的数据,从100维的单位高斯分布中抽取的500个点。左边的图像是前两个坐标上的投影。
6
perplexity=2时似乎呈现出戏剧性的集群。如果你正在调整perplexity以在数据中显示结构,那么你可能会认为自己中了大奖。

当然,因为我们知道点云是随机生成的,所以它没有统计上有意义的集群:那些“簇”没有意义。 如果回顾前面的例子,低困惑度通常会得到这种分布。 将这些簇识别为随机噪声是读t-SNE图的重要部分。

不过还有一些有趣的事情,这可能是t-SNE的胜利。一开始,perplexity=30的图看起来一点也不像高斯分布:在点云的不同区域之间只有轻微的密度差异,而且这些点的分布似乎非常均匀。事实上,这些特征说明了高维正态分布的有用之处,高维正态分布非常接近球面上的均匀分布,分布均匀,点与点之间的空间大致相等。从这个角度看,t-SNE图比任何线性投影都要精确。

5. 有时你会看到一些形状

数据以完全对称的方式分布是很少见的。我们来看一个轴对称的50维的高斯分布,其中坐标i的标准差是1/i。也就是说,我们看到的是一个长椭圆形的点云。
7
对于足够高的困惑度,细长的形状很容易阅读。另一方面,在低困惑度时,局部效应和无意义的“簇”成为焦点。更极端的形状也会出现,但同样只有正确的困惑度。例如,这里有两个二维集群,每个集群由75个点组成,它们以平行线的形式排列,并带有一点噪声。
8
对于一定范围的困惑度,长条的簇看起来接近正确,这是可靠的。

即使在最好的情况下,也有一个微妙的扭曲:在t-SNE图中,这些线稍微向外弯曲。原因是,像往常一样,t-SNE倾向于扩展更密集的数据区域。由于聚类中间的空间小于聚类末端的空间,因此算法将其放大。

6. 对于拓扑,你可能需要多个绘图

有时你可以从t-SNE图中读取拓扑信息,但这通常需要查看多个困惑度的图。最简单的拓扑特性之一是包含。下图显示了50维空间中的两组簇,每个75个点。这两种方法都是从以原点为中心的对称高斯分布中取样的,但其中一种分布的密度是另一种分布的50倍。“小的”分布实际上包含在大的分布中。
9
perplexity=30的图正确地显示了基本的拓扑结构,但是同样的,t-SNE极大地夸大了较小的一组点的大小。在perple50中,出现了一个新的现象:外部群体变成了一个圆,因为这个图试图描述的是,所有的点到内部群体的距离都差不多。如果你单独看这幅图,很容易把这些外部点误读成一维结构。

那么更复杂的拓扑类型呢?对于数学家来说,这可能是一个比实际数据分析更重要的课题,但偶尔会发现有趣的低维结构。

考虑一组在三维中轨迹的链或结的点集。 再一次,查看多个困惑度得到的最完整的图像。 低茫然度值给出两个完全独立的循环; 高点表现出一种全局的连通性。
10
三叶结是一个有趣的例子,能说明多次运行如何影响t-SNE的结果。下面是perplexity=2时五个版本。

该算法在一个圆上进行两次寻优,至少保留了原拓扑结构。但在其中的三次运行中,它得到了三种不同的解决方案,这些解决方案引入了人工中断。使用圆点颜色作为指导,您可以看到第一次和第三次运行相距很远。
11
然而,在perple50上运行5次,得到的结果(直到对称性)在视觉上是相同的。显然,有些问题比其他问题更容易优化。
12

7. 结论

t-SNE如此受欢迎的一个原因是:它非常灵活,可以找到其他降维算法无法找到的结构。不幸的是,这种灵活性使其难以解释。在用户看不到的情况下,该算法进行各种调整,以整理其可视化效果。不过,不要让隐藏的“魔法”吓跑了你。好消息是,通过研究t-SNE在简单情况下的行为,我们可以对发生的事情形成一种直觉。


http://chatgpt.dhexx.cn/article/mEeMbaLM.shtml

相关文章

t-SNE原理与推导

t-SNE(t-distributed stochastic neighbor embedding)是用于降维的一种机器学习算法,由 Laurens van der Maaten 和 Geoffrey Hinton在08年提出。t-SNE 作为一种非线性降维算法,常用于流形学习(manifold learning)的降维过程中并与LLE进行类比&#xff0…

t-SNE降维

t-SNE(t-distributed stochastic neighbor embedding)是用于降维的一种机器学习算法,是由 Laurens van der Maaten 和 Geoffrey Hinton在08年提出来。此外,t-SNE 是一种非线性降维算法,非常适用于高维数据降维到2维或者3维,进行可…

t-SNE 可视化

背景 t-SNE(t-Distributed Stochastic Neighbor Embedding)是一种非常流行的非线性降维技术,主要用来对高维数据进行可视化,了解和验证数据或者模型。t-SNE属于流行学习(manifold learning),假…

用于语义分割模型的t-SNE可视化

前言 在之前的博客t-SNE可视化-Python实现中,对t-SNE的原理进行了一个简单的介绍,也给出了一个简单的使用案例。这篇博客在之前的基础上实现在语义分割模型上的t-SNE可视化。 语义分割模型中使用t-SNE的目的是,从模型的特征层面进行一定的可…

T SNE降维matlab程序,关于t-SNE降维方法

关于t-SNE降维方法 论文原图是这样的: image.png 1. 什么是t-SNE: 全名是t-distributed Stochastic Neighbor Embedding(t-SNE),翻译过来应该可以叫学生t分布的随机邻点嵌入法。 t-SNE将数据点之间的相似度转换为概率。原始空间中的相似度由高斯联合概率表示,嵌入空间的相似…

t-SNE可视化-Python实现

t-SNE 本文主要是对An Introduction to t-SNE with Python Example博客的翻译记录,和一些入门的Python代码,可以的话推荐阅读原文。 主要参考 介绍: An Introduction to t-SNE with Python Example GitHub: sas-python-work/tS…

t-SNE完整笔记

t-SNE(t-distributed stochastic neighbor embedding)是用于降维的一种机器学习算法,是由 Laurens van der Maaten 和 Geoffrey Hinton在08年提出来。此外,t-SNE 是一种非线性降维算法,非常适用于高维数据降维到2维或者3维,进行可…

机器学习笔记:t-SNE

0 前言 t-SNE(t-Distributed Stochastic Neighbor Embedding)是一种非常常用的数据降维,常用于数据可视化t-SNE/SNE的基本原理是: 在高维空间构建一个概率分布拟合高维样本点间的相对位置关系 在低维空间,也构建 一个…

图像异常检测

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达在机器学习中,处理异常检测任务是很常见的。数据科学家经常遇到必须显示,解释和预测异常的问题。在这篇文章中,我们主要讲述&#xff…

python进行图像边缘检测

边缘检测 图像边缘是指图像中表达物体的周围像素灰度发生阶跃变化的那些像素集合。 图像中两个灰度不同的相邻区域的交界处,必然存在灰度的快速过渡或称为跳变,它们与图像中各区域边缘的位置相对应,边缘蕴含了丰富的内在信息,如方…

用CNN识别CT图像检测肺癌

用CNN识别CT图像检测肺癌 原文:2nd place solution for the 2017 national datascience bowl 翻译参考:知乎用户王小新 Kaggle百万美元大赛优胜者:用CNN识别CT图像检测肺癌 概要 本文为2017年由Kaggle举办的数据科学竞赛的第二名获奖者Juli…

机场航拍图像检测软件(Python+YOLOv5深度学习模型+清新界面)

摘要:机场航拍图像检测软件使用深度学习技术检测机场航拍图像中的飞机目标等,识别航拍目标等结果并记录和保存,辅助机场智能管理运行。在介绍算法原理的同时,给出Python的实现代码、训练数据集,以及PyQt的UI界面。机场…

半监督学习+3D医疗图像检测 FocalMix

目录 Abstract 1.Contributions Introduction 2. Background and Preliminaries背景和准备工作 2.1.1 Anchor boxes 2.1.2 Focal Loss 2.2. Semi-supervised Learning 3. Methodology 3.1. Soft-target Focal Loss 3.2. Anchor-level Target Prediction 3.3. MixUp A…

检测 图像中得直线

Radon 变换 介绍 图像投影,就是说将图像在某一方向上做线性积分(或理解为累加求和)。如果将图像看成二维函数f(x, y),则其投影就是在特定方向上的线性积分,比如f(x, y)在垂直方向上的线性积分就是其在x轴上的投影&…

遥感图像目标检测研究综述

遥感图像目标检测 遥感图像特殊性一、目标检测研究综述1.介绍2.传统目标检测3.基于深度学习目标检测R-CNN系列为代表的两阶段算法YOLO、SSD为代表的一阶段算法 二、多尺度目标检测研究综述1.基于图像金字塔的多尺度目标检测基于尺度生成网络的图像金字塔基于尺度归一化的图像金…

工业自动化流水线上的机器视觉检测应用 (二):图像检测

图像检测是用机器代替人眼来做测量和判断,使用工业相机等机器视觉产品将被检测的目标转换成图像信号,传送给专用的图像处理系统,根据像素分布和亮度、颜色等信息,转变成数字化信号,图像处理系统等通过分析这些信号进行…

基于卷积神经网络的多目标图像检测研究(一)

摘 要 目标检测任务简单来说是在图片或视频中指出多个特定目标并以方框形式给出这些物体在图片中的位置和大小。它与我们的生活密切相关,它被广泛应用于安全识别、无人驾驶、医疗诊断、图像检索等领域,并且未来将愈发重要。因此目标检测也是近年来机器学…

图像检测系列之(12)异常检测(13)拼接伪造(14)deepfake | ICCV2021生成对抗GAN汇总梳理...

(1)GAN改进系列 | 最新ICCV2021生成对抗网络GAN论文梳理汇总图像编辑系列之(2)基于StyleGAN(3)GAN逆映射(4)人脸 (5)语义生成 | ICCV2021生成对抗GAN梳理汇总…

文章摘要 如何使用CLIP做图像检测 RegionCLIP:基于区域的文本-图像预训

摘要:使用图像-文本对的对比语言图像预训练模型(CLIP)在零样本和迁移学习环境下的图像分类方面都取得了令人印象深刻的结果。但直接应用CLIP模型识别图像区域进行对象检测效果并不好,这是因为CLIP被训练为将图像作为一个整体与文本…

图像检测之抽烟检测与打电话检测

识别司机是否抽烟和是否打电话的图像算法,通过深度学习实现,其中用到了一些opencv的知识,效果图如下: 相关技术资料请见本人其它博客文章