机器学习理论笔记(二):数据集划分以及模型选择

文章目录

  • 1 前言
  • 2 经验误差与过拟合
  • 3 训练集与测试集的划分方法
    • 3.1 留出法(Hold-out)
    • 3.2 交叉验证法(Cross Validation)
    • 3.3 自助法(Bootstrap)
  • 4 调参与最终模型
  • 5 结语

在这里插入图片描述

1 前言

欢迎来到蓝色是天的机器学习笔记专栏!在上一篇文章《机器学习理论笔记(一):初识机器学习》中,我们初步了解了机器学习,并探讨了其定义、分类以及基本术语。作为继续学习机器学习的进一步之旅,今天我们将进一步讨论机器学习中的一些重要概念和技巧。

在本文中,我们将重点关注以下几个方面:经验误差与过拟合、数据集划分、调参以及最终模型的选择。这些主题对于解决实际问题中的机器学习挑战至关重要。通过深入了解这些概念和方法,我们可以更好地理解机器学习模型的训练过程,提高模型的预测准确性,从而使我们能够做出更好的决策和预测。

无论你是新手还是有经验的机器学习从业者,本文都将为你提供有价值的知识和实用的技巧。让我们一起探索机器学习中这些关键领域,并加深对机器学习的理解。让我们开始吧!

2 经验误差与过拟合

在机器学习中,我们通常希望通过训练学习器来对新样本进行泛化,即在未见过的数据上具有良好的预测准确性。为了衡量学习器的性能,我们引入了错误率、精度、误差等概念。

  • 错误率表示分类错误的样本数占样本总数的比例,而精度则是错误率的补数,即1减去错误率。误差是指学习器的实际预测输出样本与样本真实输出之间的差异。
  • 训练误差,也称为经验误差,表示学习器在训练集上的误差。训练误差是通过与已知标签进行比较来评估学习器的预测准确性。然而,我们希望学习器在新样本上也能表现出良好的预测能力,即具有较低的泛化误差。
  • 泛化误差是指学习器在新样本上的误差,它度量了学习器在未见过的数据上的表现能力。我们希望泛化误差尽可能小,但是我们只能通过训练集的经验误差作为指标进行衡量。

然而,经验误差往往无法完全反映学习器的泛化能力。当学习器过度追求在训练集上的准确性时,很可能会过于贴合训练数据的细节特征,而忽视了样本的一般性质,从而导致泛化性能下降。这种现象被称为过拟合

过拟合是机器学习中一个常见的问题,即学习器在训练集上表现出较好的性能,但在新样本上的表现却差。它表明学习器过于复杂,将训练样本自身的特点当作了所有潜在样本都会具有的一般性质,从而导致了泛化性能的降低。

相对应的,欠拟合是指学习器对训练样本的一般性质学习得不够好,导致无法很好地进行预测和泛化。

在这里插入图片描述

虽然完全避免过拟合是不可能的,但我们可以采取一些措施来“缓解”过拟合并减小其风险。例如,我们可以增加更多的训练数据,以减少对特定样本的过度依赖。另外,我们还可以采用正则化方法来约束学习器的复杂度,以防止其过度拟合训练数据。

同时,对于欠拟合问题,我们可以尝试增加模型的复杂度或采用更复杂的算法来提高学习器的性能。此外,合理选择特征、调整模型参数以及使用集成学习等方法也可以帮助克服欠拟合问题。

在实际应用中,我们需要根据问题的特点和数据的情况来选择合适的机器学习算法,并采取恰当的方法来克服过拟合或欠拟合的问题,以达到更好的泛化性能。

3 训练集与测试集的划分方法

在机器学习中,训练集和测试集的划分是评估模型性能的重要步骤。合理划分训练集和测试集能够准确评估模型的泛化能力和性能。本文将介绍三种常用的训练集与测试集划分方法:留出法、交叉验证法和自助法,并讨论它们的优缺点和适用场景。

3.1 留出法(Hold-out)

留出法是最简单直接的划分方法之一。它将原始数据集划分为两个互斥的集合:一个用作训练集,另一个用作测试集。训练集用于训练模型的参数和规则,而测试集则用于评估模型的性能。划分时应保持训练集和测试集的数据分布相同,并确保测试集与训练集互斥,即测试样本不在训练集中出现。为了减小随机划分的影响,通常建议进行多次随机划分,并取平均值作为留出法的评估结果。

直接将数据集刀划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T,即D = S∪T, S∩T = ∅。 上训练出模型后,用T来评估其测试误差,作为对泛化误差的估计

优点:

简单易行,实现方便。
计算效率高,适用于大数据集。

缺点:

可能由于随机划分的不一致导致评估结果偏差较大。
对于小规模数据集,划分比例的选择有一定的挑战。

适用场景:

