【机器学习】机器学习的基本分类-无监督学习-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 是一种强大的非线性降维工具,广泛应用于高维数据分析和可视化。尽管存在一些缺点,但通过合理调参和改进版本的使用,它依然是数据科学的重要工具。

相关推荐
碧海银沙音频科技研究院4 小时前
基于炬芯ATS3089X音箱的音乐播放歌词显示功能实现
人工智能·驱动开发·嵌入式硬件·算法
、达西先生4 小时前
【unifolm_wla】从动作语言到连续机器人控制
人工智能·深度学习·机器人·宇树·wam·wla
2603_969579284 小时前
怎样取消电脑上的自动备份?不同来源的关闭方法
学习
CV@CV4 小时前
世界模型环境预测与内在表征基础原理
人工智能·学习·边缘计算·量子计算·具身智能
知识分享小能手4 小时前
C学习教程,从入门到精通,C语言数组 —— 知识点详解(8)
c语言·学习·算法
老余说AI4 小时前
2026 多语言语音克隆 AI 工具推荐:把克隆嵌进视频本地化全流程
人工智能·声音克隆
HAHAXX84 小时前
可以直接部署使用的AI RPA有哪些?全离线内网部署方案实测
人工智能·rpa
前端小菜鸡yy4 小时前
前端 + AI 全链路开发教程:从设计图、需求文档、接口文档到项目管理
人工智能
卿卿的产品经理日记4 小时前
【AI产品经理实战】Day 34|计算机科学速成②:从水流开关到 Unicode,把整个电脑拆成一长串 0 和 1
人工智能·笔记·科技·学习·产品经理