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

相关推荐
学着改变2753 分钟前
2026便携式超声波流量计性能白皮书 户外巡检适用性横评
大数据·网络·人工智能·科技·产品运营·量子计算
CVer儿5 分钟前
cuda的跨线程设计sdk方法和需要注意点
人工智能
盼小辉丶7 分钟前
PyTorch强化学习实战——融合人类示范数据的高效强化学习
人工智能·pytorch·python·深度学习·强化学习
空堂与归13 分钟前
序列数据怎么喂给神经网络?用循环神经网络RNN拆开一个时间步
人工智能·rnn·神经网络·nlp
尺度商业16 分钟前
大变革下的电力新序章:供需重塑、错配破解与价值重估
人工智能
天远Date Lab20 分钟前
零信任架构实战:基于天远车信盟出险构建自动化汽车消费贷合规网关
人工智能·机器学习·计算机视觉·ocr
知见漫记23 分钟前
AI文档总结折叠手机推荐,联想moto razr Fold让信息处理更高效
人工智能·智能手机
虎虎(_ _)。゜zzZ26 分钟前
Qdrant向量数据库工程实战
数据库·人工智能·大模型·向量数据库·rag·qdrant
DM今天肝到几点?27 分钟前
GPT-6 Astra 发布:ARC-AGI-3 从 7.8% 跳到 99.9%,OpenAI 宣告「欢迎进入 AGI 时代」
人工智能·gpt·深度学习·agi
是隼人28 分钟前
buuctf-pwn [HarekazeCTF2019]baby_rop2(64位ret2libc)题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门