【吴恩达机器学习笔记】十二、降维

简介: 【吴恩达机器学习笔记】十二、降维

十二、降维


1. 目标1:数据压缩

数据压缩有挺多的好处,可以减少数据存储的内存,可以加快算法运行速度等等,让我们先来看看将二维降成一维是如何操作的吧。


5d9c8bf27e674f77bc8b7ac639ca68cf.png


可以看到上面设定了一条绿线,让所有样本都往绿线上投影,然后单独提出来得到一个坐标轴,这时我们就可以通过新的数z来代表每一个样本的位置,实现了二维到一维的降维,接下来再看看三维到二维的过程。

17142ebccd834306ad93595001237d6d.png



过程和二维到一维的比较相似,只不过我们现在是通过让所有样本投影到一个平面上,这样就可以设置两个新的数z1和z2来表示样本的位置,从而实现了三维到二维的降维。


2. 目标2:可视化

这节课再来将一下降维的第二个应用可视化,假设我们现在有很多数据关于每个国家的信息,每个国家都有50个指标表示即50维,现在我们通过一系列变换将50维降到2维,这可能就很难理解2维是如何表示国家的情况。

e2cad5fb1b3146b285699be0baf33dd6.png



那我们可以通过图像去理解这些信息,假设横轴代表国家的GDP而纵轴代表人均的GDP,就能很直观的表现出来。


3. 主成分分析问题规划

主成分分析(PCA)问题规划


5a7d6014f0f14af1a8e3ccc6edf1e08a.png


这种算法是最强大的无监督算法之一,其原理是通过将样本通过投影到更低维度上从而找到一个投影误差最小的维度,拿2D到1D距离,PCA就是通过计算所有样本到直线垂直距离即投影误差,找到平方投影误差最小的直线,同理换成3D到2D就是将直线换成了平面。


并且PCA不是线性回归,虽然与线性回归比较相似。

4ccc32db47814876a0c113aa2cfd3c84.png



上图左侧代表的是线性回归图像,而右侧则是PCA,可以发现线性回归问题中是找到样本竖直方向与直线的距离的最小误差,而PCA中则是样本与直线的垂直距离。还有一点不同就是,线性回归是要预测y值的,而PCA并没有什么预测的概念,本身作用是用于降维,而特征之间并没有什么特殊关系。


接下来,我们来讲讲PCA算法的详细步骤,但在此之前,我们首先要执行的是均值标准化,这里的流程实际上是和之前有监督学习的数据处理步骤是一样的。


fce74fc44854453d8b5c2748421637e4.png


并且如果特征值相差过大,还需要进行特征缩放。


998a2490630c4b7d9be56f79f6c8805c.png


如果你想减少数据即从N维降到K维,首先你要计算协方差矩阵(covariance matrix),要注意的是上面sigma矩阵和求和sigma是完全不一样的,虽然符号十分相似。然后再计算**奇异值分解(svd)**得到U,S,V矩阵,而svd函数可以通过数值库找到对应的代码。



而得到的USV中的U矩阵尤为关键,它是一个n阶方阵,我们要取其中的前k项从而组成Ureduce矩阵,然后计算其与样本向量的乘机得到z,这里的样本可以用训练集中的也可以用交叉验证集中的。


4. 主成分数量选择

我们在使用PCA的时候还要考虑到k的选择,以下就是我们选择k的标准。



9a337b212a5d420587e4fac8d19e90d3.png

你要计算平均平方投影误差与总平方误差,然后使两者相除的数值尽量的小,我们一般想让这个值尽量小于1%,或者我们也可以说尽量有大于99%的方差被保留即大于99%的数据被保留。


所以我们要该如何去选取k呢,下面左侧的方法就比较笨拙,通过不断尝试k值,然后反复计算平均平方投影误差和总平方投影误差,这样每次都会调用一次奇异化分解,导致效率变低。

6e11ec76a1d24610a2c980765bb79d55.png



所以我们会用上图右侧的方法,利用之前奇异化分解得到的矩阵中的S矩阵,然后将之前的算式改成上图右侧的算式,这样我们就只用计算一次奇异化分解,每次只用计算只用调用S矩阵中的值即可,同样只用尽量让上面算式结果小于0.01,下面就是具体算式。


5a1e9f7b1ae44e46b2ffdb7a22b691b1.png


5. 压缩重现

我们前面通过投影将高维转化为低维,同样我们也可以通过压缩后的数据将低维重现为高维。


