t-SNE模型

视频云直播RTC

前言

高维数据映射通常涉及使用降维技术,其中t-SNE是一种非线性降维技术,用于将高维数据映射到低维空间,以便可视化和理解数据的结构。

t-SNE的核心思想是基于相似性概率的建模,其中相似的数据点在映射后仍然保持相似。具体而言,给定两个数据点 和 它们在高维空间中的相似性概率 () 表示为:

其中, 是数据点 和 之间的欧几里德距离, 是数据点 周围点的高斯分布的方差,用于衡量每个数据点周围邻居的密度。

在低维空间中,相似性概率 () 通过使用 分布来建模,具体表示为:

其中, 和 是数据点 和 在低维空间中的映射。

t-SNE通过最小化相似性分布 和 之间的 散度来优化映射,具体表示为:

在t-SNE的优化过程中,通过梯度下降等优化算法,调整低维空间的映射,使得 散度越小,高维空间中相似的数据点在低维空间中仍然保持相似。需要注意的是,t-SNE是一个非凸优化问题,因此可能存在多个局部最小值,而初始参数选择对结果影响较大。公式描述了t-SNE的基本数学原理,实际应用中会有一些细微的调整和改进,以提高算法的性能。

t-SNE在实际中的主要应用方面:

  1. 数据探索和可视化: t-SNE广泛用于将高维数据集映射到二维或三维空间,以便通过可视化来探索数据的结构和模式。它有助于发现数据中的群集、聚类或潜在的子结构,帮助用户更好地理解数据。
  2. 聚类分析: t-SNE的降维特性使其成为聚类分析的有力工具。通过在低维空间中可视化数据点,用户可以更容易地识别数据中的聚类结构,从而帮助聚类算法的选择和调整。
  3. 异常检测: 通过在低维空间中观察数据点的分布,t-SNE有助于发现数据中的异常点。异常点通常在低维空间中表现出与正常点不同的模式,使得它们更容易被识别。
  4. 自然语言处理(NLP): 在自然语言处理任务中,t-SNE可用于将词嵌入(word embeddings)映射到低维空间,以便在二维平面上可视化单词之间的语义关系。这有助于理解单词嵌入的语义结构。
  5. 图像处理: 在图像处理领域,t-SNE可以用于将图像特征映射到低维空间,以便进行图像分类、检测和相似性分析。这有助于理解图像数据的结构和模式。
  6. 生物信息学: 在生物信息学中,t-SNE可以用于分析基因表达数据,帮助发现基因表达模式并识别潜在的生物学群集。

需要注意的是,t-SNE对于大规模数据集的计算成本较高,因此在处理大型数据时,可能需要采取一些优化策略或考虑其他降维技术。此外,t-SNE的结果对于不同的初始化和超参数可能会有所不同,因此在使用时需要进行谨慎调整。

代码实现


          
# 导入所需的库
          
import numpy as np
          
import matplotlib.pyplot as plt
          
from sklearn import datasets
          
from sklearn.manifold import TSNE
          

          
# 加载Iris数据集 鸢尾花
          
iris = datasets.load_iris()
          
X = iris.data
          
y = iris.target
          
print('数据降维前维度:',X.shape)
          
# 使用t-SNE进行降维
          
tsne = TSNE(n_components=2, random_state=0)
          
X_2d = tsne.fit_transform(X)
          
print('数据降维后维度:',X_2d.shape)
      

picture.image

使用了t-SNE算法对鸢尾花(Iris)数据集进行降维,降维前数据维度为(150,4)进行降维后数据维度变为(150,2)将高维数据集映射到二维空间,以便通过可视化来探索数据每个类别的群集。


          
# 创建一个包含三个子图的画布
          
fig, ax = plt.subplots(figsize=(10, 8))
          
colors = ['red', 'green', 'blue']
          
labels = ['Setosa', 'Versicolor', 'Virginica']
          
for i in range(len(np.unique(y))):
          
    indices = y == i
          
    ax.scatter(X_2d[indices, 0], X_2d[indices, 1], c=colors[i], label=labels[i], edgecolors='k', s=80)
          
ax.legend()
          
ax.set_title('t-SNE Visualization of Iris Dataset')
          
ax.set_xlabel('t-SNE Component 1')
          
ax.set_ylabel('t-SNE Component 2')
          
for i in range(X_2d.shape[0]):
          
    ax.text(X_2d[i, 0], X_2d[i, 1], str(y[i]), color=colors[y[i]], fontsize=8, ha='center', va='center')
          
plt.show()
      

picture.image

通过t-SNE降维后的鸢尾花数据集进行可视化,每个类别用不同颜色表示,同时显示数据点的类别标签,实现了高维数据集的降维可视化,使得用户可以更容易地识别数据中的聚类结构,从而帮助聚类算法的选择和调整。

如果你对类似于这样的文章感兴趣。

欢迎关注、点赞、转发~

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

相关资源
字节跳动云原生降本增效实践
本次分享主要介绍字节跳动如何利用云原生技术不断提升资源利用效率,降低基础设施成本;并重点分享字节跳动云原生团队在构建超大规模云原生系统过程中遇到的问题和相关解决方案,以及过程中回馈社区和客户的一系列开源项目和产品。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论