Hexo

凡事预则立,不预则废


  • Home

  • Tags

  • Archives

  • Navigation

  • Search

ML——训练集-验证集-测试集

训练集(training set),验证集(validation set)和测试集(test set)


统计学习方法:

  • 训练集: 用于模型训练
  • 验证集: 用于模型选择
  • 测试集: 用于模型评估(原文:用于最终对学习方法的评估)

个人理解:

  • 训练集: 用于模型拟合的数据样本
  • 验证集: 用于模型的选择
    • 不参与训练过程
    • 可用于超参数的调整
    • 可用于判断模型是否过拟合(用于决策何时停止训练过程)
    • 可多次使用
  • 测试集: 用于模型的评估
    • 不参与训练过程
    • 不可用于超参数的调整
    • 只可以使用一次

一些场景说明

做kaggle题目时

  • 不用测试集,因为数据集本来就少,测试集不能用于优化或者选择模型,只能用于评估
  • 此时测试集可以理解为kaggle题目中未知的部分数据
  • 此时从验证集中划分一部分验证集

写论文时

  • 需要训练集用于训练,验证集用于模型选择
  • 并且最终需要测试集用于评估模型和与其他人的模型对比

核心:验证集和测试集不能参与训练模型,测试集不能参与模型选择
模型训练时不能让模型看见验证集
在模型确定前都不能让模型看见测试集


关于K折交叉验证法

  • 统计学习方法中的描述: 交叉验证中每次划分为两部分,一部分用于训练模型,另一部分用于测试模型
  • 理解:上面的两部分,一部分为训练集,另一部分为验证集,在这里面没有测试集

关于网格搜索

  • 用来调超参数的一部分正好称为验证集
  • 除了验证集外,加入写论文做实验需要和其他模型作比较的话需要使用测试集(和验证集以及训练集都不相交)

关于数据划分的比重

  • 训练集:测试集 = 7:3
  • 训练集:验证集:测试集 = 6:2:2
  • 数据量非常多时(比如百万级别),验证集和测试集的比重可以适当缩小,因为验证集的主要目的是选择较好的模型,而测试集的目的是为了测试模型的效果,如果1万条数据足以验证模型的效果,则没必要非得给20万条数据

ML——贝叶斯优化

本文持续更新,主要主要介绍贝叶斯优化

  • 参考链接:
    • 一文详解贝叶斯优化(Bayesian Optimization)原理 - 下里巴程序员的文章 - 知乎
    • 贝叶斯优化/Bayesian Optimization - 代忠祥的文章 - 知乎

关于贝叶斯优化

  • 贝叶斯优化(Bayesian Optimization,简称BO)主要用于解决超参数优化问题,目标是找到一组使得目标函数最大或者最小的超参数
  • BO的最大优势是可以使用非常少的步骤找到一个还不错的超参数组合,而且不需要知道目标函数(模型)的梯度
  • BO使用的场景特点:
    • 需要优化的函数(模型)是非常复杂的
    • 需要优化的函数(模型)对指定的变量(一般指超参数)没有梯度信息(求不出梯度)
  • BO不适合使用的场景包括:
    • 离散问题,即参数是离散的,则不适合使用BO
    • 参数太多,即参数维度过高,此时不适合使用BO
  • 和BO的适用场景和进化算法(如CEM等)比较相似

贝叶斯优化的一般步骤

  • 贝叶斯优化(Bayesian Optimization)算法是一个序列决策过程(Sequential Decision-making Problem),其核心框架是SMBO (Sequential Model-Based Optimization),而贝叶斯优化狭义上特指代理模型为高斯过程回归模型的SMBO,SMBO的一般算法思路如下:
    • 第一步:初始化采样n组参数 \(\{x_1,x_2,…,x_n\}\)
    • 第二步:针对每组参数,观察目标函数(待优化模型)的值(这一步一般需要训练模型或者模拟环境仿真,是成本比较高的操作),将得到的结果组合生成数据集 \(D=\{(x_1,y_1),(x_2,y_2),…,(x_n,y_n)\}\)
    • 第三步:根据数据集D拟合(训练)一个代理模型(Surrogate Model),该代理模型的功能是通过输入 \(x_i\) 预测输出 \(y_i\)
    • 第四步:根据采集函数(Acquisition Function,简称AC Function),选择一个最优参数 \(x_i\)
    • 第五步:观察目标函数(待优化模型)在参数 \(x_i\) 下的输出值 \(y_i\),并将 \((x_i,y_i)\) 添加到数据集D中
    • 循环执行第三步到第五步,直到达到指定的迭代次数
    • 最终:输出数据集D中最优的参数 \(x^*\)

代理模型

  • 代理模型一般是非常容易计算的,或者有梯度的,给出任意的 \(x_i\) 能快速预估 \(y_i\) 的
  • 常见的代理模型可以是:高斯过程回归、随机森林等等。其中,贝叶斯优化狭义上特指代理模型为高斯过程回归模型的SMBO
  • 高斯过程回归可参考:
    • 如何通俗易懂地介绍 Gaussian Process? - 石溪的回答 - 知乎
    • 快速入门高斯过程(Gaussian process)回归预测 - 摸鱼大王二百五的文章 - 知乎

采集函数

  • 通常做法是设计一个采集函数A,对每个采样点x进行打分,分数越高的点越值得被采样
  • 一般来说,采集函数需要满足下面的要求:
    • 在已有的采样点处采集函数的值更小,因为这些点已经被探索过,再在这些点处计算函数值对解决问题没有什么用
    • 探索:在置信区间更宽(方差更大)的点处采集函数的值更大,因为这些点具有更大的不确定性,更值得探索
    • 利用:对最大(小)化问题,在函数均值更大(小)的点处采集函数的值更大,因为均值是对该点处函数值的估计值,这些点更可能在极值点附近
  • 常用的AC Function包括下面几种:
    • Probability of Improvement:
    • Expected Improvement:
    • Entropy Search:
    • Upper Confidence Bound:
1…303304305…352
San Ye

San Ye

Stay Hungry. Stay Foolish.

704 posts
53 tags
© 2026 San Ye
Powered by Hexo
|
Theme — NexT.Gemini v5.1.4