吴恩达《机器学习》10-1-10-3:决定下一步做什么、评估一个假设、模型选择和交叉验证集
一、决定下一步做什么
在机器学习的学习过程中,我们已经接触了许多不同的学习算法,逐渐深入了解了先进的机器学习技术。然而,即使在了解了这些算法的情况下,仍然存在一些差距,有些人能够高效而有力地运用这些算法,而其他人可能对接下来的步骤感到陌生,不清楚如何正确运用这些知识。
在本节课程中,我们将讨论一个关键问题:在机器学习项目中,当我们面临改进算法性能的任务时,我们应该如何决定接下来的工作方向呢?为了解答这一问题,我们将以预测房价的学习例子为例,假设我们已经完成了正则化线性回归,即最小化代价函数 J 的值。
需要改进的情况
假设我们在使用训练好的模型预测新的房屋样本时发现了巨大的误差,接下来应该怎么办呢?以下是一些可能的改进方法:
1. 获取更多的训练实例
通过电话调查或上门调查等方式获取更多的不同房屋出售数据。然而,获得更多的训练数据可能代价较大,而且并不总是有效。
2. 减少特征的数量
精心挑选一小部分特征,避免过拟合。有时候,减少特征数量可以提高算法的泛化能力。
3. 获得更多的特征
有时候增加特征可以改善算法性能,但同样需要谨慎选择。
4. 增加多项式特征
引入特征的高次方,如 x^2、x^3,有时可以更好地拟合数据。
5. 调整正则化程度 𝜆
通过增加或减少正则化参数 𝜆,调整模型的复杂度,以防止过拟合或欠拟合。

避免盲目尝试
在选择这些方法时,我们不应该盲目地随机尝试,而是运用一些机器学习诊断法来帮助判断哪些方法对我们的算法是有效的。这些诊断法是一种测试方法,通过执行这些测试,我们能够深入了解算法的表现,并找到有针对性的改进方法。
在接下来的视频中,我们将学习如何评估机器学习算法的性能,并介绍一些机器学习诊断法,这些方法有助于更深入地了解算法的表现,指导我们选择下一步的改进方法。虽然实施这些诊断法可能需要一些时间,但它们能够帮助我们更有效地改进机器学习系统,节省开发时间。

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

评估过拟合
为了评估算法是否过拟合,我们采用以下方法:
-
分割数据集: 我们将数据分为训练集和测试集,通常采用 70% 的数据作为训练集,剩下的 30% 作为测试集。重要的是,两者都应包含各种类型的数据,并在划分前对数据进行洗牌。
-
测试集评估:
- 对于线性回归模型,我们使用测试集数据计算代价函数 J。
- 对于逻辑回归模型,我们利用测试数据集计算代价函数,并计算误分类率。对于每一个测试集实例,计算
(h(x) - y)^2,然后对计算结果求平均。

这样,我们就能够在新的数据集上验证我们的模型表现,并得到更准确的评估。这种方法能够帮助我们判断模型是否过拟合,提高算法的泛化能力。
三、模型选择和交叉验证集
模型选择步骤
我们将数据划分为训练集、交叉验证集和测试集,其中分配的百分比通常为 60% 的数据作为训练集,20% 的数据作为交叉验证集,剩下的 20% 作为测试集。

模型选择的步骤如下:
- 使用训练集训练出多个模型,每个模型对应不同次数的二项式模型。
- 对每个模型使用交叉验证集计算交叉验证误差(代价函数的值)。
- 选择具有最小交叉验证误差的模型作为最终模型。
- 使用步骤 3 中选出的模型对测试集计算得出推广误差(代价函数的值)。
这个过程确保我们选择的模型在未见过的数据上表现良好,避免了仅仅根据训练误差来选择模型可能导致的过拟合问题。

误差计算方法
在以上过程中,我们使用了不同数据集上的不同误差计算方法:
- 训练误差: 使用训练集数据计算代价函数 J。
- 交叉验证误差: 对于每一个模型,使用交叉验证集数据计算代价函数。
- 测试误差: 对于最终选出的模型,使用测试集数据计算代价函数。

