吴恩达《机器学习》学习笔记十一——应用机器学习的建议

吴恩达《机器学习》学习笔记十一——应用机器学习的建议

  • 一、训练完模型后下一步要做什么
  • 二、评估算法与模型选择
    • 1.训练集与测试集
    • 2.训练/测试步骤
    • 3.模型选择
    • 4.数据集新的划分——验证集的加入
  • 三、偏差与方差
    • 1.偏差与方差的理解
    • 2.正则化和偏差方差的关系
    • 3.学习曲线
  • 四、决定接下来要做什么

经过前十次笔记的学习,已经掌握了线性回归、逻辑回归和神经网络三种经典的机器学习算法,并学会了使用正则化来防止过拟合。下面将跳出具体的算法,学习对机器学习模型的评估以及应用过程中优化的一些建议。

一、训练完模型后下一步要做什么

在设计机器学习的系统时,能够明白如何选择一条最合适、最高效的道路是一切的源头,如果没有合适的技巧,可能会在不断地尝试过程中浪费很多时间,比如选择什么模型、是否要特征映射、选择哪些特征、是否要花时间多采集数据等等。这些事情可能既花费很多时间,但最后还可能对系统性能的提升没有帮助

所以下面会给出一些建议和指导,帮助开发者明白怎样进行选择是有益于模型性能提升的。具体来说,假如你在开发一个机器学习系统或想试着改进一个机器学习系统的性能,你应该如何决定,接下来该选什么操作。

为了更形象地说明,用房价预测的模型来作为例子:
在这里插入图片描述
假设我们已经完成了带有正则化的线性回归模型来预测房价,代价函数如上图所示,但是当将训练好的模型用于一组新的数据来进行预测时,发现有很大的误差,那么接下来我们该怎么做来进一步改善这个模型?

下面是可能进行的一些尝试:
在这里插入图片描述
比如可能会想是数据样本不够要去获取更多的训练样本;
可能是特征太多过拟合了所以要减少一些特征的数量;
也可能是特征数量太少要增加一些;
也可能是线性模型太简单要加入一些多项式特征来增加模型复杂度;
还可能想到调节λ等的一些超参数。

这些尝试可能会非常耗费时间,而且最关键的是,如何选择很可能是凭人们的感觉,这样就有太大的主观性。

但是有一系列简单的方法,能让你事半功倍,快速地排除一些对模型的优化没有效果的可能选项,大大地节省尝试的时间

下面将介绍怎样评估机器学习算法的性能,然后将介绍这种能够事半功倍的方法——机器学习诊断法,这是一种测试,通过测试,你可以知道算法在哪里出现了问题,这也就是说,想要改进算法性能,应该进行什么样的尝试才是有意义的
在这里插入图片描述

二、评估算法与模型选择

在这之前,评估假设函数好坏与否是通过代价函数值来判断的。但是在训练集上代价函数小并不能说假设函数一定好,也可能在新的测试集上表现很差,也就是过拟合现象的存在。

过拟合现象我们还可以通过画出假设函数查看与数据样本的拟合曲线来判断,但是当你的特征很多的时候,如下图所示,假设函数h(x)也是无法可视化的。因此我们需要另一种评估假设函数的方法
在这里插入图片描述

1.训练集与测试集

一般来说,对于一个数据集,我们在训练之前需要将其进行划分为两部分:
在这里插入图片描述
要分为训练集和测试集两部分,一般的原则是,70%的数据当做训练集,30%的数据当做测试集,当然,在划分之前要打乱数据,保证划分的随机性

2.训练/测试步骤

使用训练集对参数进行优化,最小化代价函数J(θ);然后用训练好的参数去计算测试集上的代价函数值,测试模型的泛化能力

线性回归:
在这里插入图片描述
逻辑回归:
在这里插入图片描述

3.模型选择

如果你不知道你的模型应该用哪些多项式特征,或者不知道正则化系数应该设置成多少是最合适的,这类问题被称为模型选择问题

下面看一个模型选择的例子:
在这里插入图片描述
选择具体用多少次幂的特征组合来拟合数据比较好,我们需要对每个模型训练出它们各自的参数,并计算出各自对应的测试集上的误差,选择一个较小的作为最终的模型但是这样也不能说明它的泛化性能一定好,因为测试集已经用于选择模型了,没有额外的数据来衡量它的泛化性能,只是一个乐观的估计。