数据集规模较大。
对划分效果要求不苛刻的场景。

3.2 交叉验证法(Cross Validation)

交叉验证法是一种更稳健的划分方法,它将原始数据集划分为k个大小相似的互斥子集。然后,使用k-1个子集作为训练集,剩下的一个子集作为测试集,进行模型的训练和测试。重复这个过程k次,每次选择不同的测试集,最终将k次测试结果的均值作为最终评估结果。交叉验证法能够更充分地利用数据集的信息,减小因单次划分导致的偏差。常见的k值有10、5、20等,其中10折交叉验证是最常用的。

D=D1∪D2∪……Dk,Di∩Dj=∅(i≠j)
在这里插入图片描述

优点:

可以更准确地评估模型的性能,有效利用数据集。
具有较低的评估结果方差。
对于数据集较小且难以进行有效划分的情况下特别有用。

缺点:

计算复杂度高,需要进行多次模型训练和测试。
对于大规模数据集,计算资源消耗较大。

适用场景:

数据集规模较小。
对模型性能评估要求较高的场景。

3.3 自助法(Bootstrap)

自助法是一种特殊的划分方法,适用于数据集较小或难以有效划分训练集和测试集的情况。自助法通过自助采样的方式,从原始数据集中进行有放回地采样,生成一个与原始数据集大小相同的自助样本集。由于自助样本集的生成过程中部分样本可能多次出现,而另一部分样本可能未出现,因此可以使用自助样本集作为训练集,剩余未出现的样本作为测试集,得到一个称为包外估计(out-of-bag estimate)的评估结果。自助法能够更充分地利用数据集的信息,减小因划分导致的偏差,并且适用于数据集较小或难以有效划分的情况。

给定包含m个样本的数据集Q ,我们对它进行釆样产生数据集每次随机从Q中挑选一个样本,将其拷贝放入Df,然后再将该样本放回初始数据集D中,使得该样本在下次釆样时仍有可能被釆到;这个过程重复执行m次后,我们就得到了包含m个样本的数据集Df,这就是自助釆样的结果。显然,D中有一部分样本会在Df中多次出现,而另一部分样本不出现。可以做一个简单的估计,样本在m次釆样中始终不被釆到的概率是:
( 1 − 1 m ) m \left(1-{\frac{1}{m}}\right)^{m} (1m1)m
取极限得到
* ⁡ l i m m → ∞ ( 1 − 1 m ) m ↦ 1 e ≈ 0.368 \operatorname*{lim}_{m\rightarrow\infty}\left(1-\frac{1}{m}\right)^{m}\mapsto\frac{1}{e}\approx0.368 *limm(1m1)me10.368

优点:

可以有效利用小规模数据集,减小由于数据量不足导致的问题。
无需对数据集进行显式的划分,简化了训练集和测试集的划分过程。

缺点:

自助样本集中约有37%的样本未被采样到,可能导致评估结果偏乐观。
对于大规模数据集,自助法可能会导致计算资源浪费。

适用场景:

数据集规模较小或难以有效划分训练集和测试集的情况。
对数据集的利用率要求较高的场景。

4 调参与最终模型

在机器学习中,调参和算法选择是非常重要的步骤,它们直接影响到最终模型的性能和泛化能力。本章将介绍调参的概念以及一些常见的调参方法,同时还会涉及到最终模型的训练和评估。

调参的过程实际上和算法选择并没有本质的区别。对于许多学习算法来说,有很多参数需要设置,而这些参数的不同取值通常会导致学得模型的性能有显著差异。因此,我们需要对参数进行调节以找到最优的参数配置。然而,由于学习算法的参数通常是连续的实数值,无法对每种参数取值都进行模型训练。为了解决这个问题,我们常常会选择一个参数的范围和变化步长,然后在这个范围内进行参数的取值评估。例如,在范围 [0, 0.2] 内以 0.05 为步长进行取值评估,这样就得到了5个候选参数值。尽管这种方法不能保证找到最佳的参数值,但是通过权衡计算开销和性能估计,它仍然是一个可行的解决方案。

我们通常会将学得模型在实际使用中遇到的数据称为测试数据,为了区分,模型评估和选择中用于评估测试的数据集被称为验证集(validation set)。在调参过程中,我们会使用验证集来评估不同参数配置下模型的性能,并选择表现最好的参数配置作为最终模型的参数。

需要注意的是,在模型训练和调参完成后,我们还需要使用初始的数据集重新训练模型。这样做的目的是让初始的测试集也被模型学习,从而进一步提升模型的学习效果。类比于考试的情形,就像我们每次考试完后,需要复习和消化考试题目的内容,从而能够更好地应对下一次考试。因此,重新训练模型可以增强模型的泛化能力和性能。

