【机器学习】机器学习的基本分类-无监督学习-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:高维数据的相似性建模

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

  • 是点 的标准差(自适应调整)。
  • 对称化处理,定义联合概率

其中 N 是样本总数。

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

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

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

步骤 3:优化目标

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

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

步骤 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:

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

7. 应用场景

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

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

相关推荐
gu2041 分钟前
c#编程:学习Linq,重几个简单示例开始
开发语言·学习·c#·linq
AL.千灯学长1 小时前
DeepSeek接入Siri(已升级支持苹果手表)完整版硅基流动DeepSeek-R1部署
人工智能·gpt·ios·ai·苹果vision pro
LCG元1 小时前
大模型驱动的围术期质控系统全面解析与应用探索
人工智能
小蒜学长2 小时前
医疗报销系统的设计与实现(代码+数据库+LW)
数据库·spring boot·学习·oracle·课程设计
lihuayong2 小时前
计算机视觉:主流数据集整理
人工智能·计算机视觉·mnist数据集·coco数据集·图像数据集·cifar-10数据集·imagenet数据集
政安晨2 小时前
政安晨【零基础玩转各类开源AI项目】DeepSeek 多模态大模型Janus-Pro-7B,本地部署!支持图像识别和图像生成
人工智能·大模型·多模态·deepseek·janus-pro-7b
羊小猪~~2 小时前
MYSQL学习笔记(九):MYSQL表的“增删改查”
数据库·笔记·后端·sql·学习·mysql·考研
一ge科研小菜鸡2 小时前
DeepSeek 与后端开发:AI 赋能云端架构与智能化服务
人工智能·云原生
冰 河2 小时前
‌最新版DeepSeek保姆级安装教程:本地部署+避坑指南
人工智能·程序员·openai·deepseek·冰河大模型
维维180-3121-14552 小时前
AI赋能生态学暨“ChatGPT+”多技术融合在生态系统服务中的实践技术应用与论文撰写
人工智能·chatgpt