我们需要区分训练误差(training error)和泛化误差(generalization error)。通俗来讲,前者指模型在训练数据集上表现出的误差,后者指模型在任意一个测试数据样本上表现出的误差的期望,并常常通过测试数据集上的误差来近似。计算训练误差和泛化误差可以使用之前介绍过的损失函数,例如线性回归用到的平方损失函数和softmax回归用到的交叉熵损失函数。

让我们以高考为例来直观地解释训练误差和泛化误差这两个概念。训练误差可以认为是做往年高考试题(训练题)时的错误率,泛化误差则可以通过真正参加高考(测试题)时的答题错误率来近似。假设训练题和测试题都随机采样于一个未知的依照相同考纲的巨大试题库。如果让一名未学习中学知识的小学生去答题,那么测试题和训练题的答题错误率可能很相近。但如果换成一名反复练习训练题的高三备考生答题,即使在训练题上做到了错误率为0,也不代表真实的高考成绩会如此。

在机器学习里,我们通常假设训练数据集(训练题)和测试数据集(测试题)里的每一个样本都是从同一个概率分布中相互独立地生成的。基于该独立同分布假设,给定任意一个机器学习模型(含参数),它的训练误差的期望和泛化误差都是一样的。例如,如果我们将模型参数设成随机值(小学生),那么训练误差和泛化误差会非常相近。但我们从前面几节中已经了解到,模型的参数是通过在训练数据集上训练模型而学习出的,参数的选择依据了最小化训练误差(高三备考生)。所以,训练误差的期望小于或等于泛化误差。也就是说,一般情况下,由训练数据集学到的模型参数会使模型在训练数据集上的表现优于或等于在测试数据集上的表现。由于无法从训练误差估计泛化误差,一味地降低训练误差并不意味着泛化误差一定会降低。

机器学习模型应关注降低泛化误差。

K折交叉验证:

由于验证数据集不参与模型训练,当训练数据不够用时,预留大量的验证数据显得太奢侈。一种改善的方法是K折交叉验证(K-fold cross-validation)。在K折交叉验证中,我们把原始训练数据集分割成K个不重合的子数据集,然后我们做K次模型训练和验证。每一次,我们使用一个子数据集验证模型,并使用其他K−1个子数据集来训练模型。在这K次训练和验证中,每次用来验证模型的子数据集都不同。最后,我们对这K次训练误差和验证误差分别求平均。

资料来源:《动手学深度学习》

训练误差和泛化误差、K折交叉验证相关推荐

  1. Kaggle上分技巧——单模K折交叉验证训练+多模型融合

    一.K折交叉验证训练单个模型 1.1 k 折交叉验证(K-Fold Cross Validation)原理 通过对 k 个不同分组训练的结果进行平均来减少方差,因此模型的性能对数据的划分就不那么敏感, ...

  2. 在Mnist数据上使用k折交叉验证训练,pytorch代码到底怎么写

    前言 最近学到了K折交叉验证,已经迫不及待去实验一下他的效果是不是如老师讲的一样好,特此写下本文. 本文运行环境为:sklearn.pytorch .jupyter notebook k折交叉验证介绍 ...

  3. 训练集、测试集的划分——K折交叉验证

    文章目录 一.训练集.测试集 二.交叉验证法 1.目的 2.原理 3.具体步骤 一.训练集.测试集 训练集(Training Set):帮助我们训练模型,简单的说就是通过训练集的数据让我们确定拟合曲线 ...

  4. Python:K折交叉验证,将数据集分成训练集与测试集

    注意文件夹格式:父文件夹/类别/图像(同torch读取图像格式保存一致),传入路径为父文件夹路径. """ 对图像进行交叉验证, 用于检验分类效果 对每个类别的n张图像进 ...

  5. ML:模型训练/模型评估中常用的两种方法代码实现(留一法一次性切分训练和K折交叉验证训练)

    ML:模型训练/模型评估中常用的两种方法代码实现(留一法一次性切分训练和K折交叉验证训练) 目录 模型训练评估中常用的两种方法代码实现 T1.留一法一次性切分训练 T2.K折交叉验证训 模型训练评估中 ...

  6. k折交叉验证优缺点_k折交叉验证(R语言)

    "机器学习中需要把数据分为训练集和测试集,因此如何划分训练集和测试集就成为影响模型效果的重要因素.本文介绍一种常用的划分最优训练集和测试集的方法--k折交叉验证." k折交叉验证 ...

  7. k折交叉验证 python_Python实现K折交叉验证法的方法步骤

    学习器在测试集上的误差我们通常称作"泛化误差".要想得到"泛化误差"首先得将数据集划分为训练集和测试集.那么怎么划分呢?常用的方法有两种,k折交叉验证法和自助法 ...

  8. 机器学习基础|K折交叉验证与超参数搜索

    文章目录 交叉验证 交叉验证的概念 K的取值 为什么要用K折交叉验证 Sklearn交叉验证API 超参数搜索 超参数的概念 超参数搜索的概念 超参数搜索的原理 Sklearn超参数搜索API 实例 ...

  9. python交叉验证法_Python实现K折交叉验证法的方法步骤

    学习器在测试集上的误差我们通常称作"泛化误差".要想得到"泛化误差"首先得将数据集划分为训练集和测试集.那么怎么划分呢?常用的方法有两种,k折交叉验证法和自助法 ...

  10. 机器学习--K折交叉验证(K-fold cross validation)

    K 折交叉验证(K-flod cross validation) 当样本数据不充足时,为了选择更好的模型,可以采用交叉验证方法. 基本思想:把给定的数据进行划分,将划分得到的数据集组合为训练集与测试集 ...

最新文章

  1. 互联网公司「敏捷开发」,打造高效执行能力
  2. 2018年科技公司融资纪录十大排行榜!中国四家公司上榜
  3. volatile关键字对
  4. Response.Redirect(),Server.Transfer(),Server.Execute()的区别与网站优化
  5. JavaScript eval()
  6. 非递归遍历求二叉排序树的深度
  7. sess.run的第一个参数的错误理解
  8. 项目管理系列之项目范围时间及资源管理(二)
  9. PHP linux spl_autoload_register区分大小写
  10. caffe安装_【开源框架】caffe图像分类从模型自定义到测试
  11. 852 -山脉阵列中的峰值指数
  12. 训练模型以识别文本中的情绪 3 NLP 零到英雄 Training a model to recognize sentiment in text
  13. 科学道德与学风-2021雨课堂答案-第4章
  14. 有道无术,术可求;有术无道,止于术-----《程序员面试笔试宝典》
  15. 阅读ResNet论文 心得体会
  16. UI设计现状与发展趋势是什么
  17. HFSS15 win10安装
  18. pod install 时遇到 Automatically assigning platform `iOS` with version `11.0` on target XXX......
  19. unity【KeyCode 键码】查询表
  20. solidworks2020绿色精简版

热门文章

  1. 字节二面、三面面经及内推
  2. 怎么将两个PDF合并成一个?这里有三个小妙招分享给你
  3. SQL 完整的实体性—联系图
  4. 一名5年工作经验的程序员应该具备的技能
  5. Linux的nc,局域网文件互传
  6. 年轻人最好要接触」的东西
  7. web前端零基础html5 +css3基础教程
  8. Jersey是一个什么框架,价值在哪里?
  9. Python 爬取小说点评网站,用大数据方法找小说
  10. 计算机保存的快捷方式,保存快捷键ctrl加什么