AI学习指南机器学习篇-t-分布领域嵌入(t-Distributed Stochastic Neighbor Embedding,t-SNE)简介

AI学习指南机器学习篇-t-分布领域嵌入(t-Distributed Stochastic Neighbor Embedding,t-SNE)简介

导言

在机器学习中,高维数据的降维和可视化一直是一个重要的问题。高维数据往往难以理解和分析,而且直接在高维空间中进行计算也会面临计算复杂度高的问题。为了解决这个问题,人们提出了很多降维算法,其中t-SNE(t-Distributed Stochastic Neighbor Embedding)是一种非常有效且广泛应用的算法。

本文将介绍t-SNE算法的基本概念和其在无监督学习中的应用。我们将详细解释t-SNE在降维和可视化高维数据中的作用和优势,并通过实例来说明其在实际问题中的应用。

t-SNE算法基本概念

t-SNE是由Laurens van der Maaten和Geoffrey Hinton在2008年提出的一种降维算法。它可以将高维数据映射到低维空间,同时保留原始数据的局部结构和全局结构。相比于其他降维算法,t-SNE在保持数据间相对距离关系上更加准确。

t-SNE的基本思想是通过构建一个损失函数,利用梯度下降方法将高维数据映射到低维空间。具体来说,t-SNE首先计算高维数据中样本点之间的相似度,然后在低维空间中计算样本点之间的相似度,通过最小化两个相似度之间的差异来优化映射关系。t-SNE使用了t分布来定义高维数据中样本之间的相似度,因此得名t-SNE。

在计算高维数据中样本点之间的相似度时,t-SNE使用了高斯核函数,即计算样本之间的概率密度。这样一来,距离较近的样本点在高维空间中的概率值较大,而距离较远的样本点在高维空间中的概率值较小。在计算低维空间中样本点之间的相似度时,t-SNE同样使用高斯核函数,但是带有一个自适应的方差。这样一来,在低维空间中的样本点之间的相似度更容易受到距离的影响,从而能够更好地保持局部结构和全局结构。

t-SNE在无监督学习中的应用

t-SNE主要应用于无监督学习中的降维和可视化任务。它在许多领域都有广泛的应用,例如自然语言处理、图像处理和生物信息学等。

降维

降维是t-SNE最常见的应用之一。在高维数据中,许多特征之间存在冗余或相关性,而且高维空间中的计算复杂度也很高。因此,将高维数据映射到低维空间可以降低计算复杂度,并且更容易理解和分析数据。

下面我们以手写数字数据集MNIST为例进行降维实验。MNIST数据集包含60000个训练样本和10000个测试样本,每个样本是一个28x28的灰度图像,表示一个手写数字。我们首先使用PCA(Principal Component Analysis)将数据降到2维,然后使用t-SNE将数据映射到2维。

python 复制代码
import numpy as np
from sklearn.decomposition import PCA
from sklearn.manifold import TSNE
import matplotlib.pyplot as plt

# 加载MNIST数据集
mnist = np.load("mnist.npz")
X_train, y_train = mnist["x_train"], mnist["y_train"]

# 使用PCA进行降维
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_train[:1000])

# 使用t-SNE进行降维
tsne = TSNE(n_components=2)
X_tsne = tsne.fit_transform(X_train[:1000])

# 绘制结果
plt.figure(figsize=(10, 5))
plt.subplot(121)
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y_train[:1000])
plt.title("PCA")
plt.subplot(122)
plt.scatter(X_tsne[:, 0], X_tsne[:, 1], c=y_train[:1000])
plt.title("t-SNE")
plt.show()

从实验结果可以看出,使用PCA进行降维后,数据仍然存在较大的重叠。而使用t-SNE进行降维后,不同数字之间更加分散,保留了数据的局部结构。

可视化

除了降维以外,t-SNE还可用于可视化高维数据。通过将高维数据映射到2维或3维空间,我们可以直观地观察数据的分布和结构,并发现其中的关联性。

