目录
【此为本人学习吴恩达的机器学习课程的笔记记录,有错误请指出!】
动机一:数据压缩
这里将谈论第二种类型的无监督学习问题,称为降维。
降维的目的:数据压缩(减少特征)、节省计算资源(内存、磁盘)、加快学习速度。
如将数据从二维降到一维:
将数据从三维降至二维:
这样的处理过程可以被用于把任何维度的数据降到任何想要的维度,例如将 1000 维的特征降至 100 维。
动机二:数据可视化
在许多机器学习问题中,如果能将数据可视化,降维是不错的方法。
如果要将 50 维的数据可视化是不可能的,使用降维的方法将其降至 2 维,我们便可以将其可视化了。
这样做的问题在于,降维算法只负责减少维数,新产生的特征的意义就必须由我们自己去发现了。
主成分分析问题
主成分分析(PCA)是最常见的降维算法。
在 PCA 中,我们要做的是找到一个方向向量( Vector direction),把所有的数据都投射到该向量上时,我们希望投射平均均方误差能尽可能地小。方向向量是一个经过原点的向量,而投射误差是从特征向量向该方向向量作垂线的长度。
主成分分析问题是要将𝑛维数据降至𝑘维,目标是找到向量𝑢(1),𝑢(2),...,𝑢(𝑘)使得总的投射误差最小。
主成分分析与线性回顾的比较:
主成分分析与线性回归是两种不同的算法。主成分分析最小化的是投射误差( Projected Error),而线性回归尝试的是最小化预测误差。线性回归的目的是预测结果,而主成分分析不作任何预测。
上图中,左边的是线性回归的误差(垂直于横轴投影),右边则是主要成分分析的误差(垂直于红线投影)。
PCA 将𝑛个特征降维到𝑘个,可以用来进行数据压缩,如果 100 维的向量最后可以用 10维来表示,那么压缩率为 90%。同样图像处理领域的 KL 变换使用 PCA 做图像压缩。但 PCA要保证降维后,还要保证数据的特性损失最小。
PCA 技术的一大好处是对数据进行降维的处理。 我们可以对新求出的“主元”向量的重要性进行排序,根据需要取前面最重要的部分,将后面的维数省去,可以达到降维从而简化模型或是对数据进行压缩的效果。同时最大程度的保持了原有数据的信息。
PCA 技术的一个很大的优点是,它是完全无参数限制的。在 PCA 的计算过程中完全不需要人为的设定参数或是根据任何经验模型对计算进行干预,最后的结果只与数据相关,与用户是独立的。
但是,这一点同时也可以看作是缺点。如果用户对观测对象有一定的先验知识,掌握了数据的一些特征,却无法通过参数化等方法对处理过程进行干预,可能会得不到预期的效果,效率也不高。
主成分分析算法
PCA 减少𝑛维到𝑘维:
第一步是均值归一化。需要计算出所有特征的均值,然后令 𝑥𝑗 = 𝑥𝑗 - 𝜇𝑗。如果特征是在不同的数量级上,还需要将其除以标准差 𝜎2。
第二步是计算协方差矩阵( covariance matrix) 𝛴:
(协方差用于衡量两个变量的总体误差,如两个变量是正相关、负相关或无相关。而方差是协方差的一种特殊情况,即当两个变量是相同的情况)
第三步是计算协方差矩阵 𝛴 的特征向量( eigenvectors)
在 Octave 里我们可以利用奇异值分解( singular value decomposition)来求解, [U, S, V]= svd(sigma):
对于一个 𝑛 × 𝑛维度的矩阵,上式中的 𝑈 是一个具有与数据之间最小投射误差的方向向量构成的矩阵。如果我们希望将数据从𝑛维降至𝑘维,只需要从𝑈中选取前𝑘个向量,获得一个𝑛 × 𝑘维度的矩阵,我们用𝑈𝑟𝑒𝑑𝑢𝑐𝑒表示,然后通过如下计算获得要求的新特征向量 𝑧(𝑖):
其中𝑥是𝑛 × 1维的,因此结果为𝑘 × 1维度。注,我们不对方差特征进行处理。
主成分分析的数量(选择k值)
主要成分分析是减少投射的平均均方误差。
训练集的方差为:
我们希望在平均均方误差与训练集方差的比例尽可能小的情况下选择尽可能小的𝑘值。
如果这个比例小于 1%(可以理解为特征损失小于1%),就意味着原本数据的偏差有 99%都保留下来了,如果选择保留 95%的偏差,便能非常显著地降低模型中特征的维度了。
我们可以先令𝑘 = 1,然后进行主要成分分析,获得𝑈𝑟𝑒𝑑𝑢𝑐𝑒和𝑧,然后计算比例是否小于1%。如果不是的话再令𝑘 = 2,如此类推,直到找到可以使得比例小于 1%的最小 𝑘 值(原因是各个特征之间通常情况存在某种相关性)。
还有一些更好的方式来选择𝑘, 当我们在 Octave 中调用“svd”函数的时候, 我们获得三个参数: [U, S, V] = svd(sigma)。
其中的𝑆是一个𝑛 × 𝑛的矩阵,只有对角线上有值,而其它单元都是 0,我们可以使用这个矩阵来计算平均均方误差与训练集方差的比例:
该公式可以理解为:原始特征减去新特征后,得到的损失特征的方差,然后与原始特征的方差比较,该比例值就是特征损失的程度。
也就是(特征保留的程度):
在压缩过数据后,可以采用如下方法来近似地获得原有的特征:
重建的压缩表示(从低维还原回高维)
在PCA算法中,我们把二维映射到一维,压缩后的数据,如何从一维还原回原来的二维呢?
根据新特征向量公式:
则相反的公式:
如图:
可以看出,右边就是从一维 𝑧 回到二维 𝑥 的近似表示。
主成分分析法的应用建议
假使我们正在针对一张 100×100 像素的图片进行某个计算机视觉的机器学习,即总共有 10000 个特征。
1. 第一步是运用主要成分分析将数据压缩至 1000 个特征
2. 然后对训练集运行学习算法。
3. 在预测时,采用之前学习而来的𝑈𝑟𝑒𝑑𝑢𝑐𝑒将输入的特征 𝑥 转换成特征向量 𝑧,然后再进行预测
注:如果我们有交叉验证集合测试集,也采用对训练集学习而来的𝑈𝑟𝑒𝑑𝑢𝑐𝑒。
错误的主要成分分析情况:
(1)一个常见错误使用主要成分分析的情况是,将其用于减少过拟合(减少了特征的数量)。这样做非常不好,不如尝试正则化处理。原因在于主要成分分析只是近似地丢弃掉一些特征,它并不考虑任何与结果变量有关的信息(如参数的权衡),因此可能会丢失非常重要的特征。然而在进行正则化处理时,会考虑到结果变量,不会丢掉重要的数据。
(2)另一个常见的错误是,默认地将主要成分分析作为学习过程中的一部分,这虽然很多时候有效果,最好还是从所有原始特征开始,只在有必要的时候(算法运行太慢或者占用太多内存)才考虑采用主成分分析。