Andrew Ng Machine Learning 专题【PCA】

此文是斯坦福大学,机器学习界 superstar — Andrew Ng 所开设的 Coursera 课程:Machine Learning 的课程笔记。力求简洁,仅代表本人观点,不足之处希望大家探讨。
课程网址:https://www.coursera.org/learn/machine-learning/home/welcome

Week 8 前半部分 K-Means:http://blog.csdn.net/ironyoung/article/details/49029523

Week 8:Unsupervised Learning & Dimensionality Reduction

  1. Unsupervised Learning(见前半部分)

  2. K-Means Algorithm(见前半部分)

  3. Motivation for Dimensionality Reduction

    1. 为什么要数据降维?目的性一般来说有三个:(1)加速计算,要计算的维度更少;(2)节省空间;(3)可视化,因为现在的可视化只能对于2D或者3D有较好的处理。
    2. 那么,数据为什么可以降维呢?举个例子,我用一幅图表示厘米与英尺的关系,这时特征有(厘米,英尺)。但其实我存储的时候,只需要其中任意一个,另外一个是极强相关度。此时只有一维特征。
  4. Principal Component Analysis (PCA) 简介

    1. 主成分分析(Principal Component Analysis)是数据降维的一种极为有效的方法。通过将高维数据投影到低维空间,以求通过牺牲极少的数据精度来换取更低维度的数据。
    2. 先来举个例子,例如下图中的5个点:
      这里写图片描述
      如果精确描述这5个点,那么需要2D的特征 (x 1 ,x 2 )  。但是,如果我们以图中的直线作为唯一的1D特征,将每个点投影到直线上,是不是基本可以区分出这5个点?这肯定丧失了一部分精度。注意:此时的特征正方向(1D空间的基向量),方向沿着直线的任意两方都正确,我们关心的只是直线而不是方向。
    3. 上图的例子中,PCA的任务就是找到这条直线,然后投影到直线上去。而这条直线,必须满足每个点到直线欧氏距离的平方和最小,即丧失的精度最少: min m i=1 d 2 i   .
    4. 既然都是找直线,那肯定有人自然而然想到了线性回归。但是两者之间有着极大不同。首先就是优化目标,见下图:
      这里写图片描述
      左图是线性回归所需要最小化的距离(蓝色线段和),右图是2D空间PCA所需要最小化的距离(蓝色线段和)。除此之外,线性回归是为了拟合特殊的变量 y  ,而PCA是一种无监督学习,目的性并不明确,每个变量都会降维。
  5. Principal Component Analysis (PCA) 流程

    1. 述说流程之前,希望大家可以看看这篇分析(本课程缺少理论分析):http://sebastianraschka.com/Articles/2014_kernel_pca.html
    2. 老规矩,首先要 mean normalization / feature scaling。方法就跟之前课程提到的一样,对每个特征 j  求均值 μ j =1m  m i=1 x (i) j   ,然后更新特征的值 x j =(x j μ j )/S j   。其中 S j   是特征值的范围,可以是最大值减去最小值。
    3. 计算协方差矩阵: sigma=1m  n i=1 (x (i) )(x (i) ) T   ,协方差矩阵一般是对称正定矩阵,一定会求出特征值与特征向量。
    4. 计算特征值与特征向量,matlab中写作:[U, S, V] = svd(simga). U 是特征向量集合, U=[u (1) ,u (2) ,...,u (k) ,...,u (n) ]  ,S是特征值集合
      S=⎛ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ s 11 0 s 22   0s nn  ⎞ ⎠ ⎟ ⎟ ⎟ ⎟ ⎟  
    5. UR n×n   ,降维之后取 U  的前k 个特征向量 u (1) ,u (2) ...u (k)   作为子空间的基向量,构造 U reduce =[μ 1 ,μ 2 ,...,μ k ]R n×k   。此时 xR n zR k  
      z=U T reduce x 
      其中 z  k×1 的列向量, x  n×1 的列向量, U T reduce   k×n  的矩阵
    6. 降维之后,进行计算获得结果之后,总是需要升维到原空间中。这个时候的升维精确度已经有所下降,但已经是尽量减少损耗。具体的降维转换公式为
      x approx =U reduce z 
      也就是下图中的绿色交叉点返回到2D坐标系中表示。
      这里写图片描述
  6. Principal Component Analysis (PCA) 其他问题

    1. OK,知道怎么使用PCA,那么我们应该选择降维 k=  我们应该有评判标准。我们大体目标是 min(1m  m i=1 ||x (i) x (i) approx || 2 )  ,因此我们选择标准为:
      1m  m i=1 ||x (i) x (i) approx || 2 1m  m i=1 ||x (i) || 2  1%  ,表示意义为“保留99%的差异性”。
      如果使用特征值来表示就是, 1( k i=1 s ii )/( n i=1 s ii )1% 
    2. PCA 中,无监督学习的唯一学习参数是 U reduce   Only Training Data!仅仅是由训练集训练出来的参数。可以用Cross-Validation data 和 test Data进行检验,但是选择主分量的时候只应用training data。
    3. 有时候 PCA 被用于解决 overfitting ,但这样做其实非常不好。PCA 降低了数据维度,但同时损失了数据原有的标记信息。而之前的课程中提到的regularization 技术才是解决过拟合的正途。
    4. 使用 PCA 之前,一定要利用原维度的数据进行计算。仅仅当计算过程出现了(1)计算过慢;(2)占用内存过多;这两个问题之后,才应该考虑 PCA。盲目的使用,是不可取的。

编程作业答案:https://github.com/cnauroth/machine-learning-class

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值