第八章 降维
文章目录
前言
我们模型的训练的时候会遇到很多由维度(特征)带来的困难,例如维度太多导致训练速度变慢,训练数据有很多无用的特征使得模型性能不好等。在面对这些困难的时候最直观的一个方法就是降维即删除掉一个无用的特征,但是特征并不能随便删除的需要做到在删除特征之后是对模型训练起到正向的作用,下面就让我们来研究一下降维(删除部分特征)的方法。
一、思维导图
二、主要内容
1、维度的诅咒
- 我们前面提到的,我们在训练模型的时候会遇到成千上万个特征的训练数据,这样的数据会导致训练速度缓慢和其他一些预想不到的问题。再加上纬度越高实例与实例之间的距离越远,数据集越稀疏,所以训练出来的模型更加不可靠。这一系列的问题就称为维度的诅咒。
2、降维的主要方法
- 投影
在实际情况中,我们的训练实例并不是均匀分布在所有实例上的,所以我们可以通过把高纬度的实例垂直映射到低纬度上来实现降维。 - 流行学习
还有些情况是,低纬度的实例以弯曲或者扭曲的方式呈现在高纬度中的,我们也可以通过对展开这些弯曲的低纬实例来实现降维。
3、PCA
- 概念
PCA是投影降维的一种具体的方法,PCA会寻找与维度相同数量的轴,每个轴代表一个PC(主要成分)然后再经过计算把数据投影到某一个低维度上。 - 保留差异性
我们在高维数据投影到低纬超平面的时候为了保存最多的信息,我们需要保证投影之后的数据保存最多的差异性。 - 主要成分
PCA生成的轴就称为主要成分,对于每一个主要成分PCA都会找到一个指向PC方向的零中心单位向量,整个向量会随着训练集的改变而 改变,但是始终会保持在同一个平面上。 - 向下投影到d维
一旦确定了所有的主要成分之后我们就需要计算把实例向下投影到低维度。 - 可解释方差比
可解方差比只是一个体现每个主要成分携带信息量的值。 - 选择正确的维度
我们可以通过选择足够大的可解释方差来实现降维的同时还保存了很大部分的信息。也可以通过绘图的方式来找到一个合适的降维维度。 - PCA压缩
经过PCA降维的数据减少了很多的空间,原理与图片的压缩类似,在逆向还原的时候依旧会损失掉一部分数据。 - 随机PCA
在使用随机PCA的时候我们会以最快的速度得到一个降低维度最优值的近似值。当训练集的数量或者特征大于500,或者d小于训练集数量或者特征数80%的时候会默认使用随机PCA。 - 增量PCA
我们在面对无法一次性把所有数据放入内存的情况,这个时候我们就需要使用增量PCA一部分一部分的计算。
4、内核PCA
- 概念
在第五章中处理一些非线性的问题时,我们会使用核函数把数据映射到高维的空间中来进行线性回归,同样的我们可以把核概念应用到降维中来,对一些复杂的非线性数据进行降维。 - 选择内核并调整超参数
方法一:我们可以使用降维与其他的模型进行结合通过验证模型性能的方式来验证降维的性能,从而实现选择内核与超参数的功能。
方法二:由于我们把训练集映射到无限维的特征空间之后,还需要再使用PCA把数据映射到低维度,这个过程会产生一个误差,我可以通过找到这个误差的最小值来选择内核与超参数。
5、LLE
- LLE是流形学习技术的具体方法。它首先测量每个实例月相邻实例的线性相关性,再寻找最好的方式保留这些线性相关的低维形式。简单来说就是把在高维中扭曲的低维图形展开来。
6、其他降维技术
- 随机投影
- 多维缩放
- lsomap
- t分布随机临近嵌入
- 线性判别分析
三、降维技术
1.减少数据集维度的主要动机是什么?主要缺点是什么?
主要动机为:1、加快模型的训练速度,删除掉一个无用的特征,2、数据可视化,寻找更加重要的特征。3、节省空间。
主要缺点为:1、会损失掉一部分数据导致模型性能降低。2、可能是计算密集型。3、使得模型训练的流水线更加复杂。4、转换之后的特征无法合理解释。
2.维度的诅咒是什么?
维度的诅咒指的是一些在低维空间内不会发生的问题在高维中发生。在机器学习中体现为,在高维空间中,实例与实例之间的距离很远,导致训练出来的模型容易过拟合与训练集。
3.一旦降低了数据集的维度,是否可以逆操作?如果可以,怎么做?如果不能,为什么?
一旦数据集实现了降维操作,很很难完美的逆向升维,因为在降维的过程中会损失掉一部分数据。虽有有些算法支持逆向生成一个相似的数据集,但是有些算法不支持。
4.可以使用PCA来减少高度非线性的数据集的维度吗?
对于大多数的数据集来说,PCA确实能够减少维度,包括高维度非线性的数据集。PCA能够做到减少掉一部分无用的维度,但是如果数据集不存在无用的维度,那么PCA的降维将会损失掉太多的信息。
5.假设你在1000维的数据集上执行PCA,将可解释方差比设置为95%。结果数据集将具有多少个维度?
结果的维度取决于数据集,数据集的维度可以在1到950个维度之间。如果数据集完美的一个对角线分割了数据集,那么PCA可以使得数据降到1维,如果训练数据很稀疏的分散在1000维上,那么PCA只能把数据降到950维。
6.在什么情况下,你将使用常规PCA、增量PCA、随机PCA或内核PCA?
常规的PCA是默认的选择,当你的数据集无法被内存容纳时,或者是需要不断的处理新增实例是用增量PCA,如果你想对训练集大大的降低维度时使用随机PCA,当处理非线性的数据集降维时,使用内核PCA。
7.如何评估数据集中的降维算法的性能?
能够很好的消除掉一些无用的特征,并且也没有丢失很多信息的降为算法算是好的算法。可以通过逆转换之后的重构误差来衡量降为算法的性。还是一个简单的方法,就是与一个预测器结合起来,衡量最终预测器的性能来衡量降为算法的性能。
8.链接两个不同的降维算法是否有意义?
这种方式是有意义的,常见的实例就是使用PCA消除一下无用的特征,然后再连接一种更慢的降为算法如LLE,最后得到的结果可能与单独使用LLE相同,但是时间要短得多。
四、总结
降维是我们在实际开发中总会遇到的问题,因为高维度的数据确实会给我们带来很多的困扰。这一章的主要内容总结一下就是:
- 什么是维度的诅咒
高维的数据会导致模型过拟合数据,但是模型不准确,并且训练过程及其缓慢。 - 怎么解决维度的诅咒
我们通过映射,把高维的数据垂直映射到低维中或是通过流行学习,把存在高维空间中的低维扭曲图形展开来两种方式实现降维来解决维度的诅咒。 - PCA与LLE
PCA分别就是映射与流行学习的具体方法。
对文章有任何疑惑或者想要和博主一起学机器学习一起进步的朋友们可以添加 群号:666980220。需要机器学习实战电子版或是思维导图的也可以联系我。祝你好运!
项目地址: github