14 降维(Dimensionality Reduction)
第二种类型的无监督学习问题叫降维
14.1 目标Ⅰ:数据压缩
使用降维的原因之一是数据压缩,数据压缩可以使数据占用较小的内存或硬盘空间,还能对学习算法进行加速。
降维:比如存在两个特征值x1,x2,它们分别代表不同单位的长度,一个英寸,一个厘米,虽然单位不同,但是所表示得意义是一样的,这样就可能导致数据冗余,所以我们想要做的是减少数据到一维,只有一个数测量这个长度。
将数据从二维降至一维: 假使我们要采用两种不同的仪器来测量一些东西的尺寸,其中一个仪器测量结果的单位是英寸,另一个仪器测量的结果是厘米,我们希望将测量的结果作为我们机器学习的特征。现在的问题的是,两种仪器对同一个东西测量的结果不完全相等(由于误差、精度等),而将两者都作为特征有些重复,因而,我们希望将这个二维的数据降至一维。
将数据从三维降至二维: 这个例子中我们要将一个三维的特征向量降至一个二维的特征向量。过程是与上面类似的,我们将三维向量投射到一个二维的平面上,强迫使得所有的数据都在同一个平面上,降至二维的特征向量。
14.2 目标Ⅱ:可视化
降维的第二个应用就是可视化数据。可视化数据可以帮助对学习算法的优化,也可以帮助我们更好地了解数据。
通过降维的方法使50维甚至更高维度的数据降到2维,可以将它们画出来,更好地观察理解数据。降维的算法只负责减少维数,新产生的特征的意义就必须由我们自己去发现了。
14.3 主成分分析问题规划1
主成分分析方法算法也叫PCA,简单来说PCA它的做的就是找到一个低维平面(方向向量)(下面二维图中的低维平面就是一条直线),将数据投影在上面,使数据点到直线的长度(也叫投影误差)平方最小,另外在应用PCA算法前需要先进行均值归一化和特征规范化,使特征值均值为0并且其数值在可比较的范围之内。
方向向量是一个经过原点的向量,而投影误差是从特征向量向该方向向量作垂线的长度。
PCA不是线性回归。主成分分析最小化的是投影误差(Projected Error),而线性回归尝试的是最小化预测误差。线性回归的目的是预测结果,而主成分分析不作任何预测。
PCA技术的一大好处是对数据进行降维的处理。我们可以对新求出的“主元”向量的重要性进行排序,根据需要取前面最重要的部分,将后面的维数省去,可以达到降维从而简化模型或是对数据进行压缩的效果。同时最大程度的保持了原有数据的信息。
PCA技术的一个很大的优点是,它是完全无参数限制的。在PCA的计算过程中完全不需要人为的设定参数或是根据任何经验模型对计算进行干预,最后的结果只与数据相关,与用户是独立的。
14.4 主成分分析问题规划2
PCA算法过程:
①对数据进行预处理
对数据集均值标准化,根据数据可能还要进行特征缩放。先计算均值,再拿特征值减去均值的结果取代每个特征,这个步骤可以使每个特征的均值正好为0。
②计算协方差矩阵(covariance matrix)
③计算协方差矩阵$Σ$的特征向量(eigenvectors)
在 Octave 里我们可以利用奇异值分解(singular value decomposition)来求解,
其中
对于一个 n×n维度的矩阵,上式中的U是一个具有与数据之间最小投射误差的方向向量构成的矩阵。如果我们希望将数据从n维降至k维,我们只需要从U中选取前k个向量,获得一个n X k维度的矩阵,我们用表示,然后通过如下计算获得要求的新特征向量:
其中是n×1维的,因此结果为k×1维度。注,我们不对方差特征进行处理。
14.5 主成分数量(k)选择
主要成分分析是减少投射的平均均方误差:
训练集的方差:
我们希望在平均均方误差与训练集方差的比例尽可能小的情况下选择尽可能小的k值。
如果我们希望这个比例小于1%,就意味着原本数据的偏差有99%都保留下来了,如果我们选择保留95%的偏差,便能非常显著地降低模型中特征的维度了。
我们可以先令k=1,然后进行主要成分分析,获得和z,然后计算比例是否小于1%。如果不是的话再令k=2,如此类推,直到找到可以使得比例小于1%的最小k 值(原因是各个特征之间通常情况存在某种相关性)。
还有一些更好的方式来选择k,当我们在Octave中调用“svd”函数的时候,我们获得三个参数:。
其中的S是一个n×n的矩阵,只有对角线上有值,而其它单元都是0,我们可以使用这个矩阵来计算平均均方误差与训练集方差的比例.
14.6 压缩重现
PCA算法可以将高维数据压缩成低维,那么也可以再将现有数据还原成原维度。
如下图,我们用将二维其压缩成一维,若要还原只需用公式
其中是n*k维的,z是k*1维的,那么还原的x就是n*1维的。
14.7 应用PCA的建议
假使我们正在针对一张 100×100像素的图片进行某个计算机视觉的机器学习,即总共有10000 个特征。
-
第一步是运用主要成分分析将数据压缩至1000个特征
-
然后对训练集运行学习算法.
-
在预测时,采用之前学习而来的将输入的特征x转换成特征向量z,然后再进行预测
注:如果我们有交叉验证集合测试集,也采用对训练集学习而来的。
错误的主要成分分析情况:一个常见错误使用主要成分分析的情况是,将其用于减少过拟合(减少了特征的数量)。这样做非常不好,不如尝试正则化处理。原因在于主要成分分析只是近似地丢弃掉一些特征,它并不考虑任何与结果变量有关的信息,因此可能会丢失非常重要的特征。然而当我们进行正则化处理时,会考虑到结果变量,不会丢掉重要的数据。
另一个常见的错误是,默认地将主要成分分析作为学习过程中的一部分,这虽然很多时候有效果,最好还是从所有原始特征开始,只在有必要的时候(算法运行太慢或者占用太多内存)才考虑采用主要成分分析。