吴恩达机器学习笔记(十三)——降维

1.降维应用:数据压缩

降维首先是可以用于数据压缩的,例如将2维数据降维成一维数据,就可以将存储量减小一半,如下图所示:
在这里插入图片描述
又如下面从三维降至二维的数据所示:
在这里插入图片描述

2.降维应用:可视化

降维还可以将原本无法可视化的数据通过降维从而进行可视化。
如下图是各国的各项数据,因为特征较多,因此无法进行可视化:
在这里插入图片描述
通过降维成二维数据,我们就可以进行可视化了,如下图所示:
在这里插入图片描述
在这里插入图片描述

3.PCA问题规划1

首先从视觉上感受一下PCA的效果:
在这里插入图片描述
假设我们已经通过算法选择了要投影的线是橙色那条,那么我们可以用蓝色的线绘制出它的投影误差,我们要做的其实就是时投影误差尽可能地小
为了作出对比,我们绘制了下面一条粉红色的线,可以见到它的投影误差则是比较大的。
在这里插入图片描述
下面进行一些比较正式的定义:
在这里插入图片描述
假如我们想从2维压缩成1维:那么就需要找到一个向量(方向没有关系),使得数据的投影误差最小。

进行推广,我们可以得到多维压缩的定义:
在这里插入图片描述
假如我们想从n维压缩成k维:那么就需要找到k个向量u(1)、u(2)、…、u(k),使得数据的投影误差最小。

下面是展示了线性回归和PCA的区别,如下图所示:(左图代表线性回归,右图代表PCA
在这里插入图片描述

4.PCA问题规划2

在我们进行PCA处理前,我们首先需要对数据进行预处理。
其中我们需要将数据进行均值归一化,也就是进行下列操作:
在这里插入图片描述
下面介绍具体如何使用PCA算法:
现在假设我们需要将n维度的数据降成k维度
1、首先要先计算出协方差,具体表达式如下:(其中σ是一个n*n的矩阵)
在这里插入图片描述
2、通过SVD函数计算出协方差σ的特征向量
在这里插入图片描述
3、我们需要使用的是U矩阵(n*n的矩阵),如下图所示
在这里插入图片描述
4、因为我们想降至k维,因此我们就要从U矩阵中取出u(1)~ u(k),从而构建新的矩阵(n*k的矩阵),称为Ureduce
在这里插入图片描述

5、最后我们要将n维的x降成k维的z,其中z=(Ureduce)TX
在这里插入图片描述

5.压缩重现

上一小节中我们通过下面的方法得到压缩后的x
在这里插入图片描述
基于此,我们可以通过下列的公式来得到Xapprox(与原来的x会存在一定的误差):
在这里插入图片描述

6.主成分数量的选择

在利用PCA算法的时候,我们需要确定降至的维度k,这个k同样也被称为数据主要成分的数量或者数据的主要成分保留的数量,这一小节就来讨论一下如何选择k。

PCA算法主要做的工作就是最小化average squard projection error,也就是要最小化下面这个表达式:
在这里插入图片描述
同时,我们还需要定义total variation(可以理解为样本和全零点之间的举例),也就是下面这个表达式:
在这里插入图片描述
当我们想要选择k时,通用的原则是选择下面不等式成立的最小k,如下所示:
在这里插入图片描述
并且,我们也可以调整0.01这个数字来调整被保留的完整性。上式就表示百分之99的方差被保留了下来。

下面介绍如何完成k选择的算法:

  1. 我们从k=1开始,使用PCA算法计算这些值
    在这里插入图片描述

  2. 然后检查不等式是否成立
    在这里插入图片描述

  3. 如果不成立就换k=2,k=3,…,如此继续。假设到k=17时成立了,那么就选择k=17

如此可见,上面这个算法比较麻烦,好在svd方法提供了简便的计算方式。

  1. 首先我们通过svd算法得到相应的矩阵
    在这里插入图片描述

  2. S矩阵是一个对角矩阵,只有对角线上的数字非零
    在这里插入图片描述

  3. 然后我们就开始计算过程,我们可以用下面的表达式代替计算之前的不等式。假设我们计算k=3,分子就是S11、S22、S33求和,分母是全部对角线元素求和。我们要检查的就是它是否小于等于0.01,同样是选择能够满足不等式的最小k
    在这里插入图片描述
    如果这样做,你就只需要调用一次svd,节省了许多时间

7.应用PCA的建议

下面则是介绍了PCA算法在较少数据维度的应用,如下图所示:
在这里插入图片描述
基本思想:将原本高维度的数据x降至低维度的z,然后采用z建立模型进行训练。

需要特别注意以下几个方面:

  1. PCA算法只能运行在训练集上,在交叉验证集或测试集中同样也是使用训练集建立的映射。(也就是在后面进行预测时要使用测试集计算出来的Ureduce
  2. 不要使用PCA去防止过拟合,因此PCA可能会损失一些重要的特征,使用正则化的方法去防止过拟合更有效果
  3. 如果能够在不使用PCA的情况下计算得到结果,那么就不要使用PCA。如果没办法计算得到(运行性太慢等等情况),再使用PCA。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值