t-SNE方法:

使用t-SNE时,除了指定你想要降维的维度(参数n_components),另一个重要的参数是困惑度(Perplexity,参数perplexity)

困惑度:

困惑度大致表示如何在局部或者全局位面上平衡关注点,再说的具体一点就是关于对每个点周围邻居数量猜测。困惑度对最终成图有着复杂的影响。

  1. 低困惑度对应的是局部视角,要把自己想象成一只蚂蚁,在数据所在的流形上一个点一个点地探索。
  2. 高困惑度对应的是全局视角,要把自己想象成上帝。

参考:t-SNE:最好的降维方法之一 - 知乎 (zhihu.com)

具体介绍:

t-SNE(t-分布随机邻域嵌入,T-distributed Stochastic Neighbor Embedding)是一种流行的机器学习算法,主要用于降维。该算法特别适用于将高维数据映射到低维空间,如2维或3维,以便于可视化和分析。可以从具有数百甚至数千个维度的数据中创建引人注目的两维“地图”

t-SNE(t-DistributedStochastic Neighbor Embedding,T 分布随机近邻嵌入)是一种可以把高维数据降到二维或三维的降维技术。


t-SNE通过在低维空间中模拟高维数据分布,尽可能保留原始数据集中的局部结构。它是一种非线性降维技术,其核心思想是保持相似的数据点在嵌入后的空间中仍然彼此靠近,同时在高维空间中相隔较远的点在嵌入后也保持距离。

目标:

在高维空间中获取一组点,并在低维空间(通常是 2D 平面)中找到这些点的忠实表示。该算法是非线性的,可适应底层数据,在不同区域执行不同的变换。这些差异可能是造成混淆的主要根源。

t-SNE的第二个特点是一个可调的参数,即“困惑性”,它(松散地)表示如何平衡数据的局部和全局方面之间的注意力。从某种意义上说,该参数是对每个点具有的近邻数量的猜测。困惑度值对生成的图片具有复杂的影响。原始论文说,“SNE的性能对困惑度的变化相当鲁棒,典型值在5到50之间。但故事比这更微妙。从t-SNE中获得最大收益可能意味着分析具有不同困惑度的多个图。


算法的主要步骤包括:

  1. 数据初始化:为数据集中的每个点分配一个随机的低维表示
  2. 相似度计算:计算高维空间中所有点对之间的相似度,通常使用高斯分布来表示这种相似性。
  3. 距离矩阵构建:根据相似度构建一个距离矩阵,这个矩阵描述了数据点在低维空间中的相对位置。
  4. 概率分布学习:使用距离矩阵,通过极大似然估计学习一个用于生成低维表示的概率模型。
  5. 优化:使用梯度下降法优化概率模型,迭代地更新低维表示,直到收敛。
  6. 结果评估:使用一个称为“困惑度”的指标来评估最终嵌入的质量。

t-SNE在处理复杂数据集时表现出色,尤其是在数据可视化和发现数据的内在结构方面。但是,它也有一些局限性,比如计算复杂度高,对超参数(如困惑度)的选择敏感,以及在大数据集上可能需要大量的计算资源。


在R语言中,可以使用tsne包来进行t-SNE的计算和可视化。在Python中,sklearn.manifold库提供了t-SNE的实现,可以方便地对高维数据进行降维和可视化。


需要注意的是,t-SNE并不是唯一的选择。对于那些需要更快速处理且对内存要求较低的大数据集,可以选择UMAP(Uniform Manifold Approximation and Projection)作为替代方法,它也是一种非线性降维技术,特别适合于大规模数据集的降维和可视化。

与PCA方法的不同点:

参考:解读文献里的那些图——t-SNE散点图 - 知乎 (zhihu.com)

如果用 PCA 降维进行可视化,会出现所谓的“拥挤现象”。

相比于PCA,t-SNE更加注重保留原始数据的局部特征,这意味着高维数据空间中距离相近的点投影到低维中仍然相近,通过t-SNE处理同样能生成漂亮的可视化。

参数:

相关参考链接:

【1】如何有效使用t-SNE (distill.pub)

