[机器学习笔记]Note8--机器学习应用建议

继续是机器学习课程的笔记,本节课的内容主要是一些机器学习应用的建议,包括对假设的评估,如何处理过拟合和欠拟合等。

觉得下一步做什么

到目前为止,我们已经学习了线性回归,逻辑回归以及神经网络,梯度下降等算法,我们已经可以对给定一个训练集使用上述一种算法来训练,得到模型,然后进行预测,但是接着问题就来了,如果得到的预测结果误差很大,那么应该如何减少误差,提高准确率呢?

这里还是使用房价问题作为例子,当使用一个线性回归模型来预测房价,但是发现训练好的模型来预测未知数据的时候,发现有较大误差,那么接下来可以采取的办法有以下几种:

  1. 获得更多的实例——通常是有效的,但是代价比较大,有时候有些数据是不容易采集的,所以可以先考虑后面几种方法
  2. 减少特征的数量
  3. 增加更多的特征
  4. 增加二项式特征,如x21,x22,x1x2
  5. 减小归一化因子λ
  6. 增大归一化因子λ

虽然有这么多方法,但是我们不应该随机选择上面的某种方法来改进我们的算法,而是运用一些机器学习诊断法来帮助我们知道上面哪些方法对我们的算法是有效的。

误差分析

这里主要介绍如何检验算法是否过拟合了。

首先是将数据分成训练集和测试集,通常用70%的数据作为训练集,剩余的30%的数据做为测试集。注意,训练集和测试集均要包括有各种类型的数据,而且通常要对数据进行打乱顺序,然后随机生成训练集和测试集。

