降维: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 是常见组合。
参考与延伸阅读
- scikit-learn 降维用户指南。已核验。https://scikit-learn.org/stable/modules/decomposition.html
- van der Maaten 与 Hinton 的 t-SNE 原始论文。已核验。https://www.jmlr.org/papers/volume9/vandermaaten08a/vandermaaten08a.pdf
本文累计阅读 — 次