吴恩达《机器学习》10-1-10-3:决定下一步做什么、评估一个假设、模型选择和交叉验证集

一、决定下一步做什么

在机器学习的学习过程中,我们已经接触了许多不同的学习算法,逐渐深入了解了先进的机器学习技术。然而,即使在了解了这些算法的情况下,仍然存在一些差距,有些人能够高效而有力地运用这些算法,而其他人可能对接下来的步骤感到陌生,不清楚如何正确运用这些知识。

在本节课程中,我们将讨论一个关键问题:在机器学习项目中,当我们面临改进算法性能的任务时,我们应该如何决定接下来的工作方向呢?为了解答这一问题,我们将以预测房价的学习例子为例,假设我们已经完成了正则化线性回归,即最小化代价函数 J 的值。

需要改进的情况

假设我们在使用训练好的模型预测新的房屋样本时发现了巨大的误差,接下来应该怎么办呢?以下是一些可能的改进方法:

1. 获取更多的训练实例

通过电话调查或上门调查等方式获取更多的不同房屋出售数据。然而,获得更多的训练数据可能代价较大,而且并不总是有效。

2. 减少特征的数量

精心挑选一小部分特征,避免过拟合。有时候,减少特征数量可以提高算法的泛化能力。

3. 获得更多的特征

有时候增加特征可以改善算法性能,但同样需要谨慎选择。

4. 增加多项式特征

引入特征的高次方,如 x^2、x^3,有时可以更好地拟合数据。

5. 调整正则化程度 𝜆

通过增加或减少正则化参数 𝜆,调整模型的复杂度,以防止过拟合或欠拟合。

避免盲目尝试

在选择这些方法时,我们不应该盲目地随机尝试,而是运用一些机器学习诊断法来帮助判断哪些方法对我们的算法是有效的。这些诊断法是一种测试方法,通过执行这些测试,我们能够深入了解算法的表现,并找到有针对性的改进方法。

在接下来的视频中,我们将学习如何评估机器学习算法的性能,并介绍一些机器学习诊断法,这些方法有助于更深入地了解算法的表现,指导我们选择下一步的改进方法。虽然实施这些诊断法可能需要一些时间,但它们能够帮助我们更有效地改进机器学习系统,节省开发时间。

二、评估一个假设

参数选择的困境

当我们选择学习算法的参数时,通常我们会优化这些参数以使训练误差最小化。然而,仅仅因为一个假设函数具有很小的训练误差,并不能说明它就是一个好的假设函数。我们已经学到了过拟合的例子,即使在训练集上表现很好的假设函数,在新的数据集上可能表现很差。

评估过拟合

为了评估算法是否过拟合,我们采用以下方法:

  1. 分割数据集: 我们将数据分为训练集和测试集,通常采用 70% 的数据作为训练集,剩下的 30% 作为测试集。重要的是,两者都应包含各种类型的数据,并在划分前对数据进行洗牌。

  2. 测试集评估:

    • 对于线性回归模型,我们使用测试集数据计算代价函数 J。
    • 对于逻辑回归模型,我们利用测试数据集计算代价函数,并计算误分类率。对于每一个测试集实例,计算 (h(x) - y)^2,然后对计算结果求平均。

这样,我们就能够在新的数据集上验证我们的模型表现,并得到更准确的评估。这种方法能够帮助我们判断模型是否过拟合,提高算法的泛化能力。

三、模型选择和交叉验证集

模型选择步骤

我们将数据划分为训练集、交叉验证集和测试集,其中分配的百分比通常为 60% 的数据作为训练集,20% 的数据作为交叉验证集,剩下的 20% 作为测试集。

模型选择的步骤如下:

  1. 使用训练集训练出多个模型,每个模型对应不同次数的二项式模型。
  2. 对每个模型使用交叉验证集计算交叉验证误差(代价函数的值)。
  3. 选择具有最小交叉验证误差的模型作为最终模型。
  4. 使用步骤 3 中选出的模型对测试集计算得出推广误差(代价函数的值)。

