跳到主要内容

降维算法

问题

PCA 和 t-SNE 的原理分别是什么?应用场景有何不同?

答案

一、为什么要降维

  • 减少计算量:降低特征维度,加速训练
  • 去除噪声:过滤冗余特征
  • 可视化:将高维数据降到 2D/3D 展示
  • 缓解维度灾难:高维空间中数据稀疏

二、PCA(主成分分析)

PCA 找到数据方差最大的方向作为新坐标轴:

  1. 数据中心化(减去均值)
  2. 计算协方差矩阵
  3. 特征值分解
  4. 选择前 K 个最大特征值对应的特征向量
  5. 投影到新空间
Z=XWk(Wk 为前 k 个特征向量)Z = XW_k \quad (W_k \text{ 为前 k 个特征向量})
保留方差比例
  • 通常选择保留 95% 方差的主成分数量
  • explained_variance_ratio_ 查看每个主成分的贡献

三、t-SNE 与 UMAP

对比维度PCAt-SNEUMAP
类型线性非线性非线性
保持结构全局局部局部+全局
速度
可逆性可逆不可逆不可逆
主要用途降维/去噪可视化可视化/降维
新数据直接投影不支持支持

四、应用场景

场景推荐算法
特征降维(训练前)PCA
高维数据可视化t-SNE 或 UMAP
Embedding 可视化UMAP(速度快)
图像压缩PCA
异常检测PCA(重构误差)

常见面试问题

Q1: PCA 和 LDA 有什么区别?

答案

  • PCA:无监督,最大化方差,找数据变化最大的方向
  • LDA:有监督,最大化类间距离/类内距离,找最利于分类的方向
  • PCA 用于降维/去噪,LDA 用于分类前的特征提取

Q2: t-SNE 为什么不适合做特征降维,只适合可视化?

答案

  • t-SNE 不支持对新数据投影(没有映射函数)
  • t-SNE 是非凸优化,每次运行结果不同
  • 距离尺度在 t-SNE 空间中没有意义(不保持全局结构)
  • 计算复杂度高(O(n2)O(n^2)),大数据集很慢
  • 因此只适合做探索性可视化

相关链接