第 14 章 降维
降维用于把高维数据压缩到低维空间,同时尽量保留主要信息。课程重点介绍主成分分析,也就是 PCA。
14.1 动机一:数据压缩
数据压缩可以减少存储空间,也能让算法运行更快。
例如两个高度相关的特征可以压缩成一个特征:
text
厘米表示的长度
英寸表示的长度这两个特征本质上信息重复,可以降到一维。
14.2 动机二:数据可视化
如果数据有很多维,很难直接画图。
降维可以把高维数据降到 2 维或 3 维,用于可视化。这样可以观察数据结构、聚类情况或异常点。
14.3 主成分分析问题
PCA 的目标是找到一个低维子空间,使数据投影到这个子空间后,投影误差尽可能小。
从 2 维降到 1 维时,PCA 会找一条直线,让所有点到这条直线的平方距离之和最小。
注意:PCA 不是线性回归。线性回归最小化的是垂直方向预测误差,PCA 最小化的是点到低维子空间的投影误差。
14.4 主成分分析算法
使用 PCA 前通常要做均值归一化,必要时也要做特征缩放。
步骤:
- 对每个特征做均值归一化。
- 计算协方差矩阵。
- 对协方差矩阵做奇异值分解。
- 取前
K个主成分。 - 将原始数据投影到低维空间。
协方差矩阵:
奇异值分解:
matlab
[U, S, V] = svd(Sigma)降维:
14.5 选择主成分的数量
选择 K 时,希望保留足够多的方差信息。
常用标准是保留 99% 的方差。
可以通过奇异值矩阵 S 判断:
满足这个条件的最小 K 就是可选维度。
14.6 重建的压缩表示
PCA 降维后,可以从低维表示近似重建原始数据。
降维:
重建:
重建结果不是原始样本的完全恢复,而是低维子空间中的近似。
14.7 主成分分析法的应用建议
PCA 常用于:
- 数据压缩。
- 加速监督学习。
- 数据可视化。
使用 PCA 加速监督学习时,应该只在训练集上学习 PCA 映射,然后把同样映射应用到交叉验证集和测试集。
不建议把 PCA 当作防止过拟合的主要方法。过拟合应优先考虑正则化。
也不应该在一开始就默认使用 PCA。通常先用原始特征训练模型,确实需要压缩或加速时再使用 PCA。