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

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

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

上次笔记主要介绍评估机器学习模型的方法,从偏差、方差来分析模型可能拥有的问题,从而应该采取什么相应的措施。介绍了偏差、方差与欠拟合、过拟合之间的关系,以及正则化对偏差、方差的影响,还介绍了一些曲线图帮助分析,这些都是实践中很重要的建议,相比毫无目的地随便选择优化方法,通过评估分析之后可以排除一些无意义的选项,节省了大量宝贵的时间。

上次笔记链接:https://blog.csdn.net/qq_40467656/article/details/107525426

这次笔记继续介绍一些机器学习系统实际使用时会遇到的一些问题,以及相应的解决方案。

一、设计机器学习系统的思想

1.快速实现+绘制学习曲线——寻找重点优化的方向

当要开始做一个机器学习的系统时,一般来说最好的办法,不是一开始就建立一个很复杂的有许多复杂特征的系统,而是通过一个简单的算法来快速地实现它,即使这个简单的东西不是很完美;然后通过交叉验证集来测试数据。

做完上述的之后,就可以画出相应的学习曲线,通过学习曲线以及检验误差来找出你的算法是否存在高偏差或高方差或其他一些的问题,在作出这些分析之后,再来决定是否使用更多的数据或者特征等等。这种方法在你刚刚开始解决一个机器学习的问题的时候能起到很好的作用,因为你并不能预知,你是需要更多的特征还是更多的数据或者是别的东西,在缺乏各种证据的情况下,很难提前知道这些信息,因为你没有画出学习曲线所以很难决定把时间花在哪里。

所以很多时候,一开始应当先进行一次简单快速地实现,然后画出学习曲线来帮助你进行之后的判断。可以把它想成是在你编程的时候,你要避免出现过早优化的问题,这种思想告诉我们,应该用实际的证据来指导我们的决策,来决定把时间花在哪里,而不是仅凭直觉。上述思想如下图所示:
在这里插入图片描述

2.误差分析

当实现比如一个垃圾邮件分类器的时候,会经常观察交叉验证集的情况,然后看一看那些被错误分类的文件。通过查看这些被错误分类的垃圾邮件和非垃圾邮件,有什么共同的特征和规律,这样做多了以后,这个过程就会启发你应该设计怎样的新特征或是告诉你现在的系统有什么优点和缺点,然后指导你想出办法来改进它。

举一个具体的例子:假如在做一个垃圾邮件分类器,然后在你的交叉验证集中有500个样本,假如在这个例子中错误率较高,它错误分类了100个交叉验证样本,如下图所示:
在这里插入图片描述
那么现在要做的就是手动核查着100个错误,然后手工为它们分类,同时要考虑这些邮件是什么类型的邮件,有什么线索或者特征能帮助算法正确的进行分类。比如经过手动核查后发现错误分类的邮件是以下的情况:
在这里插入图片描述
对于错误比较多的类别,就应该多关注一下,多找一些特征来区别它们,进而进行改进。

因此,这样的误差分析,是一种手动地去检查算法所出现的失误的过程,它能引导你走向最有成效的道路。这也是为什么要先通过一种比较简单的算法先实现的原因,我们要做的是找到一些最难以分类的类别,而对于不同的学习算法来说,对它们造成困难的样本总是相似的,通过一个简单粗暴的算法实现,你可以很快的找到算法的不足所在和难以处理的样本的类型,然后把精力集中在它们身上。

3.数值估计

在改进学习算法时,另一个技巧是保证自己对学习算法有一种数值估计的方法。当改进学习算法时,如果你的算法能够返回一个数值评价指标来估计算法执行的效果,将会很有帮助。
可能算法是准确的,也可能是错误的,但这个数字能告诉你你的学习算法效果有多好,先看一个例子:
在这里插入图片描述
当遇到是否应该把discount、discounts、discounted和discounting这几个单词当作有相同的含义时,可能会考虑是否使用stemming软件(一种词干提取软件),那么我们就可以通过比较使用前后系统的错误率的变化来判断是否应该使用。图中所示,不使用的错误率是5%,使用后的错误率是3%,显然有了这样的数值比较,抉择起来会很容易。

当你改进学习算法时,你总是要去尝试很多新主意和新版本的算法,如果你每次试用新方法都手动地去检测这些例子看看表现的好不好,会让你很难去决定到底应不应该这么做。但是通过一个单一规则的数值评价指标,你可以观察误差率是变大了还是变小了,你可以通过它更快地实践你的新想法,它能直接告诉你你的想法能提高还是降低学习算法的表现,这会大大加速你的进程。

二、偏斜类问题(类别不均衡)

从一个例子来理解偏斜类问题:
在这里插入图片描述
训练一个逻辑回归模型来判断患者是否患有癌症,假设我们训练的这个模型在测试集上的错误率只有1%。但是如果只有0.5%的患者是有癌症的,这时即使不用任何算法,直接将所有患者都预测为无癌症,错误率也只有0.5%,比使用了机器学习算法后获得的错误率还要低

