降维算法
问题
PCA 和 t-SNE 的原理分别是什么?应用场景有何不同?
答案
一、为什么要降维
- 减少计算量:降低特征维度,加速训练
- 去除噪声:过滤冗余特征
- 可视化:将高维数据降到 2D/3D 展示
- 缓解维度灾难:高维空间中数据稀疏
二、PCA(主成分分析)
PCA 找到数据方差最大的方向作为新坐标轴:
- 数据中心化(减去均值)
- 计算协方差矩阵
- 特征值分解
- 选择前 K 个最大特征值对应的特征向量
- 投影到新空间
保留方差比例
- 通常选择保留 95% 方差的主成分数量
- 用
explained_variance_ratio_查看每个主成分的贡献
三、t-SNE 与 UMAP
| 对比维度 | PCA | t-SNE | UMAP |
|---|---|---|---|
| 类型 | 线性 | 非线性 | 非线性 |
| 保持结构 | 全局 | 局部 | 局部+全局 |
| 速度 | 快 | 慢 | 中 |
| 可逆性 | 可逆 | 不可逆 | 不可逆 |
| 主要用途 | 降维/去噪 | 可视化 | 可视化/降维 |
| 新数据 | 直接投影 | 不支持 | 支持 |
四、应用场景
| 场景 | 推荐算法 |
|---|---|
| 特征降维(训练前) | PCA |
| 高维数据可视化 | t-SNE 或 UMAP |
| Embedding 可视化 | UMAP(速度快) |
| 图像压缩 | PCA |
| 异常检测 | PCA(重构误差) |
常见面试问题
Q1: PCA 和 LDA 有什么区别?
答案:
- PCA:无监督,最大化方差,找数据变化最大的方向
- LDA:有监督,最大化类间距离/类内距离,找最利于分类的方向
- PCA 用于降维/去噪,LDA 用于分类前的特征提取
Q2: t-SNE 为什么不适合做特征降维,只适合可视化?
答案:
- t-SNE 不支持对新数据投影(没有映射函数)
- t-SNE 是非凸优化,每次运行结果不同
- 距离尺度在 t-SNE 空间中没有意义(不保持全局结构)
- 计算复杂度高(),大数据集很慢
- 因此只适合做探索性可视化