吴恩达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.mfbz.cn/a/432314.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

惯性导航 | 测量方程中的噪声模型与离散时间噪声模型

惯性导航 | 测量方程中的噪声模型与离散时间噪声模型 IMU测量方程中的噪声模型IMU的离散时间噪声模型 IMU测量方程中的噪声模型 在大多数系统中,IMU的噪声由两部分组成:测量噪声(Measurement Nosie)与零偏(Bias&#…

【Numpy】给数组增加一个维度

【Numpy】给数组增加一个维度 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 希望得到您的订阅和支持~ 💡 创…

【Mining Data】收集数据(使用 Python 挖掘 Twitter 数据)

@[TOC](【Mining Data】收集数据(使用 Python 挖掘 Twitter 数据)) 具体步骤 第一步是注册您的应用程序。特别是,您需要将浏览器指向 http://apps.twitter.com,登录 Twitter(如果您尚未登录)并注册新应用程序。您现在可以为您的应用程序选择名称和描述(例如“Mining Demo”…

第九篇:– 过程发现(Process Discovery)是如何赋能数字化市场营销全过程?- 我为什么要翻译介绍美国人工智能科技巨头IAB公司

IAB平台,使命和功能 IAB成立于1996年,总部位于纽约市。 作为美国的人工智能科技巨头社会媒体和营销专业平台公司,互动广告局(IAB- the Interactive Advertising Bureau)自1996年成立以来,先后为700多家媒体…

MySql、Navicat 软件安装 + Navicat简单操作(建数据库,表)

一、MySql、Navicat 软件安装 及正常使用 MySql下载+安装: 检查安装情况: 配置环境变量: 搞定了!!! 可以登陆试哈哈哈 连接navicat 开始创建数据库 二、 商品种类表 - commoditytype int …

【排序算法】深入理解归并排序算法:从原理到实现

目录 1. 引言 2. 归并排序算法原理 3. 归并排序的时间复杂度分析 4. 归并排序的应用场景 5. 归并排序的优缺点分析 5.1 优点: 5.2 缺点: 6. Java、JavaScript 和 Python 实现归并排序算法 6.1 Java 实现: 6.2 JavaScript 实现&…

Mybatis-Plus——04,自动填充时间(新注解)

自动填充(新注解) 一、数据库添加两个字段二、实体类字段属性上增加注解三、编写填充器四、查看结果4.1 插入结果4.2 修改结果 五、同步修改5.1实体类属性改成 INSERT_UPDATE5.2 在填充器的方法这里加上 updateTime5.3 查看结果————————创作不易…

三色标记过程

可达性分析 GC过程中需要对对象图遍历做可达性分析。使用了三色标记法进行分析。 什么三色? 白色:尚未访问过。 黑色:本对象已访问过,而且本对象 引用到 的其他对象 也全部访问过了。 灰色:本对象已访问过&#xff0…

【HarmonyOS】Dev Eco Studio4.0开发工具下载SDK10

目录 点击创建项目 选择空项目(OpenHarmony),点击Next 此时SDK为10 点击 configure OpenHarmony SDK 创建一个新目录文件存放SDK,不要跟之前的SDK文件目录重合,点击Next 点击Next 勾选Accept,点…

板级PDN(电源分配网络)设计要点综述

目录 目标阻抗去耦方法 确定目标阻抗 确定目标频点 VRM 去耦电容 安装电感 平面电容 总结 去耦电容 PCB叠层设计 扩展阅读 目标阻抗去耦方法 确定PCB去耦方案的策略是使用频域目标阻抗法,通过层间电容和分立电容器组合的使用,保证电源轨阻抗在…

20240305-2-海量数据处理常用技术概述

海量数据处理常用技术概述 如今互联网产生的数据量已经达到PB级别,如何在数据量不断增大的情况下,依然保证快速的检索或者更新数据,是我们面临的问题。 所谓海量数据处理,是指基于海量数据的存储、处理和操作等。因为数据量太大无…

重量的定义、质量和重量之间的区别

一、简述 物体的重量取决于该物体所在空间点的引力场。重量是一种力,因此它是一个矢量,这意味着它有方向和大小。通过自由体图来表示物体重量产生的力通常很方便。 重量总是从物体的质心向下作用到地球中心。(如果你在不同的天体上&#xff0…

html实体字符,看完这篇彻底明白了

二.技术基础知识 基础知识一直都是重点考察的内容,包含有HTML(5)、CSS(3)、JavaScript到 戳这里领取完整开源项目:【一线大厂前端面试题解析核心总结学习笔记Web真实项目实战最新讲解视频】 Vue&#xff0…

C++对象模型剖析(六)一一Data语义学(三)

Data 语义学(三) “继承” 与 Data member 上期的这个继承的模块我们还剩下一个虚拟继承(virtual inheritance)没有讲,现在我们就来看看吧。 虚拟继承(Virtual Inheritance) 虚拟继承本质就是…

Linux操作系统项目上传Github代码仓库指南

文章目录 1 创建SSH key2.本地git的用户名和邮箱设置3.测试连接4.创建仓库5.终端项目上传 1 创建SSH key 1.登录github官网,点击个人头像,点击Settings,然后点击SSH and GPG keys,再点击New SSH key。 Title 可以随便取,但是 key 需要通过终端生成。 Linux终端执行…

Leetcode3066. 超过阈值的最少操作数 II

Every day a Leetcode 题目来源:3066. 超过阈值的最少操作数 II 解法1:模拟 两个 int 类型的数 x 和 y 做操作:min(x, y) * 2 max(x, y),得到的结果会超出 int 范围。 代码: /** lc appleetcode.cn id3066 langc…

【亲民实操课】聊聊那些在AI界立下汗马功劳的Python库,你值得拥有

嗨啰各位朋友👏,今天咱们来说说在人工智能这门深邃而又充满挑战的技术领域里,究竟有哪些Python库如同超级英雄一样,帮咱们解决实际问题,简化工作流程,从数据预处理一路狂奔到模型训练和应用落地。这次&…

Jmeter连接不同类型数据库语法

Jmeter连接不同类型数据库语法 添加:配置原件->JDBC Connection Configuration variable name for created pool:自定义一个线程池变量名database Connection Configuration database URL: 填写数据库ip、端口、dbname等,但是不同数据库…

微信小程序开发系列(十一)·小程序页面的跳转设置以及参数传递

目录 1. 跳转到商品列表 1.1 url: 当前小程序内的跳转链接 1.2 navigate:保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面 1.3 redirect: 关闭当前页面,跳转到应用内的某个页面。但不能跳转到 tabbar 页面…

在XCode中使用SwiftGen管理你的图片、配色、多语言文件等

SwiftGen是一个工具,可以为您的项目资源(如图像、本地化字符串等)自动生成Swift代码,然后你就可以像使用一个Class类一样访问你的资源了。 而且添加或更新资源后,SwiftGen也会自动更新用于访问资源的Class类。对于管理…