4.数据集新的划分——验证集的加入

相比于之前将数据集划分为训练集和测试集两种,现在我们将数据集划分为三部分:训练集、验证集和测试集,训练集用于训练模型,验证集用于模型选择,测试集用于测试模型的泛化能力。
在这里插入图片描述
它们相应的代价函数:
在这里插入图片描述
这边不同的是,之前选择模型的时候是通过测试集误差来选择的,现在通过验证集误差来选择:
在这里插入图片描述
那么测试集就可以来衡量它的泛化能力了。

三、偏差与方差

当运行一个学习算法时,如果这个算法的表现不理想,那么多半是出现两种情况,要么是偏差较大,要么是方差较大;换句话说,要么是欠拟合问题,要么是过拟合问题,在这种情况下,搞清楚是偏差问题还是方差问题或两者都有关系是非常重要的,因为这样能很快找到有效的解决方法和途径来改进算法。

1.偏差与方差的理解

回顾一下线性回归的欠拟合和过拟合的情况:
在这里插入图片描述
前面介绍了训练集和验证集的概念,这里我们来看一下它们随着假设函数的次数变高,它们的变化:
在这里插入图片描述
图中横坐标表示多项式的次数d,纵坐标表示误差即代价函数的值。那么,当d很小时,假设函数很简单,是欠拟合的情况;当d很大时,假设函数过于复杂,是过拟合的情况。对于训练集误差,欠拟合时误差很大,随着假设函数变复杂,误差会越来越小,过拟合时会非常小,如图中紫红色的曲线所示;而对于验证集误差,欠拟合和过拟合时的误差都会很大,即泛化能力很差,只有合理拟合的情况才会相对比较小,如图中大红色曲线所示

从这张图中我们可以来区分偏差和方差区域:
在这里插入图片描述
左边的部分是偏差高的情况,它对应着欠拟合,特点是训练集和验证集的误差都很高;右边的部分是方差高的情况,它对应着过拟合,特点是训练集误差很小,但是验证集误差很大

2.正则化和偏差方差的关系

正则化可以很好的防止过拟合,那么正则化和偏差方差又有什么关系呢?先来看一个例子:
在这里插入图片描述
这是带有正则化的线性回归,正则化系数的选择会对结果产生很大影响:当λ很大时,参数都会变得接近于0,假设函数近似等于一个常数;当λ很小时,起不到太大防止过拟合的作用,假设函数又会过于复杂,所以选择这个系数非常重要。

这边我们先给出一些表达式:假设函数、带正则化的代价函数、以及三个数据集上不带正则化的代价函数表达式,如下所示:
在这里插入图片描述
然后我们看一下对正则化系数λ进行模型选择的过程:
在这里插入图片描述
和前面选择多项式次数的情况非常相似,求出每种λ对应模型的参数,然后选择其中在验证集上误差最小的作为最终的模型,测试集误差来衡量其泛化能力。

那么改变正则化系数λ对训练集和验证集的误差会有什么影响呢?
在这里插入图片描述
图中横坐标为正则化系数λ,纵坐标为代价函数的值。当λ很小时,对应着过拟合的情况,所以训练误差小,验证误差大;当λ很大时,对应着欠拟合的情况,所以训练误差和验证误差都大。图中蓝色的曲线是训练集误差,紫红色曲线是验证集误差;左边对应高方差情况,右边对应高偏差情况。

3.学习曲线

如果你想检查你的学习算法运行是否一切正常,或者希望改进算法的表现,那么绘制学习曲线是非常有用的,这是一个很好的工具。可以用学习算法来判断一个学习算法是否处于偏差、方差问题,或者是两者都有。

先从一个例子来理解一些学习曲线:
在这里插入图片描述
注意图中横坐标是训练集样本的个数,纵坐标是误差,那么一个确定的假设函数的形式,在训练集上,当训练样本很少的时候很容易拟合,而且误差会很小,随着样本数越来越多,平均误差的值也将越来越大,所以训练集上的代价函数的变化如蓝色曲线所示;但是对于验证误差来说,训练样本少使得模型的泛化能力较弱,所以验证集上的误差较大,而随着训练样本增多,模型学习的越来越好,泛化能力逐渐变强,所以验证集上的代价函数的变化如紫红色曲线所示

