14.降维

14 降维

14.1 降维的动机一:数据压缩

下面介绍第二种无监督学习问题:降维。降维的一个作用是数据压缩,可以减小数据占用内存和磁盘的空间,还可以加快算法速度。

例如:假设我们用两个特征来描述同一个物体的长度,x1的单位是厘米,x2的单位是英尺。这将导致高度冗余,所以需要进行降维到一维。我们将二维的数据点x(i)=[x1(i);x2(i)]R2投影到绿色的直线上,根据各点在投影直线上的位置z(i)R作为新特征完成降维。

将数据从三维降至二维:观察数据点的分布大都集中在一个二维平面上,我们可以将三维向量投影到一个二维平面上,降至二维的特征向量。

事实工作中,不同的团队可能会给你几百或成千上万的特征,其中很容易出现冗余特征。这时候就可以使用降维减少特征冗余。

14.2 降维的动机二:数据可视化

降维的另一个作用是数据可视化,可以帮助我们优化学习算法。

例如:我们有关于每个国家的数据,特征向量x(i)R50,50维的数据是不好可视化,不容易进行数据分析的,将其降至2维,便可以将其可视化了。

将数据降维至低维度,这样我们就可以将数据进行可视化,并更好的理解这些数据。但这样做新特征的意义通常需要由我们自己去发现。

14.3 PCA问题的公式描述

对于降维算法,比较常见的是主成分分析方法(PCA)。

例如,我们有二维的特征向量,我们想把它降维至一维。即我们要找一条投影直线完成降维。PCA做的就是找一个低维的直线/平面/其他维的子空间,然后将数据投影在上面,使蓝色线段长度平方最小。这些蓝色线段长度也被称为投影误差。如图:PCA会更倾向于找到红色的直线,因为相比于粉色直线,红色线的投影误差更小。

PCA问题:将n维数据降至k维,目标是找到向量u(1),u(2),,u(k),将数据点投影到上面,使得总的投影误差最小。

PCA 与 线性回归 的比较:

PCA最小化的是投射误差(垂直距离),不作任何预测。线性回归最小化的是预测误差(竖直距离),目的是预测结果。如图:左边的是线性回归的误差(垂直于横轴投影,预测值与真实标签的差值),右边则是主要成分分析的误差(垂直于斜线投影)。

14.4 PCA算法

在进行PCA算法之前,需要数据预处理,进行特征缩放/均值归一化。

1)均值归一化

计算出所有特征的均值,然后令 xj=xjuj 。如果特征是在不同的数量级上,还需要将其除以标准差 σ2

对于PCA算法,我们需要找到一个低维子空间,用来投影数据。那么如何找到低维子空间的向量u(1),u(2)以及新特征向量z呢?

2)计算协方差矩阵sigmaΣ

这里协方差矩阵ΣRn×n

3)计算协方差矩阵Σ的特征向量

我们可以利用奇异值分解(singular value decomposition)来得到特则向量矩阵 U,调用方式为 [U, S,V] = svd(sigma) 。我们想要从n维降至k维,那么就取矩阵U的前k列作为一个新的矩阵UreduceRn×k,我们的新特征向量z(i)=(Ureduce)Tx(i), z(i)Rk×1

14.5 重建原始特征

如何从压缩后的低维表示z(i)映射回原来高维的数据x(i)呢?即如何根据压缩后的数据去重建原始数据?

例如:原始数据x(i)是二维,z(i)是一维,z=UreduceTx,则相反的方程为xapprox=Ureducez,这里的xapprox是投影之后的点,通过此方程可以得到投影点的坐标。又因为xapproxx,所以可以通过此方法得到原始数据的一个近似表示。

14.6 选择主成分的数量k

主成分分析最小化投射的平均均方误差,怎么选择适当降维目标 k 值(即主成分的数量)呢?我们的目标是:在『平均均方误差与总变差的比例尽可能小』的情况下,选择尽可能小的 k 值。

我们定义平均均方投影误差,总变差(也可以理解为样本和全零点之间的距离)如下:如果希望比例小于 1%, 就意味着原本数据的偏差有 99% 都保留下来了。
通常95%到99%是最常用的取值范围。(注:对于许多数据集,通常可以在保留大部分差异性的同时大幅降低数据的维度。这是因为大部分现实数据的许多特征变量都是高度相关的。)

具体的做法是:

我们可以从k=1开始,然后进行主成分分析,计算得到Ureducez,然后计算比例是否小于0.01。若不是令k=2,重复此过程,直至找到可以让比例小于0.01的最小的k值。

但上面的方法是低效的。还有更好的方法,我们进行奇异值分解时返回了一个矩阵SRn×n, 矩阵S是一个对角矩阵,由Σ的特征值组成,对角线上的特征值非负且按降序排列。因为我们的目的是从 n 维降到 k 维,也就是选出这 n 个特征中最重要的 k 个,也就是选出特征值最大的 k 个。所以得到矩阵 S 后,我们可以直接用它来计算平均均方误差与总变差的比例。如右图公式,每次改变k,只需要重新计算分子即可:

14.7 PCA的应用建议

假设我们有m张100*100像素的图片,即特征向量x(i)R10000,使用PCA算法的步骤如下:1.使用PCA算法将特征向量x(i)压缩到1000个特征。2.对压缩后的训练集运行学习算法。3.在预测时,采用之前学习得到的 Ureduce 将输入的特征 x 转换成特征向量 z ,然后再进行预测.

注意:映射关系只能在训练集上运行PCA学习得到,验证集和测试集也采用对训练集学习得来的Ureduce.

正确用法:下图总结了PCA的应用以及在各应用上如何选择k的值:

补充:PCA可以加快算法运行速度。

错误用法:

1.使用PCA减少特征的数量,从而用于减少过拟合。

这样做非常不好的,不如使用正则化处理。原因在于 PCA 只是近似地丢弃掉一些特征,它并不考虑任何与结果变量y有关的信息,因此可能会丢失非常重要的特征。而当进行正则化处理时,会考虑到结果变量y,不会丢掉重要的数据。

2.在项目开始时,就将PCA考虑在项目计划中。

最好还是从所有原始特征开始,只在有必要的时候(算法运行太慢或者占用太多内存)才考虑采用 PCA。因为PCA会影响模型精确度。


14.降维
http://example.com/2025/02/16/14 降维/
作者
Dongxuan Liu
发布于
2025年2月16日
许可协议