【CV】吴恩达机器学习课程笔记 | 第14章

本系列文章如果没有特殊说明,正文内容均解释的是文字上方的图片
机器学习 | Coursera
吴恩达机器学习系列课程_bilibili

14 降维

14-1 目标I:数据压缩

在这里插入图片描述
如上图,将数据从二维压缩为一维,以表示同一个物体的长度为例, x 1 x_1 x1为用厘米表示, x 2 x_2 x2为用英尺表示,由于四舍五入产生的误差,坐标系中的样本坐标没有完全练成一条直线,对其进行线性拟合,得到一条直线,让这些点投影在另一条坐标轴 z z z上,这样,可以用一个一维的数字 z ( i ) z^{(i)} z(i)来表示原来的一个二维向量 x ( i ) x^{(i)} x(i)
在这里插入图片描述
如上图,将数据从三维压缩为二维,(在实际应用中可能是将10000维的数据压缩为1000维),空间中所有的点几乎都在一个平面的周围,将所有的点投射到这个平面上,用 z 1 z_1 z1 z 2 z_2 z2来表示平面的两个坐标轴,这样就把一个三维空间压缩为二维平面,原来的数据用一个二维向量 z ( i ) z^{(i)} z(i)即可表示, z ( i ) z^{(i)} z(i)中有两个特征 z 1 ( i ) z_1^{(i)} z1(i) z 2 ( i ) z_2^{(i)} z2(i)

降维后的数据可以提高学习算法的运算效率并且节省磁盘存储空间

14-2 目标II:可视化

一般取k=2 or k=3来可视化数据集

14-3 主成分分析方法(PCA)

在这里插入图片描述
有这样的一个数据集,这个数据集含有二维实数空间内的样本,假设我想对数据进行降维,从二维降到一维,也就是说,我需要找到 一条直线,将数据投影到这条直线上
上图中红线是一个不错的选择,因为每个点投影到直线上的距离(蓝线)都很短
所以,PCA就是寻找一个低维的东西(在这个例子中是一条直线),让数据投射在上面时的距离的平和最小,这个距离被称为投影误差
在使用PCA钱,需要先进行均值归一化和特征规范化,使得特征 x 1 x_1 x1 x 2 x_2 x2均值为0,数值在可比较的范围之内
在这里插入图片描述
由二维到一维时,找到一个向量即可,三维到二维时,需要找到2个向量组成一个平面,更高维时,需要找到k个向量,让样本投影到这k个向量展开的线性子空间上
在这里插入图片描述
上图解释了PCA与线性回归的不同:

  • 线性回归是左侧的坐标系,他对一条条竖直的(与y轴平行的)蓝线求和,因为线性回归计算出的误差是指预测的y值与实际y值之间的差
  • PCA是右侧的坐标系,他对一条条垂直于降维后的直线(在这里是直线)的蓝线求和,因为PCA计算的是实际的点与降维后直线的距离,实际的点是投影上去的

14-4 主成分分析算法(PCA)

在这里插入图片描述
首先进行数据预处理,进行均值标准化,可能要进行特征缩放
均值标准化:

  • 按照上图先求出某个特征在所有样本中的平均值 μ j \mu_{j} μj,公式为 μ j = 1 m ∑ i = 1 m x j ( i ) \mu_{j}=\frac{1}{m} \sum_{i=1}^{m} x_{j}^{(i)} μj=m1i=1mxj(i)
  • 然后把每一个旧的 x j ( i ) x_{j}^{(i)} xj(i)替换成 x j − μ j x_{j}-\mu_{j} xjμj,这样每一个特征的均值都为0
    在这里插入图片描述
    先计算 Σ \Sigma Σ矩阵(协方差),计算公式为: Σ = 1 m ∑ i = 1 n ( x ( i ) ) ( x ( i ) ) T \Sigma=\frac{1}{m} \sum_{i=1}^{n}\left(x^{(i)}\right)\left(x^{(i)}\right)^{T} Σ=m1i=1n(x(i))(x(i))T,表示为矩阵形式为 Σ = 1 m X T X \Sigma=\frac{1}{m} X^TX Σ=m1XTX
    然后用软件库调用svd算法得到矩阵 U U U U U U是一个n×n的矩阵,这里的n=m,因为共有n=m个样本数量,取矩阵 U U U的前k列就是要降维成的k维空间里的k个向量(空间是几维就需要几个向量来表示这个空间,如三维降二维时需要两个向量来表示二维空间)
    在这里插入图片描述
    如上图,把刚刚取出的k个列向量组成的矩阵命名为 U r e d u c e U_{reduce} Ureduce,则得到的低维(k维)的数据集 z ( i ) = U r e d u c e T x ( i ) z^{(i)}=U_{reduce}^Tx^{(i)} z(i)=UreduceTx(i),该数据集是一个k维向量

