zoukankan      html  css  js  c++  java
  • 吴恩达机器学习笔记 —— 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试一下做一下对比。

  • 相关阅读:
    Sphere AABB Collision Detaction
    左右手坐标系的差别
    php 利用 soap调用.Net的WebService asmx文件
    NewLife.XCode 上手指南(五) 复杂查询
    NewLife.Xcode 上手指南(三) 扩展属性的使用
    JS获取URL参数
    [转]模态窗口使用总结
    Jquerysimplemodal的使用,弹出窗口,弹出页面
    NewLife.XCode 上手指南(四) 级联操作
    NewLife.XCode 上手指南
  • 原文地址:https://www.cnblogs.com/DicksonJYL/p/9419817.html
Copyright © 2011-2022 走看看