【2】t-SNE高维数据可视化(python)_t-sne可视化python-CSDN博客

【3】从SNE到t-SNE再到LargeVis (bindog.github.io)

【4】论文笔记:Visualizing data using t-SNE | 胡东瑶的小屋 (psubnwell.github.io)

【5】t-SNE:最好的降维方法之一 - 知乎 (zhihu.com)

【6】GitHub 上 - tensorflow/tfjs-tsne

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

音乐一拍到底多长

1.拍是什么 拍是一个描述音符的最小单位 2.BPM 拍速度 一分钟多少拍,每首个都有一个人为规定的拍速度 3.音符 对一个音要唱多长的定义,并且使用4分音符,8分音符进行更细化的分割 4.一拍到底有多长 首先拍类比物理学,他是一…

BearPi Std 板从入门到放弃 - 后天篇(2)(I2C1读写EEPROM)

简介 基于 BearPi Std 板从入门到放弃 - 后天篇(1)(I2C1 读取 光照强度), 使用同一个I2C接口访问EEPROM, 同时读取光照亮度 主芯片: STM32L431RCT6 LED : PC13 \ 推挽输出即可 \ 高电平点亮 串口: Usart1 I2C : I2C1 光照强度传感器&#xf…

金蝶云星空和管易云接口打通对接实战

金蝶云星空和管易云接口打通对接实战 对接系统金蝶云星空 金蝶K/3Cloud结合当今先进管理理论和数十万家国内客户最佳应用实践,面向事业部制、多地点、多工厂等运营协同与管控型企业及集团公司,提供一个通用的ERP服务平台。K/3Cloud支持的协同应用包括但不…

算法通关村第十四关|青铜|堆结构

堆是将一组数据按照完全二叉树的存储顺序,将数据存储在一个一维数组中的结构。 大顶堆:任意节点的值均大于等于它的左右孩子,并且最大的值位于堆顶,即根节点处。 小顶堆:任意节点的值均小于等于它的左右孩子&#xff0…

记录 | CUDA编程中的 __host__ __device__ 双重修饰

通过 __host__ 和 __device__ 双重修饰符&#xff0c;可以把函数同时定义在 CPU 和 GPU 上&#xff0c;这样 CPU 和 GPU 都可以调用 比如&#xff1a; #include <cstdio> #include <cuda_runtime.h>__host__ __device__ void say_hello(){printf("Hello, w…

在python的Scikit-learn库中,可以使用train_test_split函数来划分训练集和测试集。

文章目录 一、在Scikit-learn库中&#xff0c;可以使用train_test_split函数来划分训练集和测试集总结 一、在Scikit-learn库中&#xff0c;可以使用train_test_split函数来划分训练集和测试集 在Scikit-learn库中&#xff0c;可以使用train_test_split函数来划分训练集和测试…

【yolov8】与yolov5的区别及改进详解

图像识别技术在物联网、智能监控等领域广泛应用。而深度学习中的目标检测技术&#xff0c;能够帮助我们对图像中的目标进行识别&#xff0c;进而实现自动化控制。目前&#xff0c;Yolov8和Yolov5是目标检测领域热门的模型。 yolo目标检测原理yolov5详解yolov8yolov8结构图Conv模…

智能优化算法应用:基于学校优化算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于学校优化算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于学校优化算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.学校优化算法4.实验参数设定5.算法结果6.参考…

追逐代码的梦,计算机行业的心路历程

标题&#xff1a;追逐代码的梦&#xff0c;计算机行业的心路历程 当初选择计算机行业&#xff0c;并非出于一时冲动&#xff0c;而是深深被数字的魔力所吸引。我笑着回答&#xff1a;“因为我梦想成为神奇的码农&#xff01;我想像编织魔法一样编写程序&#xff0c;创造出炫酷…

Linux中shell的运行原理

在Linux中&#xff0c;每次输入命令时&#xff0c;前面都会出现一串字母&#xff0c;我们称之为命令行提示符 实际上&#xff0c;命令行提示符是一种外壳程序 外壳程序的概念&#xff1a; 前面我们提到过&#xff0c;在Linux中&#xff0c;一切皆文件&#xff0c;所谓的命令就…

