降维(Dimensionality Reduction)可以保持数据在原有特征的基础上对数据进行压缩,从 3D 降到 2D,使得数据的分布情况不发生改变,如下图:
降维还有一个作用,就是能更好地可视化数据。比如说,现在有一个数据集,有 50 个特征,如果想通过图像来分析这个数据集,目前是做不到的,因为只能画出三维图像,也就是说特征数为 3。但是如果运用降维,把特征数从 50 降到 3,你就可以画出这个数据集,更好地观察它们之间的联系(毕竟观察图像才有最直观的感受)。
目前,最常用的降维算法就是主成分分析算法(Principal Component Analysis)也称为 PCA。它的工作原理是将高维数据投影到低维平面,以便最小化投影误差的平方。例如:现在有一个二维数据,我们使用 PCA,将它投影到一维中,如下图:
将所有的黑色叉投影到红色线上,所在的投影就是绿色叉。这么一看是不是跟我们之前学过的线性回归有点相似呢?其实他们两个相差很大,我们先来看线性回归:
通过这张图可以看出,线性回归是尽量减小数据集的 y 与假设函数值之间的误差,也就是减小图中蓝色的线段的距离。再来看 PCA:
这是尽量减少点到直线的距离,也是图中蓝色线段的长度。通过这两个图做对比,你就能更好地理解这两种算法的区别了。
应用 PCA 的建议
应用 PCA 可以减少对内存的使用、加速学习算法的速度、可视化高维数据。但是不要用 PCA 防止过拟合,因为应用 PCA 时,可能会抛弃某些重要的特征。还有一点,不要一上来不管三七二十一就使用 PCA,在使用 PCA 之前,先考虑一下使用 PCA 究竟是为了做什么,如果不用 PCA 是否能够完成任务。