吴恩达《机器学习》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 一、基于 已知…

QFont如何设置斜体|QlineEdit设置只能输入数字|QThread::finished信号发出后worker未调用析构函数

QFont如何设置斜体 要设置 QFont 的斜体,你可以使用 setItalic() 方法。以下是一个示例代码: #include <QApplication> #include <QLabel> #include <QFont> int main(int argc, char *argv

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

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

NET 8.0 中新的变化

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

mysql union 和 union all区别?

在MySQL中&#xff0c;UNION和UNION ALL都是用于合并两个或多个SELECT语句的结果集。它们之间的主要区别在于如何处理重复记录。 UNION:UNION在合并结果集时会删除重复的记录。这意味着如果两个SELECT语句的输出结果中有相同的记录&#xff0c;那么UNION只会保留其中一个。在执…

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

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

Oracle数据库语句大全

一&#xff0e;入门部分 创建表空间 create tablespace schooltbs datafile ‘D:\oracle\datasource\schooltbs.dbf’ size 10M autoextend on;删除表空间 drop tablespace schooltbs[including contents and datafiles];查询表空间基本信息 select *||tablespace_name from D…

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

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

linux网络编程之UDP编程

linux网络编程之UDP编程 UDP编程模型服务端客户端 tcp与udp的区别 UDP编程模型 服务端 1.创建socket 2.构建服务器协议地址簇 3.绑定 4. 通信 sendto&#xff08;多了两个参数&#xff09; send connect #include <stdio.h> #include <sys/types.h> /*…

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

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

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

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

护士排班问题:Nurse Rostering Problem(NRP)实战并可视化页面

文章目录 护士排班NRP问题问题示例模型求解排班表可视化护士排班NRP问题 基于计算机的自动化排班有助于提高排班的效率和质量,从而使得人力资源得到有效的利用。护士排班问题并不专指对于医院护士的排班,实际上泛指这种限制条件较多的排班问题。护士排班NRP问题是一个典型的…

工厂方法模式 (Factory Method Pattern)

定义&#xff1a; 工厂方法模式&#xff08;Factory Method Pattern&#xff09;是一种创建型设计模式&#xff0c;用于解决对象创建的问题。它定义了一个创建对象的接口&#xff0c;但让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。 工厂方法模式的关键…

为什么要升级水经微图到64位?

前段时间&#xff0c;水经微图升级到了64位版。 这里为大家说明一下我们为什么要升级水经微图到64位。 顺便再分享一下我们在PC端产品上的一些调整。 为什么要升级到64位&#xff1f; 水经微图一直以来有一个巨大的问题&#xff0c;那就是矢量加载与绘制功能相当弱。 但凡…

SecureCRT出现Key exchange failed.No compatible key exchange method. 错误解决方法

SecureCRT出现Key exchange failed.No compatible key exchange method. 如下 Key exchange failed. No compatible key exchange method. The server supports these methods: curve25519-sha256,curve25519-sha256libssh.org,diffie-hellman-group-exchange-sha256解决方法&…