这个过程确保我们选择的模型在未见过的数据上表现良好,避免了仅仅根据训练误差来选择模型可能导致的过拟合问题。

误差计算方法

在以上过程中,我们使用了不同数据集上的不同误差计算方法:

  • 训练误差: 使用训练集数据计算代价函数 J。
  • 交叉验证误差: 对于每一个模型,使用交叉验证集数据计算代价函数。
  • 测试误差: 对于最终选出的模型,使用测试集数据计算代价函数。

这样的综合考虑可以更全面地评估模型的性能,确保所选择的模型对于未知数据的泛化能力较强。

参考资料

[中英字幕]吴恩达机器学习系列课程

黄海广博士 - 吴恩达机器学习个人笔记

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

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

相关文章

RevCol实战:使用RevCol实现图像分类任务(一)

文章目录 摘要安装包安装timm 数据增强Cutout和MixupEMA项目结构计算mean和std生成数据集 摘要 可逆柱状结构(RevCol)是一种网络结构,它受到GLOM(Global Columnar Memory)的启发。RevCol由N个子网络(或称为…

[SWPUCTF 2021 新生赛]no_wakeup

直接赋值即可 $a ->admin admin; $a ->passwd wllm; 发现没有绕过,改成大于2的绕过__wakeup 这是因为PHP在反序列化时会检查序列化字符串的长度,如果长度小于等于2,则不会调用__wakeup()方法。

Windows环境搭建

Windows环境搭建 一. jdk1.8安装1. 资源链接2. 安装3. 配置环境变量 一. jdk1.8安装 1. 资源链接 资源链接 提取码:tfms 2. 安装 1.双击下载好的JDK,点击下一步。 2.修改默认目录(可不修改),点击下一步, 3. 点击下…

EEG 脑电信号处理合集(2): 信号预处理

脑电信号在采集完以后,需要进行一系列的预处理操作,然后才能用于后续的科学研究和计算。预处理是脑电信号分析最基本且重要的一步。基于python环境MNE库。 1 使用带通滤波器,信号滤波,去噪,去工频干扰 data_path sam…

【SpringBoot篇】阿里云OSS—存储文件的利器

文章目录 🌹什么是阿里云OSS⭐阿里云OSS的优点 🏳️‍🌈为什么要使用云服务OSS🎄使用步骤⭐OSS开通⭐参考官方SDK 🍔编写代码⭐上传文件 🌹综合案例 🌹什么是阿里云OSS 阿里云对象存储&#xf…

Diffusion Model: DDPM

本文相关内容只记录看论文过程中一些难点问题,内容间逻辑性不强,甚至有点混乱,因此只作为本人“备忘”,不建议其他人阅读。 Denoising Diffusion Probabilistic Models: https://arxiv.org/abs/2006.11239 DDPM 一、基于 已知…

可观测性建设实践之 - 日志分析的权衡取舍

指标、日志、链路是服务可观测性的三大支柱,在服务稳定性保障中,通常指标侧重于发现故障和问题,日志和链路分析侧重于定位和分析问题,其中日志实际上是串联这三大维度的一个良好桥梁。 但日志分析往往面临成本和效果之间的权衡问…

NET 8.0 中新的变化

1性能提升 .NET 8在整个堆栈中带来了数千项性能改进 。默认情况下会启用一种名为动态配置文件引导优化 (PGO) 的新代码生成器,它可以根据实际使用情况优化代码,并且可以将应用程序的性能提高高达 20%。现在支持的 AVX-512 指令集能够对 512 位数据向量执…

您的计算机已被.locked1勒索病毒感染?恢复您的数据的方法在这里!

尊敬的读者: 勒索病毒如.locked1已经成为网络安全的一大威胁。这类病毒通过加密用户文件,并勒索赎金以解密这些文件,给用户和组织带来了巨大的损害。本文将深入介绍.locked1勒索病毒的特点、恶意目的,以及如何恢复被其加密的数据…

PyQt6运行QTDesigner生成的ui文件程序

2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计18条视频,包括:2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~、第2讲 PyQt6库和工具库Q…

Selenium实战指南:安装、使用技巧和JavaScript注入案例解析

背景 ​ 最近一段时间我会重新开一个关于selenium的专题,由浅入深的给大家讲一下selenium,同时回顾一下之前学的内容,selenium可以实现模拟登录,动态数据获取,获取动态cookie等等,还有可以写一些抢p的脚本…

matlab使用plot画图坐标轴上的导数速度一点和加速度两点如何显示

一、背景 在使用matlab中的plot函数画图时,有时需要在坐标轴上显示一个点的导数项,如横坐标是时间,纵坐标是速度,也就是位置的导数 y ˙ \dot y y˙​,如下图所示,这在matlab如何操作呢? 二…

【计网 可靠数据传输RDT】 中科大笔记 (十 一)

目录 0 引言1 RDT的原理RDT的原理: 2 RDT的机制与作用2.1 重要协议停等协议(Stop-and-Wait):连续ARQ协议: 2.2 机制与作用实现机制:RDT的作用: 🙋‍♂️ 作者:海码007📜 专栏&#x…

Linux中tar命令的几个高级用法

在Linux世界中,Tar命令是一把解密归档世界的魔法工具。无论是打包、压缩还是解压,Tar命令都能胜任。本文将生动地介绍Tar命令的基本用法,并深入探讨五个常用选项,帮助读者在Linux系统中灵活运用这个强大的工具。 一、命令概述 Ta…

日本服务器访问速度和带宽有没有直接关系?

​  对于许多网站和应用程序来说,服务器的访问速度是至关重要的。用户希望能够快速加载页面、上传和下载文件,而这些都与服务器的带宽有关。那么,日本服务器的访问速度和带宽之间是否存在直接关系呢? 我们需要了解什么是带宽。带宽是指网络…

MySQL的体系结构与SQL的执行流程

文章目录 前言体系结构SQL语句的执行流程1、连接MySQL2、查询缓存3、解析SQL语句4、优化SQL语句5、执行SQL语句 总结 前言 如果你在使用MySQL时只会写sql语句的,那么你应该看一下《MySQL优化的底层逻辑》。如果你只了解到sql是如何优化的,那么你应该通过…

【数据结构】什么是栈?

🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 📌栈的定义 📌元素进栈出栈的顺序 📌栈的抽象数据类型 📌栈的顺序存储结构 📌栈的链式存储结构 链栈的进…

java集合,ArrayList、LinkedList和Vector,多线程场景下如何使用 ArrayList

文章目录 Java集合1.2 流程图关系1.3 底层实现1.4 集合与数组的区别1.4.1 元素类型1.4.2 元素个数 1.5 集合的好处1.6 List集合我们以ArrayList集合为例1.7 迭代器的常用方法1.8 ArrayList、LinkedList和Vector的区别1.8.1 说出ArrayList,Vector, LinkedList的存储性能和特性1.…

汽车电子 -- 根据DBC解析CAN报文

采集的CAN报文,怎么通过DBC解析呢?有一下几种方法。 首先需要确认是CAN2.0 还是CAN FD报文。 还有是 实时解析 和 采集数据 进行解析。 一、CAN2.0报文实时解析: 1、CANTest工具 使用CAN分析仪 CANalyst-II,采集CAN报文。 使用…

JSP EL 通过 三元运算符 控制界面 标签 标签属性内容

然后 我们来说说 EL配合三元运算符的妙用 我们先这样写 <% page contentType"text/html; charsetUTF-8" pageEncoding"UTF-8" %> <%request.setCharacterEncoding("UTF-8");%> <!DOCTYPE html> <html> <head>&l…