程序员的实用网站导航与推荐

当你遇到问题时 Stack Overflow&#xff1a;订阅他们的每周新闻和任何你感兴趣的主题Google&#xff1a;全球最大搜索引擎必应&#xff1a;在你无法使用Google的时候CSDN&#xff1a;聊胜于无AI导航一号AI导航二号 新闻篇 OSCHINA&#xff1a;中文开源技术交流社区 针对初学…

UE Windows平台下Linux的交叉编译项目打包

UE Windows平台下Linux的交叉编译项目打包 交叉编译&#xff08;Cross-compilation&#xff09; 使得在以Windows为中心的工作流程中工作的游戏开发者能够以Linux为目标对项目进行打包。目前&#xff0c;只有Windows支持交叉编译。 交叉编译支持的平台 Windows | Linux-x86_…

每日3道PWN(第二天)

ciscn_2019_n_1 参考&#xff1a; [BUUCTF-pwn]——ciscn_2019_n_1-CSDN博客 [BUUCTF]PWN5——ciscn_2019_n_1_ciscn_2019_n_4-CSDN博客 BUUCTF—ciscn_2019_n_1 1-CSDN博客 checksec一下 64位栈溢出 按f5查看main函数&#xff0c;双击可疑函数 发现含有命令执行的且发现fl…

SOCKET、TCP、HTTP之间的区别与联系

SOCKET、TCP、HTTP之间的区别与联系 一、 Socket 1、什么是socket2、为什么需要socket3、建立socket连接 二、HTTP(基于TCP) 1、HTTP的概念2、HTTP连接的特点 连接请求&#xff1a;一次连接连接请求&#xff1a;短连接(socket是长连接) 三、TCP/IP协议簇 四、HTTP、Socket…

SQL 数据库语句- 创建和管理数据库

SQL CREATE DATABASE 语句 SQL CREATE DATABASE 语句用于创建一个新的 SQL 数据库。 语法 CREATE DATABASE 数据库名称;示例 以下 SQL 语句创建了一个名为 “testDB” 的数据库&#xff1a; CREATE DATABASE testDB;通过这个简单的语句&#xff0c;你可以成功地创建一个名…

30个Python小游戏,小白练手,我都能玩一天【内附源码】

给大家带来30个 Python 小游戏&#xff0c;一定要收藏&#xff01; 文末获取完整代码 有手就行 1、吃金币 import os import cfg import sys import pygame import random from modules import *游戏初始化 def initGame():# 初始化pygame, 设置展示窗口pygame.init()screen…

C/C++---------------LeetCode第118. 杨辉三角

杨辉三角 题目及要求动态规划在mian内使用 题目及要求 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示例 2: 输入: numRows 1 输出: [[1]] 提示: 1 < numRow…

ActiveMQ 反序列化漏洞(CVE-2015-5254)

ActiveMQ 反序列化漏洞 Apache ActiveMQ是一种开源的消息代理&#xff08;message broker&#xff09;&#xff0c;被广泛用于应用程序之间的消息传递。它提供可靠的消息传递模式&#xff0c;如发布/订阅、点对点和请求/响应&#xff0c;非常适合构建分布式系统和应用程序集成…

1_控制系统总体结构

1、总体结构 控制系统结构图&#xff1a; 黑色块为参数、黄色块为计算模块 1.1 其中参数含义 车辆属性参数&#xff1a; 参数含义 C α f C_{\alpha f} Cαf​自行车模型总轮胎侧偏刚度&#xff08;前轮&#xff09; C α r C_{\alpha r} Cαr​自行车模型总轮胎侧偏刚度&a…

客户案例:SMC2威胁感知升级,保障金融行业邮件安全

客户背景 某基金公司是一家在业界享有广泛声誉的综合型资产管理公司&#xff0c;总部位于广州&#xff0c;在北京、上海、香港等地区均设有公司&#xff0c;业务范围遍布全球&#xff0c;凭借其卓越的投资业绩和专业的基金管理服务&#xff0c;赢得了广大投资者的高度认可。 该…