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算法,在机器学习中取得更好的学习效果。

相关推荐
飞起来fly呀9 小时前
AI驱动电商新未来:提升销售效率与用户体验的创新实践
人工智能·ai
Jing_jing_X11 小时前
心情追忆-首页“毒“鸡汤AI自动化
java·前端·后端·ai·产品经理·流量运营
刘悦的技术博客1 天前
MagicQuill,AI动态图像元素修改,AI绘图,需要40G的本地硬盘空间,12G显存可玩,Win11本地部署
ai·aigc·python3.11
探索云原生1 天前
大模型推理指南:使用 vLLM 实现高效推理
ai·云原生·kubernetes·gpu·vllm
Elastic 中国社区官方博客1 天前
Elasticsearch:如何部署文本嵌入模型并将其用于语义搜索
大数据·人工智能·elasticsearch·搜索引擎·ai·全文检索
guanpinkeji2 天前
AI数字人视频小程序:引领未来互动新潮流
人工智能·ai·小程序·软件开发·小程序开发·ai数字人小程序
Elastic 中国社区官方博客2 天前
使用 Elasticsearch 构建食谱搜索(二)
大数据·人工智能·python·elasticsearch·搜索引擎·ai
良少2 天前
使用合适的Prompt充分利用ChatGPT的能力
人工智能·ai·chatgpt·prompt
AliCloudROS3 天前
使用SaaS化的Aurora应用快速搭建私人ChatGPT助手
阿里云·ai·chatgpt·saas应用
pumpkin845143 天前
什么是 Faiss?
ai