t-SNE(t-分布随机邻居嵌入)详解
创作时间:
作者:
@小白创作中心
t-SNE(t-分布随机邻居嵌入)详解
引用
CSDN
1.
https://m.blog.csdn.net/weixin_67075116/article/details/145556576
t-SNE(t-分布随机邻居嵌入,t-Distributed Stochastic Neighbor Embedding)是一种降维与可视化技术,用于将高维数据投影到低维(通常是 2D 或 3D),以便人类可以更直观地观察数据的结构和聚类情况。
它主要用于高维数据的可视化,特别适用于数据集的探索、聚类分析,在机器学习、计算机视觉、自然语言处理(NLP)、生物信息学等领域有广泛应用。
1. t-SNE 的基本概念
t-SNE 是非线性降维算法,它的核心思想是:
- 在高维空间中,计算数据点之间的相似度(概率分布)。
- 在低维空间中,寻找新的坐标,使得数据点的相对相似性尽量与高维空间保持一致。
与PCA(主成分分析)相比: - PCA主要保留全局结构,适用于线性降维。
- t-SNE主要保留局部结构,更适合可视化高维数据中的聚类模式。
2. t-SNE 的工作原理
t-SNE 通过以下几个步骤来降维:
- 计算高维数据点之间的相似度(概率分布)
- 使用高斯分布计算数据点
和
之间的相似性: - 这个公式的核心思想是:如果
和
在高维空间中很接近,则它们的相似度
也会很高。
- 在低维空间初始化数据点
- 在2D 或 3D 空间初始化数据点
,并使用t-分布(t-Distribution)计算低维空间的相似度: - 这里使用t-分布代替高斯分布,因为t-分布的长尾性使得低维数据可以更好地分开。
- 最小化 KL 散度(Kullback-Leibler Divergence, KL 散度)
- t-SNE 的目标是让高维空间的相似性(p 分布)和低维空间的相似性(q 分布)尽可能相同。
- 通过梯度下降最小化 KL 散度:
- 这保证了低维数据能够最大程度地保留高维数据的结构。
3. t-SNE 的应用
t-SNE 主要用于高维数据可视化,帮助理解数据的分布和聚类情况。以下是几个典型的应用场景:
(1)图像数据降维
- 在计算机视觉领域,图像通常具有上千维的特征向量(如 CNN 提取的特征)。
- t-SNE 可以将这些高维特征映射到2D/3D空间,使不同类别的图像更易分辨。
- 示例:用 t-SNE 处理MNIST 数据集(手写数字分类),可以看到不同数字的分布情况。
(2)自然语言处理(NLP)
- t-SNE 可用于单词嵌入(Word Embeddings)可视化,比如:
- Word2Vec
- GloVe
- BERT 词向量
- 它可以帮助研究者理解单词之间的语义关系,如“国王”(king)和“皇后”(queen)在 t-SNE 映射后可能接近。
(3)基因表达数据分析
- 在生物信息学中,基因表达数据通常有数万维特征,难以直观分析。
- t-SNE 可用于基因分型、疾病分类、癌症细胞聚类等任务,使科学家更容易发现模式。
(4)市场和客户分析
- 在电子商务和市场分析中,t-SNE 可以帮助理解客户的行为模式,将不同类型的消费者聚类。
4. t-SNE 与其他降维方法的比较
方法 | 适用场景 | 优势 | 局限性 |
---|---|---|---|
PCA(主成分分析) | 线性降维、特征提取 | 计算快,保留全局结构 | 只适用于线性关系,难以保留局部结构 |
t-SNE | 可视化、非线性降维 | 适用于高维数据,能捕捉局部结构 | 计算慢,不能直接用于预测新数据 |
UMAP(Uniform Manifold Approximation and Projection) | 可视化、聚类 | 计算速度比 t-SNE 快,保留全局和局部结构 | 参数敏感性较高 |
5. t-SNE 代码示例
我们可以使用scikit-learn库来实现 t-SNE,将MNIST(手写数字)数据降维并可视化。
import numpy as np
import matplotlib.pyplot as plt
from sklearn.manifold import TSNE
from sklearn.datasets import load_digits
# 加载手写数字数据集(64 维)
digits = load_digits()
X = digits.data
y = digits.target
# 使用 t-SNE 降维到 2 维
tsne = TSNE(n_components=2, perplexity=30, learning_rate=200, random_state=42)
X_tsne = tsne.fit_transform(X)
# 画出降维后的 2D 数据
plt.figure(figsize=(8, 6))
scatter = plt.scatter(X_tsne[:, 0], X_tsne[:, 1], c=y, cmap='jet', alpha=0.7)
plt.colorbar(scatter, label='Digit Label')
plt.xlabel('t-SNE Component 1')
plt.ylabel('t-SNE Component 2')
plt.title('t-SNE Visualization of MNIST Digits')
plt.show()
结果
- 手写数字(0-9)被映射到了 2D 平面,不同类别的数字被聚类到不同的区域。
- 可以直观地看到数据的分类情况,发现某些数字可能存在重叠或误分类。
6. t-SNE 的缺点
尽管 t-SNE 适用于数据可视化,但它也有一些局限性:
- 计算成本高:t-SNE 计算量较大,特别是当数据量较多时,运行速度慢。
- 不能直接用于新数据:t-SNE 是无监督学习,每次运行可能得到不同的结果,不能像 PCA 一样用于新数据的降维。
- 参数敏感:
- perplexity(困惑度):控制局部 vs. 全局结构的权衡,通常在 5-50 之间调整。
- 学习率(learning rate):太小可能收敛慢,太大可能导致数据点塌缩。
7. 总结
- t-SNE是一种非线性降维算法,用于可视化高维数据,特别适用于数据探索和聚类分析。
- 它通过t-分布计算数据点的相似性,并优化低维嵌入,使得数据在低维空间中尽可能保持原有的邻近关系。
- t-SNE 适用于图像、NLP、基因数据分析等场景,能有效展示数据的内在结构。
- 主要缺点是计算成本较高,对参数(如 perplexity)的调整较敏感,不能直接用于新数据的降维。
什么时候用 t-SNE?
如果你的目标是可视化高维数据并理解数据的分布和聚类情况,t-SNE 是一个很好的选择!
热门推荐
山东德州:探索千年古城的十大风景名胜
为什么现在应该采用标准方法进行非财务报告
掉眉毛正不正常?医生为你解答
光纤光栅详解
一文读懂新能源充电桩检验检测的项目及其标准
老年人失眠多梦?用饮食来助你安睡!
情绪不稳、容易冲动?了解「杏仁核」掌控自己的情绪!
甲骨文“安”字:守护千年安宁的文化符号
工业互联网在智能制造中的应用与影响研究
年柱庚寅日柱甲午:八字命理深度解析
哪些食物含动物蛋白
线线勾勒人物,针针绣出人生:刺绣艺术的情感表达
如何实现录音中人声的清晰化处理?有哪些有效技巧?
如何用中文进行软件开发
RMC数据分析巴黎对巴萨次回合翻盘前景:巴黎形势不容乐观
轻微肇事逃逸怎么认定?
电线杆对房子的风水有哪些影响?大门前有电线杆好吗
小肚子被踹了一脚有事吗
重大突破!科学家揭示氯化氢溶解形成盐酸的微观机理
如何预测答辩中的常见问题?提早准备有备无患
ArcGIS数据库备份完整指南:从需求分析到恢复实战
英雄联盟手游:烬的高效打法与策略解析
考研计算机408专业课详解:计算机专业408科目概览与备考指南
揭秘单位强迫员工玩游戏的违法性:劳动法规定在此
凹陷性疤痕消除的几种方法,如何有效消除凹陷疤痕
工业相机镜头温度稳定性对成像质量的影响及解决方案
什么是骆驼绒?从结构到应用的全面解析
韩江凭什么获得诺贝尔文学奖?韩国文学作品魅力其实不容小觑
空天往返、降低成本、可重复使用!货运航天飞机“昊龙”来了
香港的国际学校顶尖的教育质量与资源