降维 也是一种无监督学习的方法,降维并不需要使用数据的标签。
降维 的其中一个目的是 数据压缩,数据压缩不仅能够压缩数据,使用较少的计算机内存或磁盘空间,更可以加快我们的学习算法。
降维 能很好的处理 特征冗余,例如:在做工程时,有几个不同的工程队,也许第一个工程队给你二百个特征,第二工程队给你另外三百个的特征,第三工程队给你五百个特征,一千多个特征都在一起,这些特征中往往都存在着巨大的冗余,而且去跟踪这些大量的特征会变得及其困难。
将2维特征降到1维
以下举个例子,假如测量某个物品的长度,横轴表示使用厘米作为单位进行测量的结果,纵轴表示使用英尺作为单位进行测量的结果,这两个特征是由大量冗余的 但是由于测量时的四舍五入导致测量结果并不一定相等,因此我们想通过降维的方式 去掉冗余的数据
此时想找到一条看起来大多数据都落在其旁边的线,而使得所有的数据都能投影在刚才的线上, 通过这种做法,我能够测量出每个样本在线上的位置以建立新特征 Z1 ,即是原来的数据我需要用x(1),x(2)两个维度的特征进行表示,而现在只需要通过新特征Z的一个值就能表示原有的两个特征的内容
通过把样本投影在一条近似的直线上,能够通过一个实数值就能表示原有数据集的所有样本 其中x(1),x(2),x(3),x(4)…x(m) 用以表示数据集中的样本,x1,x2用以表示原始数据集中的特征,z(i) 用以表示第i个样本通过降维后得到的新特征。
将3维特征降到2维
将三维向量投影到一个二维的平面上,迫使所有的数据都在同一个平面上,降至二维的特征向量。原有的三维数据点变成二维的平面,而二维的特征表示数据点在二维平面上的位置。其中原始的三个特征使用X1,X2,X3表示,新的特征使用Z1,Z2表示,意义是投影平面的两条坐标轴,$z^{(i)}用以表示第i个样本通过降维得到的新特征。
目前我们只能对2-3维的数据进行可视化,一旦数据的维度变得很大,我们将不能很直观的发现数据中的规律。此时, 降维 就成了一个很直观很重要的工作。
如下是国家发展水平的一张报表,通过50个指标对国家进行评估,我们想用可视化的方法进行直观的查看,但是50维的数据是不可能使用图形进行绘制的,为此我们使用降维的方法将其降低到2维进行查看。
通过降维的方法50个维度被整合成两个新的特征Z1和Z2 ,但是我们对于新特征的意义,我们并不清楚。即 降维 只能将数据的维度降低而对于新特征的意义需要重新发现与定义。
使用图形表示降维后的新特征:
横轴约表示为国家整体经济强度/国家生产总值GDP
纵轴约表示幸福指数/人均生产总值
Proncipal Component Analysis Problem Formulation
主成分分析(PCA)是最常见的降维算法
当主成分数量K=2时,我们的目的是找到一个低维的投影平面,当把所有的数据都投影到该低维平面上时,希望所有样本 平均投影误差 能尽可能地小。 投影平面 是一个由两个经过原点的向量规划而成的平面,而 投影误差 是 从特征向量向该投影平面作垂线的长度。
当主成分数量K=1时,我们的目的是找到一个方向向量(Vector direction),当我们把所有的数据都投射到该向量上时,希望所有样本 平均投影误差 能尽可能地小。 方向向量 是一个经过原点的向量,而 投影误差(projection error) 是 从特征向量向该方向向量作垂线的长度。
图中所示为把数据投影到2维空间的情况,图中黑色的×表示原始样本点,红色的是方向向量,蓝色的是投影误差,绿色点表示数据在方向向量上的投影.而 PCA的目的即是希望找到一个方向向量使得所有数据投影在方向向量上的投影误差最小
Note 在使用PCA之前,需要进行 归一化和特征规范化
主成分分析原理
从二维降到一维 找到一个能够使数据投影到其上的投影误差最小的方向向量(μ(1)∈Rn)。
从n维降到k维 找到k个向量μ(1),μ(2),μ(3)…μ(k) ,使得原始数据投影到这些向量的线性子空间的投影误差最小。
PCA和线性回归不一样
从工作机制和得到的结果上看,PCA和线性回归方法很像,看似都是找到一个可以近似拟合原始数据的线或平面 ,尽管看上去很相似但实际上却完全不一样。
主成分分析最小化的是投射误差(ProjectedError),而线性回归尝试的是最小化预测误差。 主成分分析 是一种 无监督学习方法 ,线性回归 是一种 监督学习方法 , 线性回归的目的是预测结果,而主成分分析不作任何预测,原始数据的所有特征属性在主成分分析中都是一样对待的。下图中,左边的是线性回归的误差( 垂直于横轴投影 ),右边则是主要成分分析的误差( 垂直于方向向量投影 )。
PCA的优点与缺点
优点
PCA 技术的一大好处是对数据进行降维的处理。我们可以对新求出的“主元”向量的重要性进行排序,根据需要取前面最重要的部分,将后面的维数省去,可以达到降维从而简化模型或是对数据进行压缩的效果。同时最大程度的保持了原有数据的信息。
PCA 技术的一个很大的优点是,它是完全无参数限制的。在 PCA 的计算过程中完全不需要人为的设定参数或是根据任何经验模型对计算进行干预,最后的结果只与数据相关,与用户是独立的。
缺点
这一点同时也可以看作是缺点。如果用户对观测对象有一定的先验知识,掌握了数据的一些特征,却无法通过参数化等方法对处理过程进行干预,可能会得不到预期的效果,效率也不高。
假设使用PCA方法将原始数据集中的N维数据降到K维
均值归一化 计算所有特征的均值μj,然后将原始数据中所有维度都减去该维度的 均值μj ,即令xj=xj−μj,如果特征在不同的数量级上,还需要将其除以该维度自身的 标准差σ2
计算样本集合的 协方差矩阵(covariance matrix) ,每个N维向量维度为(N1),乘以自身维度为(1N)的转置,得到一个(N*N)的对称矩阵,将所有样本矩阵之和相加后即得到样本集合的 协方差矩阵Σ
即:
Σ=1m∑i=1n(x(i))(x(i))T
Note 如果x(i) 本身是以行向量的方式存储,假设X是样本x(i)逐层堆叠而成的样本矩阵,则有:
Σ=1m∗XT∗X
即
计算协方差矩阵Σ的 特征向量(eigenvectors) ,可以使用 奇异值分解(singular value decomposition) 进行求解, 在matlab中使用语句 [U,S,V]=svd(sigma) ,其中sigma表示Σ即样本集合的协方差矩阵,
上式的U是一个具有与数据之间最小投射误差的方向向量构成的矩阵 。如果我们希望 将数据从N维降至K维 ,我们只需要从U中选取前K个向量即上图中的 u(1),u(2),u(3),…u(K) ,获得一个N×K维度的矩阵,使用Ureduce表示,然后通过如下计算获得要求的新特征向量z(i),即有
z(i)=UTreduce∗x(i)
其中x(i)是N * 1维的样本向量, 而UT是一个K * N维的方向向量构成的矩阵,因此最终结果Z^{(i)}是一个K * 1维的向量 ,即是 通过PCA得到的新的特征向量
总结
Reconstruction from Compressed Representation
使用PCA,可以把 1000 维的数据压缩到100 维特征,或将三维数据压缩到一二维表示。所以,如果如果把PCA任务是一个压缩算法,应该能回到这个压缩表示之前的形式,回到原有的高维数据的一种近似。下图是使用PCA将样本x(i)映射到z(i)上
即是否能通过某种方法将z上的点重新恢复成使用x(1)和x(2)二维方式表示的数据。
方法
使用Xappox表示重建样本的n维向量(n * 1),使用Ureduce表示使用PCA算法时选取的K个特征向量组成的特征矩阵(n * k),使用Z表示使用PCA降维后数据样本的新特征(k * 1).有:
Xappox=Ureduce∗Z
即
Choosing the number of pricipal components
平均平方映射误差(Average Squared Projection Error)和总变差(Total Variation)
PCA的目的是减少 平均平方映射误差 ,,即是要减少 原始样本x(i) 和 通过重建后的样本x(i)appox(低维映射点) 的平方差的平均值
1m∑i=1m||x(i)−x(i)appox||2
数据的总变差(Total Variation):定义为原始数据样本的长度的均值:
1m∑i=1m||x(i)||2
意为:平均来看原始数据距离零向量的距离。
K值选择的经验法则
在 平均平方映射误差 和 总变差 的比值尽可能小的情况下 (一般选择0.01) 选择尽可能小的K值, 对于此比例小于0.01,专业来说:保留了数据99%的差异性(99% of variance is retained)
选择了参数K,并且99%的差异性得以保留
常用的其他数值也有 0.05和0.10,则95%和90%的差异性得以保留。
主成分数量选择算法
效率较低的方法
先令 K=1,然后进行主要成分分析,获得 Ureduce 和z(1),z(2),…z(m),然后计算其低维映射点x(i)appox,然后计算 平均平方映射误差 和 总变差 的比值是否小于1%。如果不是的话再令 K=2,如此类推,直到找到可以使得比例小于 1%的 最小K值
更好的方法
还有一些更好的方式来选择 K,当计算协方差矩阵sigma,调用“svd”函数的时候,我们获得三个参数:
[U,S,V]=svd(sigma)
,其中U是特征向量,而S是一个对角矩阵,对角线的元素为 S11,S22,S33…Snn 而矩阵的其余元素都是0。
可以证明的是(在此只说明公式不给出证明过程),以下两个式子相等,即:
所以,原有的条件可以转化为:
根据上式找出满足条件的最小的K值即可。
测试集和验证集应使用和训练集一样的特征向量Ureduce
假使我们正在针对一张 100×100 像素的图片进行某个计算机视觉的机器学习,即总共有 10000 个特征。
第一步是运用主要成分分析将数据压缩至 1000 个特征
然后对训练集运行学习算法
在预测时,采用训练集上学习而来的 Ureduce 将输入的特征 x 转换成特征向量 z,然后再进行预测
Note 如果我们有交叉验证集合测试集,也采用对训练集学习而来的 Ureduce
PCA不是用于解决过拟合的方法
一个常见错误使用主要成分分析的情况是,将PCA用于减少过拟合(通过减少特征的数量)。这样做 非常不好,应该使用正则化化处理。原因在于主要成分分析只是近似地丢弃掉一些特征,它并不考虑任何与 结果变量y(即预测的标签) 有关的信息,因此可能会丢失非常重要的特征。PCA毕竟无监督学习的方法,任何的特征,无论是输入属性还是标签属性,其都一样对待,没有考虑到输入信息的减少对标签y的影响,通过PCA舍弃掉一部分输入属性却没有对标签做任何补偿。 然而当我们进行正则化化处理时,由于逻辑回归或者神经网络或者SVM会考虑到正则化及输入属性的改变对结果变量(预测标签)的影响,并对其作出反馈,所以正则化不会丢掉重要的数据特征。
PCA不是必要的方法
PCA是当数据量大,所以要 压缩数据维度,减少数据占用内存,加快训练速度 时使用的,或者是需要通过 数据可视化 理解数据时使用的, 而 不是一种必需的方法。默认把PCA加入到机器学习系统中而不考虑不加入PCA时系统的表现是不对的。由于PCA会损失掉一部分数据,也许正是数据中十分关键的维度 ,所以机器学习系统应当首先 不考虑PCA的使用 ,而使用常规的训练方法, 只在有必要的时候(算法运行太慢或者占用太多内存) 才考虑采用主要成分分析。
参考资料 [吴恩达机器学习笔记]14降维1-2降维的应用数据压缩与数据可视化
吴恩达机器学习笔记48-降维目标
13 机器学习(吴恩达):降维