吴恩达deeplearning.ai:机器学习的开发过程与优化方法

以下内容有任何不理解可以翻看我之前的博客哦:吴恩达deeplearning.ai专栏
我想在接下来分析下开发机器学习系统的过程,这样当你自己动手时,能够做出更加正确的判断。

机器学习开发的迭代 Iterative loop of ML development

决定模型架构

第一步,要决定模型架构,这意味着你要选择正确的模型,正确的参数,也许超参数等等。在决定完这些后,就可以训练模型。正如在之前的博客之中说的那样,模型一般不会一上来就很理想。下一步就可以查看一些诊断,例如查看程序的偏差和方差(以及下一节中的错误分析),根据诊断的结果,你可以再次调整模型,例如调整正则化系数啊,扩大神经网络啊,添加删除数据啊,增加或者减去特征之类的,这样就形成了一个迭代的闭环:
在这里插入图片描述
让我们看看一个垃圾邮件分类器的示例:

垃圾邮件分类器

左边是垃圾邮件的示例,右边是正常邮件:
在这里插入图片描述
垃圾邮件中经常会拼错一些敏感词,从而使得垃圾邮件分类器出错,所以我们该如何构建分类器呢
一种方法是构建一个监督学习算法,其中输入特征x是是电子邮件的特征输出标签y是0or1,这取决于文章是否是垃圾邮件。
构造电子邮件特征的一种方法是取英语单词的前10,000个单词并使用它们构造特征x_1一直到x_10000,例如下图的邮件,我们的输入特征就是a,andrew,buy,deal,discount等是否出现,出现了就记为1,否则为0:
在这里插入图片描述
另一种方法是记录出现次数,而非单单的01:
在这里插入图片描述
之后你就开始训练模型。并且开始想方法提高模型性能,以下是一些方法:

  1. 获得更多数据
  2. 发展基于邮件地址的复杂的特征
  3. 发展更加复杂的读文件文本的功能
  4. 检测语法错误

选择正确的方法可以加速你的工作进度。例如,如果你的模型具有高偏差,那么方法一就不太合适,但如果具有高方差,那么就比较合适了。在开发算法时,可以发展很多不同的想法并应用,并不一定要拘束于特定的一些方面。

误差分析

在诊断并选择下一步如何修改模型这一方面,我认为最重要的是偏差方差分析,而第二重要的就是误差分析。让我们看看具体是什么:
假设你有500个交叉验证的示例,并且你的算法错误地分类了其中的100个。误差分析的意思仅仅就是手动地查看这些事例每个具体错在了什么地方,从而能够了解算法错在了什么地方。具体来说,一种经常的做法是从错误的示例中找出一组,并将其分组为共性的主题或者特征。
例如,你发现很多分错的例子是药品销售,那么你就可以手动地查找,并且发现有21篇是药品销售。或者你怀疑是因为有些邮件有故意拼错的单词导致无法识别,那么也可以计算下有多少篇是有拼写错误的,假设找到了三个,按照这个思路下来,你可能还会找到邮件地址异常的7篇,18篇试图窃取密码,还有那么5篇是通过发送图片来发送垃圾邮件的。
在这里插入图片描述
然后你就会得出结论,影响你算法准确度的主要是以下几类邮件:卖药的邮件,窃取密码的邮件。那么你就当然优先解决以上的这些问题。
另外要说明的是,以上的这些类别并非一定是相互独立的,其实很多是相互重叠的,即一个例子可以有以上的多个特征。
如果例子很多的话,你可能没法一次性查看所有的例子,可以采取随机抽查的方法。

下一步怎么做

接下来,你就可以针对某种类型的问题来专门修正的你的模型。例如你发现你的模型难以识别医药类广告,那么你就可以多给它喂医药类邮件的数据,让它对其更加敏感。或者你可以在你的词库中增加医药类的相关名词,等等。反正就是对症下药。因此诊断时除了观察偏差方差,记得还可以进行误差分析。
在这里插入图片描述
为了给读者你造成不必要的麻烦,博主的所有视频都没开仅粉丝可见,如果想要阅读我的其他博客,可以点个小小的关注哦。

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

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

相关文章

[数据集][目标检测]光伏板太阳能版缺陷检测数据集VOC+YOLO格式2400张3类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2400 标注数量(xml文件个数):2400 标注数量(txt文件个数):2400 标注…

深入揭秘Lucene:全面解析其原理与应用场景(一)

本系列文章简介: 本系列文章将深入揭秘Lucene,全面解析其原理与应用场景。我们将从Lucene的基本概念和核心组件开始,逐步介绍Lucene的索引原理、搜索算法以及性能优化策略。通过阅读本文,读者将会对Lucene的工作原理有更深入的了解…

损失函数代价函数风险函数目标函数

损失函数(Loss Function)和代价函数(Cost Function)是同一个东西;例如:有一组样本数据,用f1(x),f2(x),f3(x)三个函数(模型)分别来拟合,三个函数的输出F(x)与真实值可能相同也可能不同,为了表示拟…

Docker部署SimpleMindMap结合内网穿透实现公网访问本地思维导图

文章目录 1. Docker一键部署思维导图2. 本地访问测试3. Linux安装Cpolar4. 配置公网地址5. 远程访问思维导图6. 固定Cpolar公网地址7. 固定地址访问 SimpleMindMap 是一个可私有部署的web思维导图工具。它提供了丰富的功能和特性,包含插件化架构、多种结构类型&…

