数据集划分;参数超参数;交叉验证

news/2024/12/18 23:13:04/文章来源:https://www.cnblogs.com/mmhhhlb/p/18613641

在机器学习和深度学习中,将数据分为训练集(Training Set)、验证集(Validation Set)和测试集(Test Set)是常见的做法,每部分数据承担不同的任务:

一.基本概念

1.训练集(Training Set):

  • 训练集用于训练模型,即通过算法调整模型的参数以最小化损失函数(Loss Function)。
  • 模型在训练集上学习数据的特征和模式,以期能够对未知数据做出准确的预测。
  • 训练集通常占整个数据集的60%-80%。

2.验证集(Validation Set):

  • 是模型训练过程中单独留出的样本集,它可以用于调整模型的超参数和用于对模型的能力进行初步评估。 通常用来在模型迭代训练时,用以验证当前模型泛化能力(准确率,召回率等),以决定是否停止继续训练。
  • 验证集并不参与学习参数的确定
  • 验证集用于避免模型过拟合(Overfitting),即模型在训练集上表现很好,但在新数据上表现不佳。
  • 验证集还可以用于模型选择,即在多个候选模型中选择最佳模型。
  • 验证集通常占整个数据集的10%-20%。
  • 学习过程中多次使用
  • 验证集不是必须的

3.测试集(Test Set):

  • 测试集用于在模型训练和验证过程完成后,对模型的最终性能进行评估。
  • 测试集应该完全独立于训练过程,即在训练和验证过程中从未使用过。
  • 不参与学习参数过程,也不参与超参数选择过程
  • 测试集的目的是提供一个公正的评估,以确定模型在未知数据上的泛化能力。
  • 测试集通常占整个数据集的10%-20%。
  • 仅在训练完成后使用一次,评价最终模型的效果

三者关系

三个数据集所用数据是不重叠的,是不同的!

一个形象的比喻:
训练集———–学生的课本;学生 根据课本里的内容来掌握知识。
验证集————作业,通过作业可以知道 不同学生学习情况、进步的速度快慢。
测试集———–考试,考的题是平常都没有见过,考察学生举一反三的能力。

a)训练集直接参与了模型调参的过程,显然不能用来反映模型真实的能力(防止课本死记硬背的学生拥有最好的成绩,即防止过拟合)。
b)验证集参与了人工调参(超参数)的过程,也不能用来最终评判一个模型(刷题库的学生不能算是学习好的学生)。
c) 所以要通过最终的考试(测试集)来考察一个学(模)生(型)真正的能力(期末考试)。

二.参数和超参数

1.参数(Parameters):

  • 参数是模型内部的变量,它们通过训练数据学习得到。
  • 参数是模型的权重(Weights)和偏置(Biases),它们定义了模型的行为。
  • 参数的优化是模型训练过程中的主要目标,通常通过梯度下降或其他优化算法来调整,以最小化损失函数。
  • 参数的值在训练开始前是随机初始化的,然后在训练过程中不断更新。

2.超参数(Hyperparameters):

  • 超参数是模型外部的设置,它们在训练开始之前设定,并且在整个训练过程中保持不变。
  • 超参数用于控制学习过程,包括学习率、批次大小(Batch Size)、迭代次数(Epochs)、网络层数、每层的神经元数量等。
  • 超参数的选择对模型的性能有重要影响,但它们不会直接从数据中学习。
  • 超参数的调整通常需要基于经验和实验,或者使用如网格搜索(Grid Search)、随机搜索(Random Search)或贝叶斯优化等自动化方法。

【插入2】搜索算法

搜索算法通过不断尝试不同的参数和值组合来优化模型性能,先定义一个目标变量(如准确度)作为主要指标,使用交叉验证技术来确保模型不会过度依赖于数据中的某一部分。在每次迭代后,都需要评估模型的性能,根据统计分析选择最佳超参数组合。这个过程可能会重复多次,直到找到满意的结果或达到预定的迭代次数