以人脸识别为例,我们可以使用t-SNE将人脸特征向量映射到2维空间,并用散点图展示不同人脸之间的关系。以下是一个简单的示例代码:

python 复制代码
import numpy as np
from sklearn.datasets import fetch_lfw_people
from sklearn.decomposition import PCA
from sklearn.manifold import TSNE
import matplotlib.pyplot as plt

# 加载人脸数据集
lfw_people = fetch_lfw_people(min_faces_per_person=30)

# 使用PCA进行降维
pca = PCA(n_components=50)
X_pca = pca.fit_transform(lfw_people.data)

# 使用t-SNE进行降维
tsne = TSNE(n_components=2)
X_tsne = tsne.fit_transform(X_pca)

# 绘制结果
plt.figure(figsize=(10, 10))
plt.scatter(X_tsne[:, 0], X_tsne[:, 1], c=lfw_people.target, alpha=0.7)
plt.colorbar(ticks=range(len(lfw_people.target_names)))
plt.show()

通过以上代码,我们可以将人脸数据集映射到2维空间,并用不同颜色表示不同的人物。通过观察散点图,我们可以发现人物之间的相似性和聚类关系,从而更好地理解数据。

t-SNE的作用和优势

t-SNE在降维和可视化高维数据中具有以下作用和优势:

  1. 保持原始数据的局部结构和全局结构:t-SNE能够有效地在低维空间中保持样本点之间的相对距离关系,从而保留了原始数据的局部结构和全局结构。
  2. 对非线性关系敏感:t-SNE使用了概率分布来描述相似度,可以更好地处理非线性关系。
  3. 可视化效果好:通过将高维数据映射到2维或3维空间,t-SNE可以直观地展示数据的分布和结构,并帮助我们发现其中的关联性。
  4. 适用于多种数据类型:t-SNE适用于各种数据类型,包括数值型数据、文本数据和图像数据等。

综上所述,t-SNE是一种非常强大且灵活的降维算法,广泛应用于无监督学习中的降维和可视化任务。

总结

本文介绍了t-SNE算法的基本概念和其在无监督学习中的应用。我们详细解释了t-SNE在降维和可视化高维数据中的作用和优势,并通过实例来说明其在实际问题中的应用。

t-SNE通过保持样本点之间的相对距离关系,能够有效地在低维空间中呈现数据的局部结构和全局结构,对于非线性关系也非常敏感。通过将高维数据映射到2维或3维空间,t-SNE可以直观地展示数据的分布和结构,帮助我们更好地理解和分析数据。

希望本文能够帮助读者更好地理解和应用t-SNE算法,在机器学习中取得更好的学习效果。

相关推荐
Trouvaille ~3 小时前
【机器学习】从流动到恒常,无穷中归一:积分的数学诗意
人工智能·python·机器学习·ai·数据分析·matplotlib·微积分
WebCandy21 小时前
EsChatPro 接入国内 DeepSeek 大模型
ai·aigc
南七澄江1 天前
各种网站(学习资源及其他)
开发语言·网络·python·深度学习·学习·机器学习·ai
ai_lian_shuo1 天前
四、使用langchain搭建RAG:金融问答机器人--构建web应用,问答链,带记忆功能
python·ai·金融·langchain·机器人
凳子花❀1 天前
强化学习与深度学习以及相关芯片之间的区别
人工智能·深度学习·神经网络·ai·强化学习
米开朗基杨2 天前
Sealos Devbox 基础教程:使用 Cursor 从零开发一个代码猜古诗小游戏
ai·cursor·sealos·devbox
GitCode官方2 天前
GitCode 光引计划投稿|JavaVision:引领全能视觉智能识别新纪元
人工智能·ai·gitcode
HUIBUR科技2 天前
人工智能与云计算的结合:如何释放数据的无限潜力?
人工智能·ai·云计算
杨浦老苏2 天前
开源PDF翻译工具PDFMathTranslate
人工智能·docker·ai·pdf·群晖·翻译
落魄实习生3 天前
AI应用-本地模型实现AI生成PPT(简易版)
python·ai·vue·ppt