综上所述,调参和最终模型的训练是实现好的机器学习模型的重要步骤。通过选择合适的参数值以及重新训练模型,我们可以进一步提升模型的性能和泛化能力,从而更好地适应实际应用场景。调参需要耐心和实践经验,同时也需要通过验证集的评估来指导参数选择的过程。最终,我们希望通过调参和最终模型的训练得到一个具有良好性能的模型,以解决实际问题并取得好的效果。

5 结语

在本篇文章中,我们介绍了机器学习中的调参与最终模型的相关内容。调参是为了找到最优的参数配置,能够提高模型的性能和泛化能力。同时,为了评估模型的性能,在训练和调参过程中,我们将数据集划分为训练集和测试集。

对于数据集的划分,我们介绍了三种常用的方法:留出法、交叉验证法和自助法。每种方法都有各自的使用场景和特点,可以根据实际情况选择合适的方法。

调参过程需要一定的经验和技巧,在限定的参数范围内尝试不同的取值,并通过验证集来评估模型的性能。通过不断地调节参数,我们可以找到最佳的参数配置,以获得最佳的模型性能。

最终模型的训练也是十分重要的,通过重新使用全部的数据集来训练模型,可以进一步提高模型的泛化能力和性能。

调参与最终模型的训练是机器学习中不可忽视的环节,需要经过实践与验证逐步优化模型。通过本文的内容,我们希望读者能够理解调参的重要性,并掌握划分数据集和调参的基本方法。只有通过合理的调参和最终模型的训练,我们才能得到好的结果,并应用机器学习技术来解决现实问题。

在这里插入图片描述

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

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

相关文章

【springboot】Spring Cache缓存:

文章目录 一、导入Maven依赖&#xff1a;二、实现思路&#xff1a;三、代码开发&#xff1a; 一、导入Maven依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId><…

《C和指针》笔记8: 枚举类型

枚举 (enumerated)类型就是指它的值为符号常量而不是字面值的类型&#xff0c;它们以下面这种形式声明&#xff1a; enum Jar_Type { CUP, PINT, QUART, HALF_GALLON, GALLON };这条语句声明了一个类型&#xff0c;称为Jar_Type。这种类型的变量按下列方式声明&#xff1a; e…

go语言调用python脚本

文章目录 代码gopython 在 go语言中调用 python 程序&#xff0c;你可能会用到 代码 亲测 go 测试 go 文件 func TestR(t *testing.T) {// 设置要执行的Python脚本和参数scriptPath : "../nansen.py"arg1 : "nansen"// 执行Python脚本cmd : exec.Comm…

lnmp架构-mysql

1.MySQL数据库编译 make完之后是这样的 mysql 初始化 所有这种默认不在系统环境中的路径里 就这样加 这样就可以直接调用 不用输入路径调用 2.初始化 重置密码 3.mysql主从复制 配置master 配置slave 当master 端中还没有插入数据时 在server2 上配slave 此时master 还没进…

算法备案与合规性:企业需要知道什么

随着科技的快速发展&#xff0c;算法已成为许多行业的核心驱动力。然而&#xff0c;随着其影响力日益扩大&#xff0c;算法备案与合规性的问题也越来越受到关注。企业需要了解什么&#xff0c;以便在法律框架内安全、有效地运用算法&#xff1f;这篇软文将为您解答。算法备案找…

2.文章复现《热电联产系统在区域综合能源系统中的定容选址研究》(附matlab程序)

0.代码链接 1.简述 光热发电是大规模利用太阳能的新兴方式&#xff0c;其储热系 统能够调节光热电站的出力特性&#xff0c;进而缓解光热电站并网带来的火电机组调峰问题。合理配置光热电站储热容量&#xff0c;能够 有效降低火电机组调峰成本。该文提出一种光热电站储热容 量配…

详细解析Python爬虫代理的使用方法

嗨&#xff0c;大家好&#xff01;作为一名专业的代理IP供应商&#xff0c;我想和你们聊一聊爬虫中常用的代理IP类型以及如何在Python中使用代理IP。相信这篇文章会让你对Python爬虫代理IP的使用有更深入的了解。那么&#xff0c;不多说&#xff0c;让我们开始吧&#xff01; …

lua学习-3 循环和流程控制

这里写目录标题 判断for 循环数值遍历泛型遍历遍历数组遍历对象ipairs 和 pairs的异同 while 循环repeat循环goto基础用法注意事项 判断 for 循环 数值遍历 for exp1,exp2,exp3 do//todoend上述代码是指&#xff1a;从exp1 到exp2 以exp3为步长进行循环并执行todo代码&#…

HLS实现CORDIC算法计算正余弦并上板验证

硬件&#xff1a;ZYNQ7010 软件&#xff1a;MATLAB 2019b、Vivado 2017.4、HLS 2017.4、System Generator 2017.4 1、CORDIC算法计算正余弦 CORDIC算法详细分析网上有很多资料&#xff0c;它的原理是用一系列旋转去逼近目标角度&#xff0c;这一系列旋转的角度为 θ a r c t…