搜索算法可以用来调整超参数,常见的方法包括:

  • 网格搜索(Grid Search):尝试所有可能的超参数组合来找到最佳匹配。【插入】网格搜索(Grid Search)可以被视为一种完全搜索(Exhaustive Search)的方法,但它专门用于超参数优化领域。在网格搜索中,你定义了一个参数网格,这个网格包含了你想要测试的所有超参数的值。然后,网格搜索会遍历这个网格中的所有可能的超参数组合,并使用交叉验证来评估每种组合的性能。
  • 随机搜索(Random Search):在超参数的可能值范围内随机选择组合进行评估。
  • 贝叶斯优化(Bayesian Optimization):一种基于概率模型的优化方法,它利用先前的评估结果来指导后续的超参数选择,以减少需要评估的超参数组合数量。
  • 遗传算法(Genetic Algorithms):通过模拟自然选择的过程来搜索最优超参数,这种方法具有较强的全局优化能力和适应性。
  • 基于梯度的优化(Gradient-based Optimization):当超参数可微时,可以使用梯度信息来优化超参数,这种方法适用于连续参数空间。
  • 强化学习(Reinforcement Learning):通过与环境的交互来学习最佳行为,这种方法可以用于超参数优化,通过奖励机制来引导搜索过程。

除了超参数调整,搜索算法在机器学习和数据挖掘中还有其他应用,例如:

  • 特征选择:用于选择对模型性能影响最大的特征。
  • 模型选择:在多个候选模型中选择最佳模型。
  • 算法配置:自动调整算法参数以提高性能。
  • 网络爬虫:在互联网上搜索并获取信息,涉及到在网页链接图中的搜索问题。
  • 路径规划:在导航应用中从一个位置到另一个位置的路径搜索。
  • 游戏AI:在棋类游戏中预测对手的移动,并决定自己的下一步棋。

【插入1】训练参数的方法(优化算法)

