📢 转载信息
原文链接:https://machinelearningmastery.com/choosing-between-pca-and-t-sne-for-visualization/
原文作者:Jason Brownlee
降维是数据分析和机器学习中的一个重要步骤,它能帮助我们处理高维数据,并将其可视化。两种最流行的降维技术是主成分分析 (PCA) 和 t-分布随机邻域嵌入 (t-SNE)。虽然它们都可以用于将数据从高维空间映射到低维空间(通常是二维或三维,以便绘图),但它们的工作原理、应用场景和结果解释方式却大相径庭。
选择正确的降维方法取决于您的具体目标。本文将解释 PCA 和 t-SNE 之间的关键区别,并提供何时使用每种方法的指南。
首先,我们来看一张图,它概述了这两种技术的关键特性。
PCA 与 t-SNE 对比
PCA 和 t-SNE 都旨在减少数据维度,但它们的方法论截然不同。
主成分分析 (PCA)
PCA 是一种线性降维技术,它试图找到数据中方差最大的方向(即主成分),并将数据投影到这些方向上。PCA 的核心目标是保留数据中尽可能多的信息(方差),同时减少维度。
PCA 的主要特点包括:
- 线性: PCA 假设数据结构是线性的。
- 全局结构: 它关注整体数据的分布和方差,旨在保留全局结构。
- 可解释性: 主成分是原始特征的线性组合,因此结果相对容易解释。
- 计算效率高: PCA 速度快,适用于大型数据集。
t-SNE (t-distributed Stochastic Neighbor Embedding)
t-SNE 是一种非线性降维技术,它主要关注保留高维空间中数据点的局部结构。它通过最小化高维空间中点对之间的概率分布与低维空间中点对之间概率分布之间的差异来实现降维。
t-SNE 的主要特点包括:
- 非线性: t-SNE 擅长揭示高维数据中复杂的非线性结构。
- 局部结构: 它主要关注保留局部邻域关系,特别是近邻点之间的关系。
- 可解释性差: 降维后的坐标值本身没有直接的统计学意义,且全局结构(不同簇之间的距离)可能不准确。
- 计算成本高: t-SNE 的计算复杂度较高,对大型数据集可能较慢。
何时使用 PCA
由于 PCA 是一种快速、简单且易于解释的线性降维方法,它通常在以下情况下是首选:
1. 数据预处理
PCA 常被用作机器学习模型(如聚类、分类)的预处理步骤。通过减少特征数量和噪声,PCA 可以帮助提高模型性能和训练速度。
2. 探索性数据分析 (EDA)
PCA 提供了对数据最大方差方向的洞察。如果您想了解数据的主要“变化轴”是什么,PCA 是一个很好的起点。
3. 可视化全局结构
当您需要一个对数据整体结构有大致了解的、可重复的二维(或三维)表示时,PCA 是一个可靠的选择。
要使用 PCA 进行可视化,通常是将数据降至 2 个维度,然后绘制散点图。
# 示例:使用PCA降维到2个维度
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
reduced_data = pca.fit_transform(data)
何时使用 t-SNE
t-SNE 是一种出色的可视化工具,尤其擅长揭示高维数据中复杂的、非线性的局部簇结构。它通常在以下情况下使用:
1. 发现高维数据的簇结构
这是 t-SNE 最常用于数据科学的场景。如果您的数据中包含许多复杂的、交织在一起的簇,t-SNE 通常能比 PCA 更清晰地将它们分离开来,因为它专注于局部相似性。
2. 评估嵌入质量
在训练深度学习模型(如自编码器或大型语言模型)时,您可能会获得数据的低维嵌入向量。t-SNE 可用于可视化这些嵌入,以评估模型是否成功地将相似项聚集在一起。
要使用 t-SNE 进行可视化,通常是将数据降至 2 个或 3 个维度,然后绘制散点图。
# 示例:使用t-SNE降维到2个维度
from sklearn.manifold import TSNE
tsne = TSNE(n_components=2)
reduced_data = tsne.fit_transform(data)
⚠️ 注意: t-SNE 具有随机性,每次运行时可能会产生不同的结果。此外,低维空间中簇之间的距离或簇的大小可能不具有统计学意义。
PCA 和 t-SNE 的常见误区
在使用这两种技术时,有几个常见的误区需要避免。
PCA 误区:
- 认为保留了所有重要信息: PCA 仅保留了方差最大的方向。如果重要的区别信息存在于低方差方向上,PCA 可能会将其丢弃。
- 过度依赖主成分的数量: 确定应该保留多少个主成分(即 $k$ 值)并非总是一件容易的事,虽然可以通过累积方差图来辅助判断。
t-SNE 误区:
- 解释簇间距离: t-SNE 不保留全局结构。两个在 t-SNE 图上看起来很远的簇,在原始高维空间中可能非常接近,反之亦然。您只能相信局部簇的紧密程度。
- 将参数视为“真理”: t-SNE 对其超参数(尤其是 perplexity,困惑度)非常敏感。不同的 perplexity 值可以产生截然不同的可视化结果。
结论: PCA 擅长发现全局、线性的变化,而 t-SNE 擅长揭示局部、非线性的簇结构。
总结
选择 PCA 还是 t-SNE 取决于您的目标:
- 如果目标是快速、可解释的降维,并保留整体方差: 使用 PCA。它适用于特征提取和预处理。
- 如果目标是可视化高维数据中复杂的局部聚类和结构: 使用 t-SNE。它更适合探索性的数据分析和验证嵌入质量。
许多情况下,最好的方法是结合使用这两种技术:首先使用 PCA 来减少维度(例如降到 50 维,这可以显著提高 t-SNE 的计算速度并减少其随机性),然后将 PCA 的结果输入 t-SNE 以获得最终的 2D 可视化。
🚀 想要体验更好更全面的AI调用?
欢迎使用青云聚合API,约为官网价格的十分之一,支持300+全球最新模型,以及全球各种生图生视频模型,无需翻墙高速稳定,文档丰富,小白也可以简单操作。
评论区