Linux系统架构----nginx的服务基础

一.Nginx的概述 Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx稳定性高,而且系统资源消耗少Nginx相对于Apache主要处理静态请求,而apache主要处理动态请求Nginx是一款轻量级的Web 服务器/反向代理服务…

uniapp使用华为云OBS进行上传

前言:无论是使用华为云还是阿里云,使用其产品的时候必须阅读文档 1、以华为云为例,刚接触此功能肯定是无从下手的情况,那么我们需要思考,我们使用该产品所用到的文档是什么 2、我们要使用obs 文件上传,肯…

JavaWeb基础入门——(二)MySQL数据库基础(5-存储过程)

八、存储过程 8.1 存储过程介绍 8.1.1 SQL指令执行过程 从SQL执行执行的流程中我们分析存在的问题: 如果我们需要重复多次执行相同的SQL,SQL指令都需要通过连接传递到MySQL,并且需要经过编译和执行的步骤; 如果我们需要连续执行…

redis学习笔记(二)

一:redis数据的持久化 1.1:RDB方式 1.2:AOF方式 1.3:两种方式对比 二:redis主从架构 2.1:搭建主从架构 1:三台机器上安装三个redis,其中一个作为主节点,剩下两个作为从…

Kosmos-2: 在多模态大语言模型中引入基准和指代能力

Kosmos-2: 在多模态大语言模型中引入基准和指代能力 FesianXu 20240304 at Baidu Search Team 前言 之前笔者在博文中介绍过kosmos-1模型 [1],该模型脱胎于MetaLM采用『因果语言模型作为通用任务接口』的思想,采用了多种形式的多模态数据进行训练得到。…

FPGA FIFO 读取模式

FPGA FIFO 读取模式分两种: Normal Mode: In normal mode, the “rdreq” signal serves as the read request or read enable. When this signal goes high, the data output provides the first data from the FIFO.Essentially, in normal mode, data is availa…

C++异常处理机制【自定义异常体系 || 异常规范 || 异常安全】

目录 一,传统C语言处理异常 二,C异常概念 三,使用 1. 自定义异常体系 2. 在函数调用链中异常栈展开匹配原则 3. 异常的重新抛出 四,异常规范 五,异常安全 六,C标准库的异常体系 七,异…

人工智能|机器学习——Canopy聚类算法(基于密度)

1.简介 Canopy聚类算法是一个将对象分组到类的简单、快速、精确地方法。每个对象用多维特征空间里的一个点来表示。这个算法使用一个快速近似距离度量和两个距离阈值T1 > T2 处理。 Canopy聚类很少单独使用, 一般是作为k-means前不知道要指定k为何值的时候&#…

算法学习06:数组模拟:单/双链表,栈和队列,单调栈/队列

算法学习06:数组模拟:单/双链表,栈和队列,单调栈/队列 文章目录 算法学习06:数组模拟:单/双链表,栈和队列,单调栈/队列前言一、链表1.单链表2.双链表 二、栈和队列1.普通栈、队列2.单…

docker安装ES、LogStash、Kibana

文章目录 一、安装Elasticsearch1. 安装Elasticsearch2. 安装IK分词器3. elasticsearch-head 监控的插件4. 配置跨域 二、安装LogStash三、安装kibana四、SpringBoot集成LogStash,将日志输出到ES中五、 启动项目,监控项目运行 提示:以下是本篇…

docker创建mysql,以及mysql无法连接问题

1、docker开放3306端口 Docker开放3306端口实现步骤 本文将介绍如何使用Docker开放3306端口,以便其他容器或外部应用程序可以通过该端口访问MySQL数据库。以下是实现步骤的简要说明: 步骤 描述 第一步 创建一个MySQL容器 第二步 打开3306端口…

Part-DB 安装及使用

Part-DB 安装及使用: http://coffeelatte.vip.cpolar.top/post/software/applications/part-db/part-db_安装及使用/ Part-DB 是比较实用的元器件进销存 Web 系统,支持使用电脑摄像头扫码(条码和二维码)。 1. 安装 大部分按照 官方安装指导…

C++:模版进阶 | Priority_queue的模拟实现

创作不易,感谢三连支持 一、非类型模版参数 模板参数分类为类型形参与非类型形参。 类型形参即:出现在模板参数列表中,跟在class或者typename之类的参数类型名称。 非类型形参,就是用一个常量作为类(函数)模板的一个参数&…

JavaScript高级Ⅱ(全面版)

接上文 JavaScript高级Ⅰ JavaScript高级Ⅰ(自认为很全面版)-CSDN博客 目录 第2章 DOM编程 2.1 DOM编程概述 2.1.4 案例演示(商品全选) 2.1.5 dom操作内容 代码演示: 运行效果: 2.1.6 dom操作属性 代码演示: 运行效果: 2…

CEF JS与c++能够交互的原理 以及 JS 调用C++的流程分析

相关章节:CEF 之 Render进程 与 Browser进程通信 目录 一、JS与c++能够交互的原理 二、JS调用C++ 流程梳理

大模型时代下的自动驾驶研发测试工具链-SimCycle

前言: 最近OpenAI公司的新产品Sora的发布,正式掀起了AI在视频创作相关行业的革新浪潮,AI不再仅限于文本、语音和图像,而直接可以完成视频的生成,这是AI发展历程中的又一座重要的里程碑。AI正在不断席卷着过去与我们息…