t-SNE 可视化

article/2025/9/29 12:21:31

背景

t-SNE(t-Distributed Stochastic Neighbor Embedding)是一种非常流行的非线性降维技术,主要用来对高维数据进行可视化,了解和验证数据或者模型。t-SNE属于流行学习(manifold learning),假设数据是均匀采样于一个高维欧氏空间中的低维流形,流形学习就是从高维采样数据中恢复低维流形结构,即找到高维空间中的低维流形,并求出相应的嵌入映射,以实现维数约简或者数据可视化。

t-SNE 基本理论

假设一个数据集 X X X,数据集中每个样本都是 D D D维的, X ∈ R D X\in R^D XRD,t-SNE的目的是生成一个低维的特征集 Y ∈ R d Y\in R^d YRd来表征样本,其中 d < < D d<<D d<<D。最典型的为 d = 2 d=2 d=2,从而将高维样本数据在二维平面上表示,方便观察数据的分布特性。

在降维过程中,目的是使原始空间中的两个样本点 x i x_i xi x j x_j xj在降维后的空间中对应的点 y i y_i yi y j y_j yj保持同样的距离分布。为了达到这样的效果,t-SNE将原始空间的相似性建模为概率密度,并且相似性的分布由高斯分布给出。即,在原始空间中已知样本点 i i i的情况下, j j j点和 i i i点间的相似性可以用条件概率分布公式来表示:
p j ∣ i = exp ⁡ ( − ∥ x i − x j ∥ 2 / 2 σ i 2 ) ∑ k ≠ i exp ⁡ ( − ∥ x i − x k ∥ 2 / 2 σ i 2 ) p_{j | i}=\frac{\exp \left(-\|\mathbf{x}_i-\mathbf{x}_j\|^{2} / 2 \sigma_{i}^{2}\right)}{\sum_{k \neq i} \exp \left(-\|\mathbf{x}_i-\mathbf{x}_k\|^{2} / 2 \sigma_{i}^{2}\right)} pji=k=iexp(xixk2/2σi2)exp(xixj2/2σi2)

由于相似度是对称的,即 i i i j j j 的相似度应该是等于 j j j i i i 的相似度,所以最终的联合概率分布:
p i j = p j ∣ i + p i ∣ j 2 p_{i j}=\frac{p_{j | i}+p_{i | j}}{2} pij=2pji+pij

在降维后的空间中,用学生t分布(Student’s t-distribution)代替高斯分布,因为学生t分布有更粗的尾巴,能够保留更多较远的距离的相似度。所以在降维后的目标空间中,联合概率分布为如下形式:
q i j = ( 1 + ∥ y i − y j ∥ 2 ) − 1 ∑ k ≠ l ( 1 + ∥ y k − y l ∥ 2 ) − 1 q_{i j}=\frac{\left(1+\|\mathbf{y}_i-\mathbf{y}_j\|^{2}\right)^{-1}}{\sum_{k \neq l}\left(1+\|\mathbf{y}_k-\mathbf{y}_l\|^{2}\right)^{-1}} qij=k=l(1+ykyl2)1(1+yiyj2)1

目的是为了让这个两个概率分布尽可能的相似,这样就说明在降维后的数据分布和原始空间的数据分布基本一致,因此使用KL散度进行度量这两个分布之间的相似度:
C = K L ( P ∥ Q ) = ∑ i j p i j log ⁡ p i j q i j C=K L(\mathbf{P} \| \mathbf{Q})=\sum_{i j} p_{i j} \log \frac{p_{i j}}{q_{i j}} C=KL(PQ)=ijpijlogqijpij