在通过训练集学习到模型的参数后,就需要使用测试集来使用该模型进行预测并计算误差。这里分为线性回归和逻辑回归两种情况:

  1. 对于线性回归模型,利用测试集数据计算代价函数Jtest(θ)=12mtestmtesti=1(hθ(x(i)test)y(i)test)2
  2. 对于逻辑回归模型,同样可以用测试集数据集来计算代价函数:
    Jtest(θ)=1mtesti=1mtesty(i)testloghθ(x(i)test)+(1y(i)test)loghθ(x(i)test)

    还可以计算误分类的比率,对于每一个测试集实例,计算:
    err(hθ(x),y)={1 if h(x)0.5 and y=0,or if h(x)<0.5,and y=10 Otherwise

    然后对结果计算平均:error=1mtestmtesti=1err(hθ(x(i)test),y(i))

这里误分类的计算是由于在之前的[逻辑回归][1]中,我们是如此定义分类的:

  • hθ0.5,预测y=1
  • hθ<0.5,预测y=0

模型选择(交叉验证集)

假设对一个特定的数据集,要确定最合适的多项式次数,或者是怎么选用正确的特征,或者是选择正则化参数λ来构建学习算法,这些问题都称之为模型选择

这里举例说明如何进行模型选择。假设我们要在10个不同次数的二项次模型之间进行选择:

1.hθ(x)=θ0+θ1x2.hθ(x)=θ0+θ1x+θ2x23.hθ(x)=θ0+θ1x++θ3x310.hθ(x)=θ0+θ1x++θ10x10

显然越高次数的二项式模型能够适应训练数据集,但是这种情况就可能是过拟合,也就是不能推广至一般情况,因此我们需要选择的是一个更能适应一般情况,即泛化能力更好的模型,这里就需要使用交叉验证集来帮助选择模型。

所以一般将数据集按下列方式分成训练集,交叉验证集以及测试集:

  • 使用60%的数据作为训练集
  • 使用20%的数据作为交叉验证集
  • 使用20%的数据作为测试集

上述方法是一个比较经典的分法,可以按照实际需要调整比例。

所以模型选择的方法为:

  1. 使用训练集训练出10个模型
  2. 用10个模型分别对交叉验证集计算得出交叉验证误差,即代价函数的值
  3. 选择代价函数值最小的模型
  4. 使用上一步中选择的模型对测试集计算得到推广误差,即代价函数的值

偏倚和偏差诊断(Diagnosis Bias Vs Variance)

高偏倚和高偏差的问题基本上就是低拟合和过拟合的问题。

假设还是房价问题,有以下三种模型,分别对应下面三幅图,其分别就是低拟合,刚刚好以及过拟合三种情况:
这里写图片描述

通常我们会将训练集和交叉验证集的代价函数误差与多项式的次数绘制在同一张图表上来帮助分析,如下所示:
这里写图片描述

由上图可以得知:

  • 对于训练集,当多项式次数d较小时,误差比较大,模型拟合程度很低;随着d的增大,误差减小,拟合程度提高;
  • 对于交叉验证集,当d较小时,误差比较大,模型拟合程度低;当d开始增大时,误差会呈现先减小后增大的趋势,转折点就是模型开始过拟合训练集的时候。

此外,通过上图也可以进行判断是偏倚还是偏差:

  • 训练集误差和交叉验证集误差比较接近时:偏倚/低拟合
  • 交叉验证集误差远大于训练集误差时:偏差/过拟合

归一化与偏倚/偏差

在训练模型的时候,我们一般会使用到归一化方法来防止过拟合的发生。假设有一个线性回归模型hθ(x)=θ0+θ1x1+θ2x22+θ3x33+θ4x44,然后使用归一化,则其代价函数为J(θ)=12m[mi=1((hθ(x(i))y(i))2+λnj=1θ2j)],但是这里归一化会由于λ的取值大小而导致低拟合或者过拟合的情况,如下图所示:
这里写图片描述

所以当λ过大,就会导致上图中第一幅图的情形,也就是低拟合的状况,此时就是对多次的参数惩罚过大;而如果λ过小,则是导致如第三幅图的情况,会过拟合。

只有中间一幅图选择的λ是刚刚好,所以这里面临的问题就是选择合适的归一化因子λ。首先是选择一系列的想要测试的λ值,通常是0-10之间的呈现2倍关系的值(如:0,0.01,0.02,0.04,0.08,0.15,0.32,0.64,1.28,2.56,5.12,10总共12个)。

然后同样把数据分为训练集、交叉验证集和测试集。然后按照下列方法:

  1. 使用训练集训练出12个不同程度归一化的模型
  2. 用12个模型分别对交叉验证集计算出交叉验证误差
  3. 选择得出交叉验证误差最小的模型
  4. 使用上述得到的模型对测试集计算得到推广误差

同样,可以将训练集和交叉验证集的误差和λ的值绘制在同一张图表上:
这里写图片描述

由上图可以得到:

  • λ较小时,训练集误差较小而交叉验证集误差较大,此时是过拟合;
  • 随着λ的增大,训练集误差不断增加,这是因为处于低拟合的情况,而交叉验证集误差则是先减小后增加。

所以此时刚刚合适的λ值就是图中红色抛物线的最低点,也就是交叉验证误差减小到最低点然后开始增加的转折点了。

学习曲线

学习曲线是学习算法的一个很好的合理检验。它是将训练集误差和交叉验证集误差作为训练集实例数量(m)的函数绘制的图表。

假设现在有100行数据,我们从第1行数据开始,逐渐学习更多行的数据。如下图所示的学习曲线,分别是训练集和交叉验证集的误差随着使用的数据量增加而变化的曲线。
这里写图片描述

对于训练集,当刚开始训练的时候,数据量很小,所以得到的模型可以很好的拟合训练数据,但随着数据增大,得到的模型就很难非常完美地拟合训练集数据,所以误差是逐渐增大。
对于交叉验证集,一开始是用在训练集中训练好的模型,交叉验证集对于它就是一个陌生的数据集,所以初始误差会比较大,随着交叉验证集中数据量增大,这个初始的模型也会随之逐渐调整参数,所以误差就会逐渐减小。

那么如何利用学习曲线来识别高偏倚和或者是高偏差呢?

对于高偏倚/低拟合,首先假设这里使用一条曲线,即一个模型hθ(x)=θ0+θ1x来训练数据,由下图所示。
这里写图片描述

这里可以看到当训练集增加到多大,误差都没有多大改变。即在低拟合/高偏倚的情况下,增加训练集数据并不会有多大帮助

对于高偏差/过拟合,这里使用一个非常高次的多项式模型hθ(x)=θ0+θ1x++θ100x100,且归一化因子λ非常小。
这里写图片描述

由上图得知,在交叉验证集误差远大于训练集误差的时候,增加训练集数据是可以提高模型的效果的。

所以,在高偏差/过拟合的情况下,增加训练集数据是可以提高算法效果的

小结

回顾下一开始选择的六种方法,这里给出在不同情况下应该怎么选择:

  1. 解决高偏差/过拟合:

    • 增加训练集数据
    • 较少特征的数量
    • 增大归一化因子λ
  2. 解决高偏倚/低拟合:

    • 增加特征的数量
    • 减小归一化因子λ
    • 增加二项式特征

而对于神经网络的偏倚和偏差,分别如下所示:

  1. 使用较小的神经网络,类似于参数较少的情况,容易导致高偏倚和低拟合,但计算代价较小
  2. 使用较大的神经网络,类似于参数较多的情况,容易导致高偏差和过拟合,虽然计算代价大,但是可以通过归一化手段来调整而更加适应数据。

所以,通常选择较大的神经网络并采用归一化处理会比较小的神经网络效果要更好。

对于神经网络中的隐藏层的层数的选择,通常从一层开始逐渐增加层数。
为了更好作选择,可以把数据分为训练集、交叉验证集和测试集,针对不同隐藏层层数的神经网络选择神经网络,然后选择交叉验证集代价最小的神经网络。

所以这节课主要就是介绍了如何找出所使用学习算法的问题,可以通过误差分析,模型选择,学习曲线来判断是低拟合还是过拟合从而选择不同的方法,最终是继续提高算法的效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/409069.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity3d 手机屏幕自动适配

现在&#xff0c;市场上的手机分辨率多样化。带给开放人员一个很大的“跨界问题”。本人&#xff0c;昨晚突发奇想。手机分辨率多样化&#xff0c;但手机开放人员&#xff0c;制作UI时&#xff0c;最为重要的两个因素就是Position(位置)、Scale(大小)&#xff1b; 我引入一个“…

[机器学习笔记]Note9--机器学习系统设计

继续是机器学习课程的笔记&#xff0c;本节课的内容主要是介绍如何设计一个机器学习系统。 首先要做什么 这节课将介绍如何设计一个机器学习系统&#xff0c;首先是以设计一个垃圾邮件分类器算法作为例子。 为了解决这个问题&#xff0c;首先要决定的是如何选择并表达特征向…

java 图片阴影_Java 为 PPT 中的图形添加阴影效果

在PowerPoint文档中&#xff0c;给图形添加阴影效果能增强图形的立体感&#xff0c;使其贴近现实效果&#xff0c;提升文档的美观度。 本文将展示如何使用Free Spire.Presentation for Java为PPT中的图形添加阴影效果。除了文中展示的预设阴影效果&#xff0c;还可以添加内部阴…

nyoj 21 三个水杯 BFS

三个水杯 时间限制&#xff1a;1000 ms | 内存限制&#xff1a;65535 KB难度&#xff1a;4描述给出三个水杯&#xff0c;大小不一&#xff0c;并且只有最大的水杯的水是装满的&#xff0c;其余两个为空杯子。三个水杯之间相互倒水&#xff0c;并且水杯没有标识&#xff0c;只…

论文阅读(1)--Fine-grained Image Classification by Exploring Bipartite-Graph Labels

这是阅读《Fine-grained Image Classification by Exploring Bipartite-Graph Labels》这篇论文所做的笔记。 这篇论文是来自NEC实验室&#xff0c;是一篇有关细粒度分类/精细分类方面的论文。 0. 摘要 首先提出一个问题&#xff0c;给定一张食物的图片&#xff0c;对于一个…

java注释和注解_深入理解JAVA注解(Annotation)以及自定义注解

Java 注解(Annotation)又称 Java 标注&#xff0c;是 JDK5.0 引入的一种注释机制。Java 语言中的类、方法、变量、参数和包等都可以被标注。注解可以看作是一种特殊的标记&#xff0c;在程序在编译或者运行时可以检测到这些标记而进行一些特殊的处理。本文对 Annotation 进行了…

[机器学习笔记]Note10--支持向量机(SVM)

继续是机器学习课程的笔记&#xff0c;这节课的内容是介绍支持向量机&#xff08;SVM&#xff09;的内容。SVM是一个非常强大且流行的算法&#xff0c;在一些情况下&#xff0c;面对一些复杂的非线性问题可以提供比逻辑回归或神经网络更加简洁更加有效的结果。 优化目标 首先…

[机器学习笔记]Note11--聚类

继续是机器学习课程的笔记&#xff0c;本节介绍的是聚类方法&#xff0c;主要是K-means算法。 非监督学习 首先介绍监督学习和非监督学习的区别。一个监督学习的例子如下图&#xff0c;给定训练集如:{(x(1),y(1)),(x(2),y(2)),…,(x(m),y(m))},每个训练实例都有对应的标签。 …

[机器学习笔记]Note12--降维

继续是机器学习课程的笔记&#xff0c;本节介绍的是降维方法&#xff0c;这也是非监督学习中的一个问题&#xff0c;主要介绍主要成分分析&#xff08;Principal Component Analysis&#xff0c;PCA&#xff09;算法。 降维 动机一&#xff1a;数据压缩 使用降维的一个原因是…

[机器学习笔记]Note13--异常检测

继续是机器学习课程的笔记&#xff0c;本节课内容是异常检测&#xff0c;它是一个非监督学习算法&#xff0c;用于发现可能不应该属于一个已定义的组中的数据。 密度估计 首先是给出一个例子&#xff0c;如下图所示&#xff0c;是一个测试飞机引擎的例子&#xff0c;给定数据…

[机器学习笔记]Note14--推荐系统

继续是机器学习课程的笔记&#xff0c;本节课将介绍推荐系统的内容。 问题形式化 推荐系统是机器学习的一个非常重要的应用&#xff0c;在很多音乐、购物等网站都有推荐系统&#xff0c;如豆瓣&#xff0c;淘宝&#xff0c;网易云音乐等都是有使用到推荐系统的&#xff0c;因…