吴恩达机器学习笔记 —— 15 降维

http://www.cnblogs.com/xing901022/p/9392518.html

 

降维的作用:数据压缩与可视化

 

降维的第一个作用就是进行数据的压缩,解决磁盘和计算的问题。比如把二维数据降维到一维:

或者数据从三维降维到2维。

降维的另一个作用就是进行可视化,比如我们的数据有很多维度,如果想要在图形上展示各个数据,分析其关系是很难的。那么就可以把数据降维到二维:

降维的问题规划

考虑到数据的可分性,应该寻找一条直线(或者一个平面),使得数据投影到这个平面的距离最短,数据分布最好(各个点比较分散),比如下面的图中,红色的线就要比粉色的好很多,因为粉色的线上所有的点几乎都要重叠到一起了。 PCA总结来说,其实就是寻找k个方向向量,使得所有的点投影到这个k个向量组成的平面。如果是2维,就是寻找一条直线的方向,方向的正负并不影响最后的结果 需要注意的是,PCA与线性回归是不同的:第一个不同的点是线性回归里面为了方便计算,误差取的是y值的差;而PCA里面计算的投影的距离,因此计算的是点到直线的距离。另一个不同的点就是线性回归里面需要区分x和y,而PCA里面所有的x都是等价的。

PCA的计算方法

计算PCA首先要做的就是数据预处理,需要先对所有的数据进行均值化,即求出均值做差。其中sj是max-min

在PCA里面数据降维其实可以换一种思考的角度,如果数据从2维降到1维,其实就是寻找一个函数使得(x1,x2)变成z1。如果是n维,就是寻找一个方法,使得结果变成k维。 其实这个过程就可以通过SVD来做,针对SVD可以在搜索其他的资料。在协同过滤里面也是有它的使用场景的。

如何选择k值

PS:这两节看的很蒙——因为字母放反了

参考:https://blog.csdn.net/ybdesire/article/details/64546435

PCA用于降维,k是降维后的特征维度,如何选择k值呢?一般来说k值如果等于n,那么方差不变,就说保留了100%的方差变化;如果为0,那么方差相当于全部都忽略了。因此可以通过下面的计算公式,选择误差范围在0.01以内的k值,这样可以说保留了99%的主成分。

应用的建议

关于使用

PCA也属于一种算法,它只能在训练集上训练运行;在测试集或者交叉验证集上只能使用训练的结果直接用来做映射。

关于k的选择

在使用PCA进行数据的压缩时,一般都要保证方差的保留百分比在99%。而在可视化的时候由于画图的需要,K值可以选择2或者3。

关于过拟合

PCA可以用来降低维度加快训练速度,但是不能用来避免过拟合。因为PCA在考虑数据降维的时候,并没有考虑y的因素,只是通过分析x,通过方差的百分比来保留信息,此时有可能丢弃的是与y相关的信息。如果想解决过拟合的问题,还是推荐使用正则化。

关于滥用

不用滥用PCA,很多人(我就这么干过!)设计逻辑回归的时候,都是直接按照下面的流程来做:1 获得数据样本;2 执行PCA降维;3训练LR;4测试。推荐的方式还是不使用PCA训练看看效果,再用PCA试一下做一下对比。

posted @ 2018-08-04 20:30  SAP虾客  阅读(353)  评论(0编辑  收藏  举报