从本节博文开始,将会有几篇博文的内容探究的是如何对模型进行评估,模型是好是坏?模型能否拟合?

  • P20 (本篇)模型的诊断,验证集
  • P21 正则化
  • P22 过拟合和欠拟合的探究2,偏差与方差

模型的评估 - 验证集

  • 为什么需要评估模型
  • 什么是验证集
    • 验证集与测试集
  • 验证集与神经网络
    • 神经网络中的验证集有什么作用
    • 神经网络模型的选择
    • 如何使用验证集调整神经网络参数

本篇博文省流版:
验证集用来判断是否过拟合欠拟合,通常数据集分配为:60% 训练集 + 20% 验证集 + 20% 测试集,model.fit 训练中,验证集就像一个眼睛,会一直观察着模型的训练会不会导致过拟合与欠拟合的发生。


为什么需要评估模型

在机器学习中,我们使用模型来对数据进行预测和分类。模型的好坏通常是指模型的预测精度和泛化能力。

模型的预测精度是指模型在给定输入数据时产生正确输出的能力。通常使用不同的指标来衡量模型的预测精度,如准确率、召回率、F1分数等。

模型的泛化能力是指模型在未曾见过的数据上的表现能力。模型应该能够正确地预测未知数据的输出结果。如果模型只是在训练数据集上表现良好,但在未曾见过的数据上表现差,那么我们就称这个模型出现了过拟合。过拟合的模型会过度关注训练数据的细节,导致无法对新数据进行准确的预测。相反,如果模型在训练数据集和测试数据集上的表现都很差,那么我们就称这个模型出现了欠拟合。欠拟合的模型在训练数据集和测试数据集上都不能正确地进行预测。

不管是在回归模型上,还是分类模型任务中,都会存在着过拟合和欠拟合的现象:



因此,好的模型应该在训练数据集和测试数据集上都能表现良好,同时具有较高的预测精度和较好的泛化能力。而验证集,则是机器学习中常用的一种评估模型性能的方法。


什么是验证集

验证集,validation set,又称为交叉验证集,cross validation set,用于评估机器学习模型的性能的数据集。

在训练模型时,通常会将数据集划分为三个部分:训练集、验证集和测试集。训练集用于训练模型,测试集用于评估最终模型的性能,而验证集则用于调整模型的超参数和选择最佳的模型,如下图:


到这里往往会产生第一个疑惑:“有测试集,为什么还需要验证集?”

验证集与测试集

省流: 验证集和测试集都是用于评估模型,但是验证集是在模型训练中,测试集则是在模型训练后;

最简单的模型训练流程:

① 选择模型
② 训练调整参数
③ 梯度下降降低损失值
④ 重复 ②~③
⑤ 输出模型,测试集判断准确率

非省流:
验证集的作用在于帮助调整模型的超参数以及选择最佳模型。在训练过程中,验证集数据不参与模型参数的更新,而是用于评估当前模型的泛化能力。通过观察验证集上的性能指标,可以判断模型是否出现了过拟合或欠拟合等问题,并对模型进行相应的调整,以提高模型的性能。

测试集的作用是在模型训练和调整完成后,对最终模型的性能进行评估,用于模拟模型在实际应用中的性能。测试集应该是独立于训练集和验证集的数据集,而且在训练过程中不能使用测试集数据进行任何调整,否则测试集就失去了独立性,无法真实地评估模型的性能。

虽然可以通过测试集的数据来判断模型是否过拟合,但测试集的数据只能在训练结束后使用。而且测试集的数据不能用于调整模型,否则可能会导致测试集的偏差,影响最终评估结果的准确性。因此,在训练过程中,验证集的作用非常重要,它可以帮助调整模型的超参数以及选择最佳模型,从而避免过拟合等问题。

这时,第二个问题来了,验证集是如何参与到神经网络中的呢?这就延伸出两个问题:

  • 神经网络中的验证集有什么作用?
  • 如何使用验证集调整神经网络参数?

验证集与神经网络

神经网络中的验证集有什么作用