这样的综合考虑可以更全面地评估模型的性能,确保所选择的模型对于未知数据的泛化能力较强。
参考资料:
[中英字幕]吴恩达机器学习系列课程
黄海广博士 - 吴恩达机器学习个人笔记
相关文章:
吴恩达《机器学习》10-1-10-3:决定下一步做什么、评估一个假设、模型选择和交叉验证集
一、决定下一步做什么 在机器学习的学习过程中,我们已经接触了许多不同的学习算法,逐渐深入了解了先进的机器学习技术。然而,即使在了解了这些算法的情况下,仍然存在一些差距,有些人能够高效而有力地运用这些算法&…...
大数据-之LibrA数据库系统告警处理(ALM-37000 MPPDBServer数据目录或Redo目录缺失)
告警解释 当出现如下情况时,产生该告警: 数据实例数据目录被删除。数据实例Redo目录(pg_xlog)被删除。 告警属性 告警ID 告警级别 可自动清除 37000 严重 是 告警参数 参数名称 参数含义 ServiceName 产生告警的服务…...
华为eNSP使用教程(Enterprise Network Simulation Platform,企业网络仿真平台)
文章目录 华为eNSP使用教程详解引言eNSP界面快速入门启动与初始设置主界面组成创建和管理项目 构建网络拓扑添加和连接设备配置设备参数示例:配置设备接口IP 保存配置 仿真网络功能启动与测试示例:测试网络连通性 使用调试工具 疑难技术点解析路由协议配…...
19.Spring如何处理线程并发问题?
Spring如何处理线程并发问题? 在一般情况下,只有无状态的Bean才可以在多线程环境下共享,在Spring中,绝大部分Bean都可以声明为singleton作用域,因为Spring对一些Bean中非线程安全状态采用ThreadLocal进行处理,解决线程安全问题。 ThreadLocal和线程同步机制都是为了解决多…...
Python办公神器:教你如何快速分拆、删页、合并PDF文件
哈喽大家好,我是了不起,今天教你如何用Python快速分拆、删页、合并PDF文件 介绍 有时我们可能需要对PDF文件进行一些处理,例如分拆、删页、合并等。这些操作在一些专业的PDF软件中可能比较容易实现,但是如果我们想要用Python来自…...
Android aidl的简单使用
一.服务端 1.创建aidl文件,然后记得build下生成java文件 package com.example.aidlservice31;// Declare any non-default types here with import statementsinterface IMyAidlServer {// 接收一个字符串参数void setData(String value);// 返回一个字符串String …...
双十一备战与复盘
如何组织备战 重要节点 从大促启动会开始后我就开始计划我们本次备战的整体节奏。 挑战在哪 以上内容介绍了CDP平台有多么重要,那么画像系统备战的核心挑战在“如何保障在大流量高并发情况下系统稳定提供高性能服务”,主要表现在:稳定性、…...
ONNX实践系列-修改yolov5-seg的proto分支输出shape
一、目标 本文主要介绍要将原始yolov5分割的输出掩膜从[b,c,h,.w]修改为[b, h, w, c] 原来的: 目标的: 代码如下: Descripttion: version: @Company: WT-XM Author: yang jinyi Date: 2023-09-08 11:26:28 LastEditors: yang jinyi LastEditTime: 2023-09-08 11:48:01 …...
VMware与Linux安装
VM与Linux安装 1、安装VMware 这里安装Vm主要是为了安装Linux系统,除了相对云服务器,比较大众化的操作,当然更多的是熟悉Linux操作 1、Windows安装 (1) 下载链接,目前版本上下载VM15的版本即可https://www.vmware.com/p…...
服务器连接github
https://zhuanlan.zhihu.com/p/543490354 比着这个一步步做就行。 https://blog.l0v0.com/posts/94ffdbdf.html 上传文件可以看这个 注意: 密钥ssh-keygen设置好之后,以后就不用每次输入账号密码才能访问了。 otherwise,每次要输入账号密码。…...
自动驾驶中的LFM(LED 闪烁缓解)问题
自动驾驶中的LFM Reference: 自动驾驶系统如何跨越LFM这道坎? 从路灯、交通灯,到车载照明,低功耗、长寿命、高可靠的 LED 正在快速取代传统照明方式。但 LED 在道路上的普遍使用,却带来“LED闪烁”现象。“LED闪烁”是由 LED 驱…...
ArkTS-页面和自定义组件生命周期
页面生命周期:被Entry装饰的组件生命周期 onPageShow:页面每次显示时触发一次,包括路由过程、应用进入前台等场景onPageHide:页面每次隐藏时触发一次,包括路由过程、应用进入前后台等场景onBackPress:当用户…...
ELK: logstash gork filter 多个模式(pattern)匹配规则语法和多行日志匹配设置
项目里用logstash分析日志,由于有多种模式(pattern)需要匹配,网上搜了很多示例,发现这些都是老的写法,都会报错,后来查阅了官方文档,才发现,新版本只支持新语法。 错误的…...
Ubuntu20.04上编译安装TVM
本文主要讲述如何在ubuntu20.04平台上编译TVM代码并在python中import tvm成功。 源代码下载: git clone --recursive https://github.com/apache/tvm tvm 平台环境升级: 1) sudo apt-get update 2) sudo apt-get install -y pyth…...
伦敦金现图形态分析(深度好文)
对价格行为交易者来说,伦敦金价走势图表中的一些特殊形态,能够带来比较靠谱的交易信号。然而交易并不只和形态有关,也和我们能够从图表形态中阅读到什么,以及如何理解其他交易者对价格波动的推动有关。 在对伦敦金走势图的技术形态…...
慕尼黑电子展采访全程 | Samtec管理层对话电子发烧友:虎家卓越服务
【摘要/前言】 今年的慕尼黑上海电子展上,Samtec大放异彩,特装展台一亮相就获得了大家的广泛关注,展台观众络绎不绝。 作为深耕连接器行业数十年的知名厂商以及Electronica的常客,Samtec毫无疑问地获得了大量媒体朋友的关注和报…...
APP外包项目维护方案
APP项目维护是确保应用程序持续运行、安全性和性能不断优化的关键活动。以下是一个综合的APP项目维护方案,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.定期性能监控和优化: 使用性能…...
leetcode面试经典150题——32 串联所有单词的子串(中等+困难)
题目: 串联所有单词的子串(1中等) 描述: 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符串(包括相同的字符串&…...
oracle关联更新
业务场景中需要对特定数据进行关联更新,记录一下关联更新语法: MERGE INTO fine_record_execute targ USING (SELECT "id","tname"FROM fine_record_executeWHERE "username" LIKE %目标人物%AND "time">20…...
SWT技巧
实现控件的刷新 问题可以简化如下,点击上方按钮,使下方按钮移动,但要求在监听事件里新建按钮对象,而不是使用原来的按钮(原来的按钮被移除了)。 解决代码如下: public class TestUI {protecte…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
算法—栈系列
一:删除字符串中的所有相邻重复项 class Solution { public:string removeDuplicates(string s) {stack<char> st;for(int i 0; i < s.size(); i){char target s[i];if(!st.empty() && target st.top())st.pop();elsest.push(s[i]);}string ret…...
【PX4飞控】mavros gps相关话题分析,经纬度海拔获取方法,卫星数锁定状态获取方法
使用 ROS1-Noetic 和 mavros v1.20.1, 携带经纬度海拔的话题主要有三个: /mavros/global_position/raw/fix/mavros/gpsstatus/gps1/raw/mavros/global_position/global 查看 mavros 源码,来分析他们的发布过程。发现前两个话题都对应了同一…...
深度解析云存储:概念、架构与应用实践
在数据爆炸式增长的时代,传统本地存储因容量限制、管理复杂等问题,已难以满足企业和个人的需求。云存储凭借灵活扩展、便捷访问等特性,成为数据存储领域的主流解决方案。从个人照片备份到企业核心数据管理,云存储正重塑数据存储与…...
ZYNQ学习记录FPGA(二)Verilog语言
一、Verilog简介 1.1 HDL(Hardware Description language) 在解释HDL之前,先来了解一下数字系统设计的流程:逻辑设计 -> 电路实现 -> 系统验证。 逻辑设计又称前端,在这个过程中就需要用到HDL,正文…...
第22节 Node.js JXcore 打包
Node.js是一个开放源代码、跨平台的、用于服务器端和网络应用的运行环境。 JXcore是一个支持多线程的 Node.js 发行版本,基本不需要对你现有的代码做任何改动就可以直接线程安全地以多线程运行。 本文主要介绍JXcore的打包功能。 JXcore 安装 下载JXcore安装包&a…...
