7.机器学习诊断法

news2024/11/24 4:21:02

怎样评估机器学习算法的性能?

利用机器学习诊断法来评估机器学习算法的性能。诊断法是一种测试法,通过这种测试能够了解算法在哪里出了问题,这也能够告诉我们要想改进一种算法的效果、什么样的尝试才是有意义的。

7.1 评估假设

评价算法学习得到的假设。

怎样判断一个假设是否过拟合呢?

假设我们有这样一组数据组(如图的十组数据),为了确保我们可以评价我们的假设函数,我们将数据分成两部分:第一部分作为训练集,第二部分作为测试集,经典的分割是7:3。但是如果数据集呈现某种规律,那么最好是随机选择训练集和测试集。

 

 以线性回归为例(展示训练和测试学习算法的过程)

  1. 首先需要对训练集进行学习得到参数\theta(就是最小化训练误差J(\theta)
  2. 计算出测试误差

 如果是分类问题里面的逻辑回归的步骤:

  1. 首先需要对训练集进行学习得到参数\theta
  2. 计算测试误差

 还可以使用错误分类的方法也叫做0/1分类错误。0和1表示了你预测的分类是正确或错误的情况。

0/1错误分类度量:

把用来测试的数据求出h theta,y,再把两者代入err(h,y)函数中,求出测试数据中的误差,求和后再除以mtest ,就是求测量数据的平均误差。

 7.2 模型选择问题

假设想要确定对于一个数据集最合适的多项式次数,怎样选用正确的特征来构造学习算法或者加入需要选择学习算法中的正则化参数lambda,该怎样做呢?——这类问题被叫做模型选择问题。

在这一小节,不是考虑把数据分为训练集和测试集,而是如何将数据分为三个数据组:训练集、验证集和测试集。

如果你的参数对某个数据集拟合的很好,比如说是训练集或者其他数据集,那么用同一数据集计算得到的误差比如训练误差并不能很好地估计出实际的泛化误差,即该假设对新样本的泛化能力。现在,我们来考虑模型选择问题。假设现在要选择能最后地拟合数据的多项式次数,考虑选择一次、二次、...、十次函数中的哪一个?这类似于在这个算法里加入一个参数。这里设置d=1 2 3 4表示一次函数、二次函数、三次函数、四次函数。

如果你想要选择一个模型,就是选择一次多项式次数,从这10个模型中选择一个,拟合这个模型并且估计这个拟合好的模型假设对新样本的泛化能力。那么可以这样做:首先先选择第一个模型,然后最小化训练误差,这样就会得到一个参数向量\theta^{(1)},然后再选择第二个模型(二次函数)用它来拟合训练集,就会得到另外一个参数向量\theta^{(2)},以此类推会得到十个向量参数。取每一个假设和它相应的参数,然后计算出它在测试集的性能。

 最后选择了五次函数,现在我们想知道这个模型的泛化能力怎么样。我们可以观察这个五次多项式假设模型对测试集的拟合情况,但问题是这样做任然不能公平地估计出这个假设的泛化能力其原因在于我们拟合了一个额外的参数d,也就是多项式的次数。我们用测试集拟合了参数d,我们选择了一个能够最好地拟合测试集的参数d的值。因此我们的参数向量\theta^{(1)}在测试集上的性能很可能是对泛化误差过于乐观的估计。因为使用测试集拟合得到的参数d,再在测试集上评估假设就不公平了。因为我用测试集拟合到的参数用测试集选择了多项式的次数,所以假设很可能对于测试集的表现好过于它没见过的样本,但后者才是我们真正关心的。

如果我们用训练集来拟合参数向量时,拟合后的模型在训练集上的效果是不能预测出假设对于新样本的泛化能力的。这是因为这些参数能够很好地拟合训练集,因此很有可能在训练集上表现地很好,但对其他的新样本来说就不一定那么好了。(也就是训练集和测试集其实还是来自一个数据集中 只不过人为划分出来了70%和30% 所以有可能对这一整个数据集都友好。用测试集来优化训练集的模型,那再用测试集去测试肯定是效果很好;所以我们应该另外取20%的数据作为交叉验证,再用测试集预测效果好不好

具体来说,我们是在对测试集进行拟合,通过拟合测试得到参数d,这意味着假设在测试集上的效果并不能用来公正的估计这个假设对从未见过的新样本的效果。为了解决模型选择出现的问题,我们通常会采用如下的方法来估计一个假设:

给定一个数据集,不把它分成训练集和测试集,而是分为三个部分:训练集、交叉验证集(cv)、测试集,这些数据典型额分配比例是6:2:2。

 当面对这样问题的模型选择,我们需要做的就是:用验证集或者说交叉验证集来选择模型而不是原来的测试集。具体来讲,首先要选取第一种假设,利用最小化函数求出一个参数向量\theta,以此类推。接下来用交叉验证集来测试,然后计算出J_{cv}来观察这些假设模型在交叉验证集上的效果如何,会选择交叉验证误差最小的那个假设作为我们的模型。

 7.3 诊断偏差与方差

 训练误差(训练集的平均误差平方和)和验证误差(交叉验证集的平均误差平方和)的定义:

如果交叉验证误差或者训练误差比较大,怎么样判断是高偏差问题还是高方差问题?

训练误差和验证误差都大:欠拟合

训练误差小,验证误差大大:过拟合!

 7.4 正则化、偏差和方差

如何自动地选择出一个最合适的正则化参数\lambda

 假设在使用正则化的情形中定义训练误差另一种不同的形式,把它定义为最优化目标,去掉正则化项,类似的也可以这样定义交叉验证集误差和测试误差。

 选择正则化参数:

 得到了这12组模型后,接下来要做的是选用第一个模型,最小化我们的代价函数J(\theta)得到参数向量,以此类推,选择第二个、第三个模型...紧接着,用交叉验证集来评价所得到的参数向量,然后取交叉验证误差最小的模型作为最终选择。

 其实思想是差不多的,一个是通过减少维度(数据集),一个是控制theta的相对大小(正则化),核心都是进一步选择效果最好的(泛化性能最佳的)theta。

当改变正则化参数lambda时,交叉验证误差和训练误差怎么变化?

用J(包含正则化项)来求theta,然后为了比较lameda对theta的影响,用Jtrain和Jcv绘制曲线(不包含正则化项)。其实训练时用的是J,而Jtrain和Jcv只是用来画线说明问题。(正则是为了梯度下降的优化,真值的误差本身不包括正则,所以训练误差没有正则)

把数据分成训练集+验证集+测试集后,就是拿带有正则化的去拟合参数,这里的J_train指的是你训练出来的预测值和真实值的误差!

lambda大,就把一些相关性不大的特征的theta变为0了,就修正了过拟合的问题,而且这是针对训练集,所以再用不带正则化的代价函数去测试训练集偏差就大了,lambda小,就过拟合了。

 7.5 学习曲线

假设你的假设出现高偏差问题

偏差大对应欠拟合,欠拟合可以理解为模型简单,未捕捉到数据集的特征(高偏差(欠拟合)添加数据无效)。

如果一个学习算法有高偏差,随着我们增加训练样本就是向着上图的横坐标右边移动,发现交叉验证误差不会明显下降了,基本变成平的了。所以如果学习算法正处于高偏差的情形,那么选用更多的训练集数据对于改善算法表现无益。

当学习算法出现高方差问题时,如果你的训练集很小,我们的训练误差会很小。随着训练集样本容量的增加,可能仍然会有些过拟合,但此时要对数据很好地拟合变得更加困难。

这个曲线图也反映出,如果我们考虑增大训练集的样本数,就是上图横坐标向右延伸的曲线。

过拟合说的是模拟于训练数据集,拟合程度很高并且复杂程度也很高。过拟合,一般就是训练集error很低,但是验证集的error降不下来。

高偏差是欠拟合,高方差是过拟合(参数少:欠拟合,参数多:过拟合)

学习曲线有利于我们弄清哪些方法有助于改进学习算法的效果

我们试图用正则化的线性回归拟合模型发现并没有达到我们预期的效果,我们有了如下很多选择,哪些方法有效呢?

feature的数量应与m相匹配,feature过少或m过大时表现为欠拟合,feature过少或m过小时表现为过拟合,所以欠拟合是增加feature没有问题。拉姆达负责修正,提高拉姆达是为了解决过拟合。

 交叉验证误差或者测试误差是检验模型对新样本泛化能力,能不能对新样本做出好的预测。

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

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

相关文章

【数据结构】树,二叉树,满二叉树,完全二叉树的定义和二叉树的基本操作

🎊专栏【数据结构】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【勋章】 大一同学小吉,欢迎并且感谢大家指出我的问题🥰 目录 ⭐树 🏳️‍🌈定义 🏳️‍…

祝贺!Coremail连续4年入选中国网络安全市场全景图

5月16日,数说安全正式发布《2023年中国网络安全市场全景图》(以下简称“全景图”)。作为国内头部电子邮件产品与解决方案提供商,Coremail凭借着出色的产品技术和服务,连续4年入选“邮件安全”领域,体现行业…

计算机视觉 day 93 学习像素级膨胀滤波的高效率单图像去噪

学习像素级膨胀滤波的高效率单图像去噪 1 Introduction3 Methodology3.1 逐像素图像滤波解调3.2 可学习像素级膨胀滤波Kernel prediction network(核预测网络)Multi-dilated image filtering and fusion(多扩张图像滤波与融合) 3.…

基础篇007. 串行通信(一)--阻塞方式发送接收

目录 1. 串行通信 1.1 串行通信概述 1.2 串行通信协议 2. 实验任务 3. 硬件原理 4. 利用STM32CubeMX创建MDK工程 4.1 STM32CubeMX工程创建 4.2 配置调试方式 4.4 配置GPIO 4.5 配置串口参数 4.6 配置时钟 4.7 项目配置: 4.8 串口初始化程序说明 5. 串行…

机器学习笔记 - 利用自动编码器神经网络构建图像去噪器

一、概述 传统的图像噪声去除主要是基于各种滤波器,但它们不是特定于数据的,因此可能会损失很多图像的细节,或者噪声去除的效果不是很理想。基于神经网络的自动编码器可以用于学习数据集的噪声去除滤波器。 关于自动编码器的介绍,可以参考下面的链接。https://skydance.blo…

Windows Server 2019 中文版、英文版下载 (updated May 2023)

Windows Server 2019 Version 1809,2023 年 5 月更新 请访问原文链接:https://sysin.org/blog/windows-server-2019/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 本站将不定期发布官方原版风格月度更…

nest笔记十一:一个完整的nestjs示例工程(upgrade)

概述 链接:upgrade 相关文章列表 nestjs系列笔记 示例工程说明 这个工程是我使用nestjs多个项目后,总结出来的模板。这是一个完整的工程,使用了yaml做为配置,使用了log4js和redis和typeorm,sawgger,自…

ChatGPT热门资料汇总,绝对不割韭菜

前言 ChatGPT 的出现,AI圈子一下就热闹起来了,各个公司争先恐后地出自己的产品,百度的文心一言、谷歌的Bard、阿里的通义千问等等,有很多人借此机会已经赚到百万,很多卖课搞培训的都是互为合伙人,大家都懂…

243亿美元营收背后,百年龙头的汽车生态砝码

伴随着更为显著的全球汽车新能源化、智能化趋势,汽车产业必将迎来更多新机遇。 一方面,主机厂为保持竞争优势、适应客户多元化需求,不断加快汽车更迭速度,为汽车产业带来了新的市场机遇。另一方面,随着人工智能、云计…

2023企业数智化财务创新峰会 · 成都站圆满举办!

5月17日,「智能会计 价值财务」2023企业数智化财务创新峰会巡回来至天府,川大商学院权威教授领衔分享、大型企业财务先锋详解财务数智化领先实践、毕马威资深专家现场解读财务创新趋势与典型案例,与线上线下数千人一同见证“智能会计”新时代…

网络请求--http请求学习详解

写在前面: 文章目录 http简介http报文格式请求样例响应样例 起始头格式 常见请求方法GETPOSTRESTful风格 头部字段Content-Type Https http简介 http:超文本传输协议 是一种无状态,无连接,以应答式的协议,可使用扩展…

力扣sql中等篇练习(二十三)

力扣sql中等篇练习(二十三) 1 统计实验的数量 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # 有可能数据本身就不全,就需要自行创建临时表 WITH T as (SELECT Android p1,Reading e1UNIONSELECT Android p1,Sports e1UNIONSELECT Android p1,Prog…

最简单配置jenkins容器使用宿主机的docker方法

构建镜像和发布镜像到harbor都需要使用到docker命令。而在Jenkins容器内部安装Docker官方推荐直接采用宿主机带的Docker即可 设置Jenkins容器使用宿主机Docker 设置宿主机docker.sock权限 chown root:root /var/run/docker.sock chmod orw /var/run/docker.sock 添加数据卷 v…

215.数组中第 k 个最大的元素。

解题思路: 利用快排的思想,不断地将数组分成若干部分,缩小查找范围,最终找到第 k 大的元素。 1、首先,对数组进行快速排序,使得数组从大到小排序,然后返回排序后的第 k 个元素即可。 2、在快排…

关于window.print打印分页功能

平常window.print分页一般打印时用到page-break-after:always; 打印的样式设置在 <style type"text/css" media"print"></style>进行设置 但现在我想动态打印分页&#xff0c;即内容一页时打印一页&#xff0c;内容两页时打印两页。。。 现…

HBase 写入数据(Scala代码)

代码如下》》 package Flink_HBase_APLimport org.apache.hadoop.hbase.{HBaseConfiguration, TableName} import org.apache.hadoop.hbase.client.{ConnectionFactory, Put} import org.apache.hadoop.hbase.util.Bytesobject this_one {def main(args: Array[String]): Unit…

开源即时通讯IM框架MobileIMSDK的Uniapp端开发快速入门

► 相关链接&#xff1a; ① MobileIMSDK-Uniapp端的详细介绍② MobileIMSDK-Uniapp端的开发手册new&#xff08;* 精编PDF版&#xff09; 一、理论知识准备 您需要对Uniapp和Vue开发有所了解&#xff1a; 1&#xff09;Uniapp 官方入门教程2&#xff09;可能是最好的 unia…

MyBatis Plus 拦截器实现数据权限控制

一、介绍 上篇文章介绍的MyBatis Plus 插件实际上就是用拦截器实现的&#xff0c;MyBatis Plus拦截器对MyBatis的拦截器进行了包装处理&#xff0c;操作起来更加方便 二、自定义拦截器 2.1、InnerInterceptor MyBatis Plus提供的InnerInterceptor接口提供了如下方法&#x…

SpringCloud 集成 Eureka Server

SpringCloud 集成 Eureka Server 1 pom.xml2 application.yml3 appliction.java4 启动 Eureka的优点&#xff1a; 简单易用&#xff1a;Eureka设计简单&#xff0c;容易上手和部署。 高可用性&#xff1a;Eureka支持高可用性配置&#xff0c;通过使用多个Eureka服务器实例来提…

IEEE Robotics and Automation Letters(RA-L)与ICRA投稿

一 总体感受 RAL不愧未短平快的论文&#xff0c;从接收论文、送审和复审都相当快&#xff0c;我的两个多月出最终接收结果&#xff0c;期刊官网规定6个月内出最终结果。作为现在IEEE主推的短文&#xff0c;限制在8页以内&#xff0c;在6页以上时超页费为175刀/页&#xff0c;目…