降维:PCA 与 t-SNE

降维把成百上千维的特征压缩到二维或三维,既方便画图观察,也能去掉冗余噪声、缓解维度灾难。PCA 与 t-SNE 是两类代表性方法:前者是线性、可解释的投影,后者是非线性、重局部结构的流形学习。

PCA 在算什么

主成分分析(PCA)先对数据做中心化,再求协方差矩阵的特征向量,取方差最大的几个方向作为新坐标轴。投影到这些主成分上能在最小平方误差意义下保留最多信息。它是有监督无关的无监督线性变换。

from sklearn.decomposition import PCA

pca = PCA(n_components=2)
X2 = pca.fit_transform(X)          # 降到 2 维
print(pca.explained_variance_ratio_)

t-SNE 的特点

t-SNE 把高维相似度转化为条件概率,再用 KL 散度让低维分布逼近高维分布。它擅长把聚拢的簇拉开,适合可视化,但其距离、密度并不保持全局尺度,且每次随机初始化结果可能不同。

from sklearn.manifold import TSNE

tsne = TSNE(n_components=2, perplexity=30)
X_vis = tsne.fit_transform(X)

怎么选

PCA 适合预处理、去噪与需要可逆解释的场景;t-SNE 适合探索性可视化,不适合当作下游模型的输入特征。 perplexity 通常取 5 到 50,需按数据规模调整。

小结

PCA 用线性主成分保留最大方差,可解释且可逆;t-SNE 用概率分布保持局部邻域,擅长可视化却不宜做特征。二者互补:先用 PCA 压到几十维再接 t-SNE 是常见组合。

参考与延伸阅读

本文累计阅读