3fd01c4dffa542edab9e3fc96d003da5.png


重现后的x都在之前映射的直线上,不等于原来的x,但都接近于原来的x,具体步骤通过Ureduce乘以z即可。


6. 应用PCA的建议

我们在进行监督学习时有时候会碰到样本数据量特别大的情况,这时候直接运用逻辑回归、支持向量机等算法可能会运行的比较慢,这时候我们可以通过PCA来降维从而加速监督学习。


3afa03bc2b0e4b6b8464cf16c9b1332f.png


我们可以从训练集中提取出x特征(注意只能是训练集),然后通过PCA算法将这些特征压缩成z,上面的这个例子是将10000维降到了1000维,实际中可能没这么夸张,可能会降1/5或者1/10之类,并保留大部分的方差。


现在,我们就可以来总结一下PCA的应用了。



b3e1b3ddde8b422ca308c61e9f0d57a6.png

PCA可以用于数据的压缩,从而减少存储数据的内存或者磁盘,或者加速学习算法。


当然PCA还可以应用于可视化,我们一般运用2D或3D进行可视化。


还有一点要提的是,不要用PCA去防止过拟合情况。

3902181da6724003941cd42fcaf86667.png



也许,你用PCA去防止过拟合得到的效果不错,即使你保留了99%的方差,但仍然有可能会丢失一些有价值的信息,所以这里建议使用正则化去防止过拟合是更好的选择。


还有一个误区就是,很多人会滥用PCA,有些人甚至会在项目计划开始时就使用PCA,这里建议先不使用PCA去尝试训练模型,因为有时候可能不使用PCA也能达到同样的效果,就不用花很多时间在PCA的计算上面了。


600a3c523d2044dda97f3eb5add18879.png

目录
相关文章
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
算法金 | 吴恩达:机器学习的六个核心算法!
吴恩达教授在《The Batch》周报中介绍了机器学习领域的六个基础算法:线性回归、逻辑回归、梯度下降、神经网络、决策树和k均值聚类。这些算法是现代AI的基石,涵盖了从简单的统计建模到复杂的深度学习。线性回归用于连续变量预测,逻辑回归用于二分类,梯度下降用于优化模型参数,神经网络处理非线性关系,决策树提供直观的分类规则,而k均值聚类则用于无监督学习中的数据分组。这些算法各有优缺点,广泛应用于经济学、金融、医学、市场营销等多个领域。通过不断学习和实践,我们可以更好地掌握这些工具,发掘智能的乐趣。
88 1
算法金 | 吴恩达:机器学习的六个核心算法!
|
3月前
|
机器学习/深度学习 算法 BI
机器学习笔记(一) 感知机算法 之 原理篇
机器学习笔记(一) 感知机算法 之 原理篇
|
3月前
|
机器学习/深度学习 算法 数据可视化
技术心得记录:机器学习笔记之聚类算法层次聚类HierarchicalClustering
技术心得记录:机器学习笔记之聚类算法层次聚类HierarchicalClustering
34 0
|
3月前
|
机器学习/深度学习 分布式计算 API
技术好文:Spark机器学习笔记一
技术好文:Spark机器学习笔记一
28 0
|
4月前
|
机器学习/深度学习 自然语言处理 PyTorch
fast.ai 机器学习笔记(四)(1)
fast.ai 机器学习笔记(四)
125 1
fast.ai 机器学习笔记(四)(1)
|
4月前
|
机器学习/深度学习 数据挖掘 Python
fast.ai 机器学习笔记(一)(4)
fast.ai 机器学习笔记(一)
111 1
fast.ai 机器学习笔记(一)(4)
|
4月前
|
机器学习/深度学习 Python 文件存储
fast.ai 机器学习笔记(一)(3)
fast.ai 机器学习笔记(一)
119 1
fast.ai 机器学习笔记(一)(3)
|
4月前
|
存储 机器学习/深度学习 前端开发
fast.ai 机器学习笔记(一)(2)
fast.ai 机器学习笔记(一)
109 1
fast.ai 机器学习笔记(一)(2)
|
4月前
|
机器学习/深度学习 Python 索引
fast.ai 机器学习笔记(二)(4)
fast.ai 机器学习笔记(二)
46 0
fast.ai 机器学习笔记(二)(4)
|
4月前
|
索引 机器学习/深度学习 Python
fast.ai 机器学习笔记(二)(3)
fast.ai 机器学习笔记(二)
54 0
fast.ai 机器学习笔记(二)(3)