为什么要降维
现实数据动辄几十、几百甚至上千个特征:一张小图就有数千个像素,一段文本向量可能有几百维。维度一高,麻烦就跟着来——计算和存储成本上升,可视化无从下手,而且高维空间里样本会变得极其稀疏,距离度量逐渐"失灵",这就是所谓的"维度灾难"。降维(Dimensionality Reduction)就是想办法用更少的维度,尽量保留原来数据里真正有用的信息。
降维的两条思路
一是特征选择:从原有特征里挑出最有用的若干列,含义不变,比如只保留方差最大、或与目标最相关的特征。二是特征提取(投影):把原特征重新组合成新的、更少的维度,新维度通常是原特征的函数,往往不再有直观含义。PCA 和 t-SNE 都属于后者。
PCA:找"信息量最大"的方向
主成分分析(Principal Component Analysis,PCA)的思路是:把数据投影到一个低维子空间,让投影后的方差尽可能大——方差越大,说明保留下来的信息越多。它对数据中心化后,通过协方差矩阵的特征向量(或奇异值分解 SVD)得到一组互相正交的主成分:第一主成分方差最大,第二主成分次之,依此类推,取前 k 个就完成了降维。
PCA 的优点是数学基础明确、可逆(能近似还原)、计算快;缺点是它是线性方法,只能捕捉线性结构,且对特征尺度敏感,通常要先标准化。它也常被用来去噪和压缩。
t-SNE 与 UMAP:为了"看得见"
t-SNE(t-分布随机邻域嵌入)是一种非线性降维方法,主打可视化。它把高维中"相近"的点在低维(通常降到二维)里也拉近,把"不相近"的点推开,擅长把复杂的高维簇在平面上铺开,是神经网络特征可视化常用工具。但它计算较慢,而且低维图中簇与簇之间的距离没有可靠意义,不能据此判断"簇 A 真的比簇 B 更远"。UMAP 是后来出现的方法,速度更快,对全局结构的保持通常更好,近年被广泛使用。
怎么选
目的是压缩、去噪、加速下游模型:优先 PCA(线性、可控、可逆)。目的是把高维数据画成图给人看:用 t-SNE 或 UMAP。数据规模很大、又要兼顾局部与全局结构:常直接用 UMAP,或先用 PCA 降到几十维再跑 t-SNE(这是常见的两步做法)。
常见误区
1. 把 t-SNE 图当作"真相"——它主要反映局部邻近关系,簇的大小和间距都不稳定,换个随机种子图就可能变样。
2. 忘记标准化——PCA 对量纲极其敏感,不标准化会让数值大的特征主导结果。
3. 以为降维一定提升精度——它更多是用来压缩、去噪和可视化;维度并非越低越好,砍掉有用信息反而会让效果变差。
一句话总结
降维是给高维数据"瘦身"和"翻译":PCA 用线性投影保留最大方差,t-SNE 与 UMAP 为非线性的可视化服务。理解它们的适用边界,往往比记住公式更重要。
【参考来源】综合整理自公开发表的教材与行业资料,包括 scikit-learn 关于 PCA、t-SNE 的官方文档,以及 PCA、t-SNE、UMAP 等方法的公开论文与综述。