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

相关推荐
智星云算力几秒前
智星云镜像共享全流程指南,附避坑手册(新手必看)
人工智能
盖雅工场2 分钟前
驱动千店销售转化提升10%:3C零售门店的人效优化实战方案
大数据·人工智能·零售·数字化管理·智能排班·零售排班
Loo国昌9 分钟前
深入理解 FastAPI:Python高性能API框架的完整指南
开发语言·人工智能·后端·python·langchain·fastapi
发哥来了11 分钟前
【AI视频创作】【评测】【核心能力与成本效益】
大数据·人工智能
Sarvartha14 分钟前
LangChain 入门核心知识学习笔记
笔记·学习·langchain
QZ_orz_freedom18 分钟前
后端学习笔记-苍穹外卖
笔记·学习
醉舞经阁半卷书144 分钟前
Python机器学习常用库快速精通
人工智能·python·深度学习·机器学习·数据挖掘·数据分析·scikit-learn
码农水水2 小时前
米哈游Java面试被问:机器学习模型的在线服务和A/B测试
java·开发语言·数据库·spring boot·后端·机器学习·word
产品何同学2 小时前
在线问诊医疗APP如何设计?2套原型拆解与AI生成原型图实战
人工智能·产品经理·健康医疗·在线问诊·app原型·ai生成原型图·医疗app
星爷AG I2 小时前
9-14 知觉整合(AGI基础理论)
人工智能·agi