虽然验证集不能自动调整模型或直接影响模型的训练过程,但它在模型选择、调参和评估等方面仍然具有重要作用。

  • 模型的选择
    首先,验证集在模型选择方面的作用是帮助选择最佳的模型。在训练多个模型后,使用验证集来评估每个模型的性能,并选择性能最好的模型作为最终的模型。
  • 模型的参数调整
    其次,验证集在超参数调整方面的作用是帮助选择最佳的超参数组合。在训练同一模型的多个版本时,使用验证集来评估每个版本的性能,并选择超参数组合表现最佳的版本。
  • 模型的评估
    最后,验证集在模型评估方面的作用是提供对模型性能的独立评估。在使用测试集评估模型性能前,通常需要使用验证集来对模型进行调整和优化,以确保测试集的评估结果是准确的。

因此,虽然验证集不能直接影响模型的训练过程,但它在模型选择、调参和评估等方面仍然具有重要作用。

上文中提到模型的选择,那么什么是模型的选择,如何进行模型的选择?

神经网络模型的选择

选择模型1,还是模型2,还是模型3?

在神经网络中,模型的选择通常是指选择不同的神经网络结构,例如不同的层数、节点数、激活函数等,以满足不同的任务需求和数据特征。因此,在神经网络中,模型的选择是非常重要的。

虽然深度学习领域已经出现了很多经典的神经网络结构,例如 LeNet、AlexNet、VGG、ResNet、Inception 等,但在具体应用中,仍然需要根据具体任务和数据特征选择适合的神经网络结构。不同的神经网络结构可能具有不同的优缺点,例如一些结构可能具有更好的分类性能,而另一些结构可能更适合处理序列数据或图像数据等。

在进行模型选择时,一般需要考虑以下因素:

  • 任务需求: 根据任务的类型和需求,选择适合的神经网络结构。例如,对于图像分类任务,通常使用卷积神经网络(CNN)结构,而对于序列数据处理任务,通常使用循环神经网络(RNN)结构。

  • 数据特征: 根据数据的特征和规模,选择适合的神经网络结构。例如,对于图像数据,如果数据规模较小,可以选择浅层的 CNN 结构;如果数据规模较大,可以选择深层的 ResNet 结构。

  • 计算资源: 根据计算资源的限制和可用性,选择适合的神经网络结构。例如,对于计算资源较为有限的情况,可以选择轻量级的神经网络结构,如 MobileNet、ShuffleNet 等。

总之,在神经网络中,模型的选择仍然是非常重要的,并且需要根据具体的任务需求、数据特征和计算资源等因素来进行选择。


如何使用验证集调整神经网络参数

如何根据验证集调整超参数?可以通过观察验证集的损失函数曲线:

图中 J c v J_{cv} Jcv​ 为验证集损失函数曲线 J t r a i n J_{train} Jtrain​ 为训练集损失函数曲线


验证集的损失函数,会有一个从大到小,然后又变大的波动曲线,第一个从大到小是因为伴随着梯度下降,参数的调整,整个模型的拟合效果不断提升;而第二个从小到大是因为伴随着不断地调整,会出现过拟合的现象,导致验证集地损失值增大。


其实本章的内容,只需要知道有一个集合称为验证集,作用是在模型的拟合过程中,参与到参数的调整过程中,目的就是为了观察是否出现过拟合与欠拟合现象。本文缺少过拟合和欠拟合具体地示例与出现后如何解决,这个将在博文:

  • P22 过拟合和欠拟合的探究2,偏差与方差

中进行阐述。