训练参数,即训练机器学习模型中的权重和偏置,通常涉及到以下方法:

  • 梯度下降(Gradient Descent):最常用的优化算法,通过计算损失函数关于参数的梯度来迭代更新参数。
  • 随机梯度下降(Stochastic Gradient Descent, SGD):与梯度下降类似,但在每次迭代中只使用一个训练样本或一个小批量样本来计算梯度。
  • 小批量梯度下降(Mini-batch Gradient Descent):结合了梯度下降和SGD的特点,每次迭代使用数据的小批量来计算梯度。
  • 动量(Momentum):在梯度下降中加入动量项,以加速梯度下降的收敛并减少震荡。
  • 自适应学习率方法:如AdaGrad、RMSprop、Adam(Adaptive Moment Estimation)等,这些方法通过调整学习率来提高训练效率。
  • 学习率衰减(Learning Rate Decay):随着训练的进行逐渐减小学习率,以提高模型的收敛精度。
  • 牛顿法(Newton's Method):使用损失函数的二阶导数(Hessian矩阵)来寻找参数更新的方向和步长。
  • 拟牛顿法(Quasi-Newton Methods):如BFGS(Broyden-Fletcher-Goldfarb-Shanno)和L-BFGS(Limited-memory BFGS),这些方法近似牛顿法的Hessian矩阵,以降低计算成本。
  • 共轭梯度法(Conjugate Gradient Method):适用于解决大型线性方程组,也可以用于优化问题。
  • 进化策略(Evolution Strategies, ES):一种基于自然选择和遗传变异的优化方法,适用于高维和非凸优化问题。
  • 模拟退火(Simulated Annealing):一种概率性优化算法,通过模拟物理退火过程来逃离局部最优解。
  • 优化器的组合:在实际应用中,可能会结合多种优化方法,如使用动量和自适应学习率的组合(如Adam)。

常见的机器学习算法通常使用以下方法来训练模型参数:

  • 逻辑回归(Logistic Regression):通常使用梯度下降或其变体(如随机梯度下降)来优化损失函数,这里是对数损失或交叉熵损失。
  • 决策树(Decision Trees):决策树的训练是一个递归的分割过程,不需要优化算法来调整参数。但是,对于树的复杂性可以通过剪枝(Pruning)来控制。
  • 随机森林(Random Forest):随机森林是由多个决策树组成的集成学习算法。每棵树的训练过程与单个决策树相同,不需要特定的优化算法。
  • 支持向量机(SVM):SVM的训练涉及到求解一个凸二次规划问题,通常使用序列最小优化(SMO)算法或内点法(Interior-Point Method)来找到最优的权重和偏置。
  • K最近邻(KNN):KNN是一种基于实例的学习算法,它不涉及训练参数的过程。分类或回归是基于测试点最近的K个邻居的标签或值。
  • 人工神经网络(ANN):ANN的训练通常使用梯度下降或其变体(如SGD、Adam、RMSprop等)来优化损失函数,并通过反向传播算法来更新网络权重。
  • 多层感知器(MLP):MLP是ANN的一种,其训练方法与ANN相同,使用梯度下降或其变体来优化损失函数。
  • 朴素贝叶斯分类器(Naive Bayes Classifier):朴素贝叶斯分类器的训练涉及到计算每个类别的条件概率。对于离散特征,通常使用频率估计;对于连续特征,可以使用高斯分布或其他概率分布。
  • 集成方法(Ensemble Methods):除了随机森林,其他集成方法如AdaBoost、Gradient Boosting和XGBoost也使用特定的算法来训练模型,这些算法通过迭代地训练模型并调整权重来优化整体性能。
  • 深度学习模型(Deep Learning Models):深度学习模型,如卷积神经网络(CNN)和循环神经网络(RNN),通常使用Adam、RMSprop或其他自适应学习率优化算法来训练。

三.交叉验证

交叉验证是在机器学习建立模型和验证模型参数时常用的办法,一般被用于评估一个机器学习模型的表现。更多的情况下,我们也用交叉验证来进行模型选择(model selection)。交叉验证法的作用就是尝试利用不同的训练集/验证集划分来对模型做多组不同的训练/验证,来应对单独测试结果过于片面以及训练数据不足的问题。

k-折交叉验证
1.将数据集分为训练集和测试集,测试集放在一边。
2.将训练集分为 k 份,每次使用 k 份中的1 份作为验证集,其他全部作为训练集。
3.通过 k 次训练后,得到了 k 个不同的模型。
4.评估 k 个模型的效果,取这里K次的记录误差平均值,作为最终评价模型性能的结果
或4.(模型选择的情况)评估 k 个模型的效果,从中挑选效果最好的超参数。(在模型选择时,假设模型有许多超参数可供调参,一组超参数便确定一个模型,计算其交叉验证误差,最后选择使得交叉验证误差最小的那一组超参数,这便是模型选择过程。)。使用最优的超参数,然后将 k 份数据全部作为训练集重新训练模型,得到最终所需模型,最后再到测试集上测试。

如何确定k值?

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

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

相关文章

爱米导航网(imi),您的互联网书签搭子

爱米导航(Imi)网是一个综合性的互联网资源聚合平台,它以其丰富的内容和便捷的服务受到了广大用户的喜爱。该网站收录了数千个不同类型的互联网工具网站,覆盖了AI工具、自媒体运营工具、产品经理工具以及UI设计师工具等多个领域,为用户提供了一个一站式的解决方案。 爱米导…

记录一次springboot启动流程不完整版

1.Sort ApplicationInitializer:2.sort Listener:3.getRunListener:4.eventPublishingRunListener.starting 发布启动中事件; 构建 ApplicationArguments 参数, 4.1prepareEnvement: [StubPropertySource {name=servletConfigInitParams}, StubPropertySource {name=servletC…

键盘连击软件解决方案

解决的问题 jjjjjjjjjjjjjjjj键盘连击了,windows系统中的“筛选键”功能就能短暂解决这个问题,可是筛选的时间太长无法在面板设置更短的时间,但可以使用软件解决。 方法一 系统 筛选键 win+i 打开设置 -> 搜索“筛选键” -> 打开筛选键开关 使用限制:重复键最低只能设…

【建议收藏】最新版IDEA2024.3及 AI Assistant 一键激活到2099

成功永久激活 一、支持的IDE和版本支持JB家族所有IDE激活 支持版本为2021.3~2024.1二、如何破解激活 第一步:激活工具下载 为了防止破解工具被删除,通过公众号回复“「永久激活」”获取下载最新工具(如过期,请记得提醒我哦) 关注公众号后台回复“「永久激活」”,获取最新…

《平衡树》读后感

第一框,世界属于fhq-treap 是什么? 你说的对,但是《fhq-treap》是由范浩强自主研发的一款全新树形数据结构。数据结构发生在一个被称作「二叉搜索树」的幻想世界,在这里,被人创造的节点将被授予「随机优先级」,导引期望 \(O(\log n)\) 之力。treap 将扮演一位名为「根据优…

虚拟机unraid系统安装

首先下载unraid文件https://unraid.net/getting-started windows系统使用vmware虚拟机 创建虚拟机过程中注意usb的不同协议 2.0 3.0 由于unraid系统只能识别fat32协议的文件系统,因此需要将u盘格式化 可以使用easeus 或者 傲梅 https://www.easeus.com/partition-manager/ htt…

基于.NET WinForm开发的一款硬件及协议通讯工具

前言 今天大姚给大家分享一款基于.NET WinForm开发的一款硬件及协议通讯工具:PLC-CommunTools。 项目介绍 PLC-CommunTools是一款基于.NET WinForm开发的一款硬件及协议通讯工具,包含各类厂商的PLC协议及基础的TCP、串口通讯、IO口通讯等协议通讯功能的实现整合,注意还有一部…

游戏过程

根据是否结束游戏的逻辑选择对掷骰子的过程用bool申明变量掷骰子 static bool RollDice (w,h,ref Player p1,ref Player p2,Map map) {InfoClear(h);Console.ForegroundColor=p1.type==E_PlayerType.Player?ConsoleColor.Cyan:ConsoleColor.Meganta;if(p1.isPause){p1.isPause…

6.Group组件

关于Group组件的简单介绍首先,Group组件本身并不是一个“布局”类的组件,它只是一个容器,没有提供调整内部组件展示位置的方法,也就是说,当我们将多个组件(比如button)放在group中时,他们(根据流式规则?)会全部挤在窗口的左上角,当然,如果我们没有设置组件的大小的话…

直播预告:OpenAI 开始拥抱 RTC!为什么 LLM+RTC 才是多模态 AI 的未来?丨RTE Dev Talk

如果您正在开发具备语音对话、视觉理解等多模态能力的 AI Agent,请加入我们的直播讨论!OpenAI 今日发布了 OpenAI Realtime API 的重大更新,其中包括价格下调、新增模型以及一项尤为重要的改进: WebRTC 支持 。结合此前 WebRTC 创建者加入 OpenAI 的消息,这清晰地表明 Ope…

实验6 模板类、文件I/O与异常处理

实验四 vector.hpp#pragma once#include<iostream>#include<stdexcept>using namespace std;template<typename T>class Vector {private:int size;T* ptr;public:Vector(int size, int value = 0) :size{ size } {if (size < 0) {throw length_error(&qu…

把半年前完全没思路的题解了的感觉真好

虽然处理了很多次索引思路,不过最后还是过了。第一眼就有解题思路,这种感觉真不错,要的就是这种打怪升级的正反馈。 附上解题代码 `# @lc app=leetcode.cn id=2266 lang=python3[2266] 统计打字方案数@lc code=start from collections import Counter from functools import…