14-5 压缩重现(解压缩)

在这里插入图片描述
之前进行了这样的运算: z = U r e d u c e T x z=U_{reduce}^Tx z=UreduceTx
其中 z z z是新得到的一维向量, x x x是原来的二维向量, U r e d u c e T U_{reduce}^T UreduceT是通过svd算法得出的
现在要恢复二维,进行这样的运算: x a p p o x = U r e d u e e z x_{appox }=U_{ reduee } z xappox=Uredueez

14-6 选择主成分数量

在这里插入图片描述
上图中分子的式子称为平均平方映射误差,分母称为数据的总变差(它的意思是 “平均来看 我的训练样本 距离零向量多远? 平均来看 我的训练样本距离原点多远?),分数计算的结果为降维后的新数据与原数据的差距有多大
比如假设结果 ≤ 0.01 \le0.01 0.01,则可以说有1%的差异,这个数字比较典型的取值为0.01、0.05、0.10甚至也可能是0.15在这里插入图片描述
上图左侧是计算合适的k值的方法,这里假设与原数据有小于等于1%的误差
可以直接调用svd算法,其中输出的 S S S矩阵是一个对角阵
用公式 1 − ∑ i = 1 k s i i ∑ i = 1 n s i i ⩽ 0.01 1-\frac{\sum_{i=1}^{k} s_{i i}}{\sum_{i=1}^{n} s_{i i}} \leqslant 0.01 1i=1nsiii=1ksii0.01,直接判断这个公式是否成立即可,找到让这个公式成立的k的值就是合适的k的取值,或者用 ∑ i = 1 k s i i ∑ i = 1 n s i i ⩾ 0.99 \frac{\sum_{i=1}^{k} s_{i i}}{\sum_{i=1}^{n} s_{ii}} \geqslant 0.99 i=1nsiii=1ksii0.99来判断也是一样的

  • 即使要手动选择k值,计算出差异值也可以帮助向别人解释你实现的 PCA 的性能 的一个好方法 ,熟悉 PCA 的人们 就可以通过它 来更好地理解 你用来代表原始数据的 100维数据 近似得有多好 因为有99%的差异性被保留了

14-7 应用PCA的建议

在这里插入图片描述
在使用监督学习时,也可以运用PCA来增加运算效率

  • 先将 x ( 1 ) , x ( 2 ) , … , x ( m ) x^{(1)}, x^{(2)}, \ldots, x^{(m)} x(1),x(2),,x(m)从原来的样本中抽出,运用PCA算法将其降维得到 z ( 1 ) , z ( 2 ) , … , z ( m ) z^{(1)}, z^{(2)}, \ldots, z^{(m)} z(1),z(2),,z(m),然后把降维后的 z ( 1 ) , z ( 2 ) , … , z ( m ) z^{(1)}, z^{(2)}, \ldots, z^{(m)} z(1),z(2),,z(m)替换到原来的样本中,与y一一对应,然后进行监督学习的算法
  • 注意:PCA只能在训练集中使用,不能用于交叉验证集和测试集,从训练集得到了 x x x z z z的对应关系后,可将这个对应关系应用到交叉验证集和测试集

在这里插入图片描述

  • 不要用PCA来防止过拟合,更好的方法是用正则化
  • PCA是在丢失一定精度的境况下提高运算效率,它在降维时没有与y相关
  • 在使用PCA之前首先尝试使用原数据进行运算,只有在运算速度过慢、占用内存太大、占用磁盘太大、原数据无法成功计算时才使用PCA
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fannnnf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值