上面介绍的是一般情况,下面我们看一下特例,首先是高偏差的学习曲线:
在这里插入图片描述
高偏差的情况就是欠拟合的情况,从上面右边的图可以看出来,增大数据样本到一定程度,训练误差和验证误差的变化就都不会太大了,所以变化曲线是左边图中所示,它们都趋向于一个较大的值然后平稳发展。所以遇到高偏差的情况,增大数据样本改善不大

然后是高方差的情况:
在这里插入图片描述
高方差的情况就是过拟合的情况,随着训练数据的增多,过拟合还是会过拟合,但是平均误差也会慢慢地上升,而验证误差则会慢慢的下降,特点是验证误差与训练误差之间有比较大的间隔。但是随着数据样本的增多,可以看到对学习算法还是有所改善的

四、决定接下来要做什么

有了上面的知识,知道如何评估算法、什么是模型选择、偏差与方差以及学习曲线的概念,我们就可以根据评估算法的结果来进行相应的尝试,使得模型性能得以优化,一些明显无意义的操作可以直接不用管。让我们再回到开头的问题:
在这里插入图片描述
这时就可以理解这些操作能够各自应对什么问题:

增加训练数据是应对高方差的;
减少特征数量是应对高方差;
增加额外的特征与增加多项式特征是应对高偏差;
减小正则化系数λ是应对高偏差;
增大正则化系数是应对高方差。

最后,我们将以上的知识结合到神经网络模型中,因为神经网络是目前比较流行的模型:
在这里插入图片描述
简单的神经网络会欠拟合,复杂的神经网络容易过拟合,具体怎么选择神经网络的层数以及每个隐藏的神经元个数,可以用到上面模型选择的方法,划分数据集,用验证集选出最合适的模型

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

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

相关文章

为什么说深耕AI领域绕不开知识图谱?

来源:AI科技大本营“所有在 AI 领域深耕的人,最终都会发现语义鸿沟仍是一个非常具有挑战性的问题,这最终还需要借助知识图谱等技术,来帮助将整体的 AI 认知取得新进展。”在 5 月 26 日的 CTA 峰会机器学习专场,Hulu 首…

机器学习中的相似性度量总结

来自 机器学习算法那些事公众号 在做分类时常常需要估算不同样本之间的相似性度量(Similarity Measurement),这时通常采用的方法就是计算样本间的“距离”(Distance)。采用什么样的方法计算距离是很讲究,甚至关系到分类的正确与否。 目录 1. 欧氏距离 …

吴恩达《机器学习》学习笔记十二——机器学习系统

吴恩达《机器学习》学习笔记十二——机器学习系统一、设计机器学习系统的思想1.快速实现绘制学习曲线——寻找重点优化的方向2.误差分析3.数值估计二、偏斜类问题(类别不均衡)三、查准率P与召回率R——代替准确率的评估指标四、查准率与召回率的权衡——…

增强现实:一场正在到来的医疗革命

来源: 资本实验室图像化可以让医生的诊断、决策和治疗更加准确,可以说是医疗史上非常重要的一项技术突破。近几年,通讯技术的发展推动了空间计算的快速商业化。在医疗领域,增强现实(AR)、虚拟现实&#xff…

吴恩达《机器学习》学习笔记十三——机器学习系统(补充)

这次笔记是对笔记十二的补充,之前讨论了评价指标,这次主要是补充机器学习系统设计中另一个重要的方面,用来训练的数据有多少的问题。 笔记十二地址:https://blog.csdn.net/qq_40467656/article/details/107602209 之前曾说过不要…

全球CMOS图像传感器厂商最新排名:黑马杀出

来源:半导体行业观察近期,台湾地区的Yuanta Research发布报告,介绍了其对CMOS图像传感器(CIS)市场的看法,以及到2022年的前景预期。从该研究报告可以看出,2018年全球CMOS图像传感器的市场规模为137亿美元,其…

吴恩达《机器学习》学习笔记十四——应用机器学习的建议实现一个机器学习模型的改进

吴恩达《机器学习》学习笔记十四——应用机器学习的建议实现一个机器学习模型的改进一、任务介绍二、代码实现1.准备数据2.代价函数3.梯度计算4.带有正则化的代价函数和梯度计算5.拟合数据6.创建多项式特征7.准备多项式回归数据8.绘制学习曲线𝜆0𝜆1&…