Unity中实现获取InputField选中的文字

一&#xff1a;前言 获取到选中的文字&#xff1a;哈哈 二&#xff1a;实现 UGUI的InputField提供了selectionAnchorPosition和selectionFocusPosition&#xff0c;开始选择时的光标下标和当前光标下标 using UnityEngine; using UnityEngine.EventSystems; using UnityEngin…

蓝蓝设计ui设计公司作品案例-中节能现金流抗压测试软件交互及界面设计

中国节能是以节能环保为主业的中央企业。中国节能以生态文明建设为己任&#xff0c;长期致力于让天更蓝、山更绿、水更清&#xff0c;让生活更美好。经过多年发展&#xff0c;中国节能已构建起以节能、环保、清洁能源、健康和节能环保综合服务为主业的41产业格局&#xff0c;成…

要获取 PHP 中当前时间的前一天、本周、本月、本季度和本年,可以使用 PHP 的内置日期和时间函数。

要获取 PHP 中当前时间的前一天、本周、本月、本季度和本年&#xff0c;可以使用 PHP 的内置日期和时间函数。下面是一些示例代码来帮助你实现这些功能&#xff1a; php // 获取当前时间的前一天 $yesterday date(Y-m-d, strtotime(-1 day));// 获取本周的开始日期和结束日期…

机器视觉-外观缺陷检测已成笑话

外观检测盛行几年,只要做机器视觉工程师,每个人都好奇都想做做。不做不知道,一做吓一跳。我将从各大家一线公司掌握的信息来具体分析外观缺陷检测埋了多少坑: 明显的现象,公司摆了很多设备,都在公司,都没有出售。我从业15年,从来没有经历过有这么多设备待在公司。从来…

基于Java的旅游信息推荐系统设计与实现,springboot+vue,MySQL数据库,前后端分离,完美运行,有三万字论文。

基于Java的旅游信息推荐系统设计与实现&#xff0c;springbootvue&#xff0c;MySQL数据库&#xff0c;前后端分离&#xff0c;完美运行&#xff0c;有三万字论文。 前台主要功能&#xff1a;登录注册、旅游新闻、景区信息、美食信息、旅游线路、现在留言、收藏、预定旅游线路…

docker搭建rocketmq环境

准备局域网 nameserver和broker在同一网段才能够互相访问&#xff0c;我们先创建一个局域网。 创建rocketmq-network&#xff0c;让nameserver、broker在同一个网段&#xff1a; docker network create --driverbridge \ --subnet192.168.2.10/24 rocketmq-network安装names…

深度学习5:长短期记忆网络 – Long short-term memory | LSTM

目录 什么是 LSTM&#xff1f; LSTM的核心思路 什么是 LSTM&#xff1f; 长短期记忆网络——通常被称为 LSTM&#xff0c;是一种特殊的RNN&#xff0c;能够学习长期依赖性。由 Hochreiter 和 Schmidhuber&#xff08;1997&#xff09;提出的&#xff0c;并且在接下来的工作中…

Python自动化小技巧21——实现PDF转word功能(程序制作)

案例背景 为什么这个年代PDF转word&#xff0c;某wps居然还要收费.....很多软件都可以实现这个功能&#xff0c;但是效果都有好有坏&#xff0c;而且有的还付费&#xff0c;很麻烦。 那就用python实现这个功能吧&#xff0c;然后把代码打包为.exe的程序&#xff0c;这样随便在…

Docker容器:docker consul的注册与发现及consul-template守护进程

文章目录 一.docker consul的注册与发现介绍1.什么是服务注册与发现2.什么是consul3.consul提供的一些关键特性4.数据流向 二.consul部署1.consul服务器&#xff08;192.168.198.12&#xff09;&#xff08;1&#xff09;建立 Consul 服务&#xff08;2&#xff09;查看集群信息…

Tomcat10安装及配置教程win11

Tomcat10安装及配置教程win11 Tomcat下载链接 Tomcat官网 Tomcat官网地址 https://tomcat.apache.org/ Tomcat的版本列表 点击上图中左侧红框内**Which version?**即可得下图 下载Tomcat 点击上图中左侧红框内红框内tomcat版本即可得下图&#xff0c;下载zip包 解压zip包…

Maven聚合项目(微服务项目)创建流程,以及pom详解

一、创建流程 1、首先创建springboot项目作为父项目 只留下pom.xml 文件&#xff0c;删除src目录及其他无用文件 2、创建子项目 子项目可以是maven项目&#xff0c;也可以是springboot项目 3、父子项目关联 4、父项目中依赖管理 <?xml version"1.0" encoding…