首页 > 其他分享 >数据集划分;参数超参数;交叉验证

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

时间:2024-12-18 23:20:25浏览次数:5  
标签:训练 交叉 模型 验证 学习 参数 优化

在机器学习和深度学习中,将数据分为训练集(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值?

标签:训练,交叉,模型,验证,学习,参数,优化
From: https://www.cnblogs.com/mmhhhlb/p/18613641

相关文章

  • 使用 R 语言实现验证码识别
    在R中,我们可以使用tesseract包与TesseractOCR引擎进行验证码识别。这个包提供了对Tesseract的简单接口。步骤安装TesseractOCR引擎首先,你需要安装Tesseract引擎。可以通过以下方式安装:Linux:bashsudoapt-getinstalltesseract-ocrmacOS:bashbrewinstall......
  • 改善方案设置与配置参数达到标准化的统一
    前期开发,直接把图片以数据流形式存储于数据库表中,随着图片上传越来越多,显示于出来时,效率与性能直接受到影响。现在,只能把已经上传的图片,处理为实际图片文件,存在磁盘文件夹里。在转存时,每张图片顺便生成其缩略图,在显示时,先显示缩略图,浏览者想看原图时,再进一步操作。不管是让系统管......
  • VOLTE网络中SIP消息的registration-token参数
    在VOLTE网络中,通信业务标识(Feature-CapabilityIndicator,或者字面翻译成“特性能力指示符”)是经常出现在SIPHeader中的一个参数,其取值和说明可参见3GPPTS24.237。这里简要介绍其中之一的g.3gpp.registration-token(在SIPHeader的Contact域出现时也被称作mediafeaturetag[媒......
  • 模型参数量计算(以transformer为例)
    前言模型中常见的可训练层包括卷积层和线性层,这里将给出计算公式并在pytorch下进行验证。计算模型的参数:importtorch.nnasnndefcal_params(model:nn.Module):num_learnable_params=sum(p.numel()forpinmodel.parameters()ifp.requires_grad)num_non_l......
  • LiteGBS国标GB28181设备端接入SDK如何批量配置安防摄像机视频参数?
    随着城市化进程的加速和公共安全需求的日益增长,安防监控行业正迎来前所未有的发展机遇。技术的革新,尤其是人工智能、大数据、物联网和5G技术的应用,正推动安防监控系统向更智能化、网络化和高清化的方向发展。政策的支持、市场需求的扩大以及技术的进步共同塑造了安防监控行业的广......
  • KBPC1510-ASEMI整流桥KBPC1510参数、封装、尺寸
    编辑:llKBPC1510-ASEMI整流桥KBPC1510参数、封装、尺寸型号:KBPC1510品牌:ASEMI封装:KBPC-4正向电流:15A反向电压:1000V引脚数量:4芯片个数:4芯片尺寸:50MIL漏电流:>10ua恢复时间:>2000ns浪涌电流:300A芯片材质:GPP硅芯片正向电压:1.10V封装尺寸:如图特性:整流桥、插件桥堆工作结......
  • 相电压与线电压转换关系Simulink仿真验证
    上一篇博客推到了三相电压线电压与相电压实时值的关系式:  UAB-UCA=3*UAN  UBC-UAB=3*UBN  UCA-UBC=3*UNC软件版本:matlabrR019bSimulink中涉及的模块:powergui;  Three-PhaseSource;  VoltageMeasurement; Add;Scope,MUX通过输入上述名称在工作区......
  • 代理 mitmproxy Python启动时,配置 block_global 参数,使用笔记(三)
    代理mitmproxyPython启动时,配置block_global参数,使用笔记(三)为什么要加block_global=false?,若不加,则只能本地拦截,而移动设备,或非本机请求时则无法被拦截将报错如下:Clientconnectionfrom192.167.6.166killedbyblock_globaloption注意:使用Python的非命令行启动,之前的......
  • ARM银河麒麟/统信UOS安装docker下mysql5.7,全步骤验证
    背景:网上找很多没有这个教程,自己写一个吧系统:银河麒麟v10桌面版/统信UOSv20桌面版架构:ARM64docker版本:20.10.7mysql版本:5.7软件包:dockr-20.10.7.tga、mysql5.7.tar软件包下载地址:将稍后提供,如需要请在评论区留言一、安装docker1.解压和移动docker安装文件tar-zxv......
  • Redis篇之Redis高可用模式参数调优,提高Redis性能
    1.Redis高可用模式核心Redis高可用模式的核心是使用主从复制和自动故障转移机制来确保系统在某些节点发生故障时仍然可以正常工作。常用的高可用架构包括RedisSentinel模式和RedisCluster模式,其中Sentinel模式是为了提供高可用性而专门设计的解决方案。在RedisSent......