刘锋 吕乃基:互联网中心化与去中心化之争

前言:本文发表在2019年5月《中国社会科学报》上,主要从神经学角度分析互联网的发育过程,并对云计算和区块链为代表的中心化与去中心化技术趋势进行了探讨。当前,学术界和产业界对互联网的未来发展出现了分歧。随着谷歌、亚马逊、F…

iOS-BMK标注覆盖物

在iOS开发中,地图算是一个比较重要的模块。我们常用的地图有高德地图,百度地图,谷歌地图,对于中国而言,苹果公司已经不再使用谷歌地图,官方使用的是高德地图。下面将讲述一下百度地图开发过程中的一些小的知…

PyTorch框架学习二——基本数据结构(张量)

PyTorch框架学习二——基本数据结构(张量)一、什么是张量?二、Tensor与Variable(PyTorch中)1.Variable2.Tensor三、Tensor的创建1.直接创建Tensor(1)torch.tensor()(2)to…

十年空缺一朝回归,百度正式任命王海峰出任CTO

来源:机器之心百度要回归技术初心了吗?自 2010 年李一男卸任百度 CTO 之后,百度对这一职位就再无公开任命,一空就是 10 年。而今天上午李彦宏突然发出的一纸职位调令,让这个空缺多年的百度 CTO 之位有了新的掌舵手。就…

Windows下卸载TensorFlow

激活tensorflow:activate tensorflow输入:pip uninstall tensorflowProceed(y/n):y如果是gpu版本: 激活tensorflow:activate tensorflow-gpu输入:pip uninstall tensorflow-gpuProceed&#xf…

PyTorch框架学习三——张量操作

PyTorch框架学习三——张量操作一、拼接1.torch.cat()2.torch.stack()二、切分1.torch.chunk()2.torch.split()三、索引1.torch.index_select()2.torch.masked_select()四、变换1.torch.reshape()2.torch.transpace()3.torch.t()4.torch.squeeze()5.torch.unsqueeze()一、拼接 …

'chcp' 不是内部或外部命令,也不是可运行的程序

在cmd窗口中输入activate tensorflow时报错chcp 不是内部或外部命令,也不是可运行的程序 添加两个环境变量即可解决: 将Anaconda的安装地址添加到环境变量“PATH”,如果没有可以新建一个,我的安装地址是“D:\Anaconda”&#xf…

2019年全球企业人工智能发展现状分析报告

来源:199IT互联网数据中心《悬而未决的AI竞赛——全球企业人工智能发展现状》由德勤洞察发布,德勤中国科技、传媒和电信行业编译。为了解全球范围内的企业在应用人工智能技术方面的情况以及所取得的成效,德勤于2018年第三季度针对早期人工智能…

PyTorch框架学习四——计算图与动态图机制

PyTorch框架学习四——计算图与动态图机制一、计算图二、动态图与静态图三、torch.autograd1.torch.autograd.backward()2.torch.autograd.grad()3.autograd小贴士4.代码演示理解(1)构建计算图并反向求导:(2)grad_tens…

美国准备跳过5G直接到6G 用上万颗卫星包裹全球,靠谱吗?

来源:瞭望智库这项2015年提出的计划,规模极其巨大,总计要在2025年前发射近12000颗卫星。有自媒体认为,该计划表示美国将在太空中建立下一代宽带网络,绕过5G,直接升级到6G,并据此认为“6G并不遥远…

PyTorch框架学习五——图像预处理transforms(一)

PyTorch框架学习五——图像预处理transforms(一)一、transforms运行机制二、transforms的具体方法1.裁剪(1)随机裁剪:transforms.RandomCrop()(2)中心裁剪:transforms.CenterCrop()&…

IBM Watson大裁70% 员工,撕掉了国内大批伪AI企业最后一块遮羞布!

来源:新医路Watson 是IBM 的重量级AI 系统;近年IBM 大力发展AI 医疗,在2015 年成立独立的 Watson Health 部门,并收购多家医疗数据公司,前景看好。然而短短三年,这个明星部门就要裁员50% 到70% 的员工,代表…

PyTorch框架学习六——图像预处理transforms(二)

PyTorch框架学习六——图像预处理transforms(二)(续)二、transforms的具体方法4.图像变换(1)尺寸变换:transforms.Resize()(2)标准化:transforms.Normalize()…