这种情况经常发生在正例和负例的比率非常接近于一个极端情况的时候。在本例中,正样本的数量与负样本的数量相比非常非常少,把这种情况叫做偏斜类。一个类的数据与另一个类相比多很多,此时使用分类误差或分类精确度来作为评估度量可能会产生如下问题:有时候只看准确率无法衡量一个算法的好坏,无法确定真的提升了算法的质量

三、查准率P与召回率R——代替准确率的评估指标

所以在遇到偏斜类问题时,我们希望有一个不同的误差度量值或评估度量值。下面介绍两种评估度量值:查准率与召回率

首先要定义一些概念:
在这里插入图片描述
当真实类别与预测的类别都为1时的数据,我们称之为真阳性(True Positive),真实类别为1,预测类别为0的,称之为假阳性(False Positive),真实类别为0,预测类别为1的,称之为假阴性(False Negative),真实类别与预测类别都为0的,称之为真阴性(True Negative),如上图所示。

然后再来看查准率与召回率的定义:

查准率(Precision)是指,在所有预测为真的数据中真实标签为真的数据的比例,公式如下图所示,可以看出,查准率越高越好。
在这里插入图片描述
召回率(Recall)是指,在所有真实标签为真的数据中,被预测正确(即也为真)的比例,公式如下图所示,自然也是越高越好。
在这里插入图片描述
通过计算查准率与召回率,我们就可以更好地知道分类模型到底好不好,针对上述提及的癌症分类的偏斜类问题,如果我们将所有的数据全都预测为无癌症(0/假),那么召回率就变成0,由此得知这不是一个好的算法。

拥有高查准率和高召回率的模型是一个好的分类模型,这给予了我们一个更好的评估值,给予了一种更直接的方法来评估模型的好坏。

四、查准率与召回率的权衡——F1-Score

在很多应用中,我们希望能够保证查准率与召回率的相对平衡。先来看一下查准率与召回率有什么联系:

  1. 还是在这个癌症分类的逻辑回归模型上,如果我们的目标是尽可能的减少患者的心理负担,即只有很确定时才宣布患有癌症(y=1),不然不判定为癌症(y=0)。
    在这里插入图片描述
    当我们将分类的阈值从0.5改为0.7或者是0.9时,这就意味着在概率达到90%时才判定为有癌症,这样的话判断有癌症的数据中真的有癌症的比例就会变大,即查准率会变大;而与此同时,所有真实有癌症的数据中被预测为有癌症的可能性就有所下降(毕竟概率要求变高,原本一些低概率的现在被预测为无癌症了),即召回率会变小

  2. 考虑另外一种情况,假设我们希望避免遗漏掉患有癌症的患者,即希望避免假阴性。换句话说,如果一个患者确实患有癌症,但是我们没有告诉他患有癌症,那这可能造成严重的后果。
    在这里插入图片描述
    这时的分类阈值将会设置的小一些,比如0.3,因为希望更多的患者被预测为有癌症,从而进一步接受治疗。那么与上一个情况相反,这将拥有高召回率,低查准率

所以对于大多数的回归模型,你得权衡查准率与召回率,通过改变“阈值”来得到想要的高查准率或是高召回率,它们之间的关系如下图所示,一个高一个就低
在这里插入图片描述
那么现在又有一个问题,当你有几个算法时,或者同一个算法但是“阈值”不同时,得到的查准率与召回率都是不一样的,我们怎样决定哪一个是最好的呢?当只有一个评价度量时可以直接比较,但是现在有两个,该怎么综合考虑呢?

有一种结合查准率和召回率的的方式,叫做F值(F-Score),公式如下图所示,分值越高则说明该模型最好
在这里插入图片描述

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

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

相关文章

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

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

numpy方法读取加载mnist数据集

方法来自机器之心公众号 首先下载mnist数据集,并将里面四个文件夹解压出来,下载方法见前面的博客 import tensorflow as tf import numpy as np import osdataset_path rD:\PycharmProjects\tensorflow\MNIST_data # 这是我存放mnist数据集的位置 is_…

纳米线传感器来了,传感芯片还会远吗

来源:科学网“无旁路电路”纳米线桥接生长方案 黄辉供图微型气体检测仪 黄辉供图人工智能、可穿戴装备、物联网等信息技术迅猛发展,需要海量的传感器提供支持,大数据和云计算等业务也需要各种传感器实时采集数据来支撑。但目前的传感器存在国…

PyTorch框架学习七——自定义transforms方法

PyTorch框架学习七——自定义transforms方法一、自定义transforms注意要素二、自定义transforms步骤三、自定义transforms实例:椒盐噪声虽然前面的笔记介绍了很多PyTorch给出的transforms方法,也非常有用,但是也有可能在具体的问题中需要开发…