根据以上目标函数进行优化,常用的优化方法就是梯度下降法。因为我们希望的是得到一个较好的 Y Y Y ,所以梯度如下:
∂ C ∂ y i = 4 ∑ j ≠ i ( p i j − q i j ) ( y i − y j ) ( 1 + ∥ y i − y j ∥ 2 ) − 1 \frac{\partial C}{\partial \mathbf{y} i}=4 \sum_{j \neq i}\left(p_{i j}-q_{i j}\right)(\mathbf{y}_i-\mathbf{y}_j)\left(1+\|\mathbf{y}_i-\mathbf{y}_j\|^{2}\right)^{-1} yiC=4j=i(pijqij)(yiyj)(1+yiyj2)1

实例

手写数字可视化

# To add a new cell, type '# %%'
# To add a new markdown cell, type '# %% [markdown]'# %%
from sklearn import manifold,datasetsimport time
import numpy as np 
import matplotlib.pyplot as plt # %%
n_components = 2# %%
digits = datasets.load_digits(n_class=10)
data = digits['data']
label = digits['target']
n_samples, n_features = data.shape
n_features# %%
tsne = manifold.TSNE(n_components=n_components, init='pca', random_state=0, perplexity=30)
start = time.time()
result = tsne.fit_transform(data)
end = time.time()
print('t-SNE time: {}'.format(end-start))# %%
# result# %%
x_min, x_max = np.min(result, 0), np.max(result, 0)
result = (result-x_min)/(x_max-x_min)
ax = plt.subplot(111)
for i in range(n_samples):plt.text(result[i, 0], result[i, 1], str(label[i]), color=plt.cm.Set1(label[i] / 10.), fontdict={'weight': 'bold', 'size': 9})
plt.xticks([])
plt.yticks([])
plt.title('t-SNE-digits')
plt.show()

在这里插入图片描述


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

相关文章

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

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

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博客的翻译记录&#xff0c;和一些入门的Python代码&#xff0c;可以的话推荐阅读原文。 主要参考 介绍&#xff1a; An Introduction to t-SNE with Python Example GitHub&#xff1a; sas-python-work/tS…

t-SNE完整笔记

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

机器学习笔记:t-SNE

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

图像异常检测

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

python进行图像边缘检测

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

用CNN识别CT图像检测肺癌

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

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

摘要&#xff1a;机场航拍图像检测软件使用深度学习技术检测机场航拍图像中的飞机目标等&#xff0c;识别航拍目标等结果并记录和保存&#xff0c;辅助机场智能管理运行。在介绍算法原理的同时&#xff0c;给出Python的实现代码、训练数据集&#xff0c;以及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 变换 介绍 图像投影&#xff0c;就是说将图像在某一方向上做线性积分&#xff08;或理解为累加求和&#xff09;。如果将图像看成二维函数f(x, y)&#xff0c;则其投影就是在特定方向上的线性积分&#xff0c;比如f(x, y)在垂直方向上的线性积分就是其在x轴上的投影&…

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

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

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

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

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

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

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

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

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

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

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

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

图像检测技术的研究现状

图像检测技术的研究现状 技术检测 图像处理知识库 2016-01-08 19:59 图像检测技术的研究现状 所谓图像检测&#xff0c;就是通过图像对感兴趣的特征区域&#xff08;检测目标&#xff09;进行提取的过程&#xff0c;其中图像是承载检测目标的载体&#xff0c;检测目标需要事先…

YOLT遥感图像检测算法详解

You Only Look Twice: Rapid Multi-Scale Object Detection InSatellite Imagery-论文链接-代码链接 目录 1、需求解读2、遥感图像处理和普通图像处理的区别与联系3、YOLT检测算法分析3.1 遥感图像中的视觉挑战3.2 YOLT检测算法简介 4、YOLT检测算法实现详解4.1 YOLT检测算法网…

opencv 简单的图像检测,识别,标注,

&#xff12;&#xff10;&#xff12;&#xff12;&#xff0f;&#xff14;&#xff0f;&#xff11;&#xff19; 刚刚做了个升级版&#xff0c;就是第二种读取文件的方式&#xff0c;另外分函数写了 链接&#xff1a; python opencv 简单图像识别,标注 [升级版]_死非死的…