【机器学习】P20 模型的诊断 - 验证集相关推荐

  1. 机器学习中为啥要有验证集?只要训练集和测试集不就可以了吗?

    在机器学习中,开发模型时总需要调节模型的参数,比如改变权重.选择层数或每层的大小,这个调节过程需要在训练的模型上通过验证集数据的表现来提供一个反馈信号,去修改网络模型及参数.这就是验证集的作用,这也会 ...

  2. 机器学习基础---超参数和验证集

    2019独角兽企业重金招聘Python工程师标准>>> 交叉验证 转载于:https://my.oschina.net/liyangke/blog/3000662

  3. 如何在验证集加噪声_如何使用Python构建机器学习模型

    如何使用Python构建机器学习模型?在构建机器学习模型时,我们希望将误差保持在尽可能低的水平.对于任何打算学习Python进行大数据分析的人来说,这都是一项关键技能.误差的两个主要来源是偏差和方差. ...

  4. 机器学习验证集为什么不再有新意?

    2020-03-01 18:19 导语:摆脱过时的规则和思维定式刻不容缓! 机器学习中,一般将样本数据分成独立的三部分:训练集.验证集和测试集. 其中验证集在机器学习中所起到的作用是:开发模型总需要调 ...

  5. 训练集的识别率一直波动_机器学习验证集为什么不再有新意?

    机器学习中,一般将样本数据分成独立的三部分:训练集.验证集和测试集. 其中验证集在机器学习中所起到的作用是:开发模型总需要调节模型的参数,而整个调节过程需要在验证集数据上运行训练的模型,从而给出其表现 ...

  6. cnn 验证集 参与训练吗_一个简单的零基础的机器学习教程之二,字母数字验证码识别...

    一.前言 基于前面我发的贴子 土味程序员:一个简单的零基础的机器学习教程,Pytorch搭建Faster R-CNN目标检测平台​zhuanlan.zhihu.com 一个非常震撼的目标检测的例子.上 ...

  7. 机器学习中为什么需要验证集,验证集与测试集的区别是什么?

    目录 1.为什么需要验证集 2.验证集与测试集的区别 3.如何使用验证集 4.为什么验证集和测试集都需要? 参考链接 1.为什么需要验证集 在机器学习中,训练模型时需要调节模型的参数来提高模型的性能, ...

  8. 【机器学习】训练集、验证集与测试集

    关于数据集的划分是基本概念,但是有时候看其他人代码时,经常被弄得云里雾里. 特作此记录. 目录 训练集(train set) 验证集(val set) 验证集的正确打开方式 测试集(test set) ...

  9. 【大数据专业】机器学习分类模型评估和优化之交叉验证的多种方法

    学习目标: 机器学习: 分类评估模型及优化之交叉验证 交叉验证的三种基本方法: 1.将拆分与评价合并执行 sklearn.model_selection.cross_val_score 2.同时使用多 ...

最新文章

  1. Unicorn 4.6.3 发布,Rack的HTTP服务器
  2. 第十五届智能车竞赛技术报告-成电金秋-AI电磁
  3. 2、前端环境搭建(19.04.12)
  4. 最简单实现多线程的方法(Thread)
  5. python函数的高级用法
  6. 改工作空间_打拼六年换的新房,装修花了17万,飘窗改柜子很实用,谁见过?...
  7. 反三角函数怎么表示_交流电的功率因数怎么算(里面有例子)
  8. RequireJS入门(一) 转
  9. 转:函数要多小才够好——谈小函数之道
  10. 数据结构---基数排序
  11. Java多线程学习(八)线程池与Executor 框架
  12. C语言-函数的指针/函数指针/回调函数
  13. JS中定时器的返回数值ID值
  14. 搜索引擎中影响索引长度的因素
  15. 【转】女人最想要的是什么
  16. An Overview of MITRE Cyber Situational Awareness Solutions
  17. 点击list view中一行内容可以在combox中显示_在后台添加新的产品/文章分类,如何在模板中显示产品列表/文章列表?如何调用分类?...
  18. annovar与VEP对SNP进行位置注释
  19. 带weixin扫码登陆注册|仿城通网盘源码修复版
  20. Radis还年轻,代替MySQL还言之过早

热门文章

  1. mysql数据库--mysql的数据类型(数值型)
  2. 计算机变量符号有哪些,数值型数据的符号在计算机中如何表示
  3. 含文档+PPT+源码等]精品基于ssm的足球联赛管理系统的设计与实现vue[包运行成功]计算机项目源码Java项目毕设
  4. ASP.NET项目创建
  5. 转行数据分析师一定需要考证吗?1分钟告诉你答案
  6. java中的枚举与注解
  7. 分享---蔡康永情商课201集全
  8. 支付账户体系(分账接口)的9大价值
  9. geoserver之gs-kml、gs-wcs、gs-rest、gs-gwc、gs-sec-jdbc
  10. 语音信号短时域分析之短时平均能量(四)