zoukankan      html  css  js  c++  java
  • 机器学习之训练集_验证集_测试集

      在NG的ML课程中和西瓜书中都有提到:最佳的数据分类情况是把数据集分为三部分,分别为:训练集(train set),验证集(validation set)和测试集(test set)。那么,验证集和测试集有什么区别呢?

      实际上,两者的主要区别是:验证集用于进一步确定模型的参数(或结构)而测试集只是用于评估模型的精确度!
      举个例子:假设建立一个BP神经网络,对于隐含层的节点数目,我们并没有很好的方法去确定。此时,一般将节点数设定为某一具体的值,通过训练集训练出相应的参数后,再由交叉验证集去检测该模型的误差;
    然后再改变节点数,重复上述过程,直到交叉验证误差最小。此时的节点数可以认为是最优节点数,即该节点数(这个参数)是通过交叉验证集得到的。而测试集是在确定了所有参数之后,根据测试误差来评判这个学
    习模型的。所以,验证集主要主要是用于模型的调参。

      训练集,验证集,测试集这三个名词在机器学习领域的文章中很常见,以下是这三个词的英文解释。 

    Training set: A set of examples used for learning, which is to fit the parameters [i.e., weights] of the classifier. 

    Validation set: A set of examples used to tune the parameters [i.e., architecture, not weights] of a classifier, for example to choose the number of hidden units in a neural network. 

    Test set: A set of examples used only to assess the performance [generalization] of a fully specified classifier. 

    训练集:学习样本数据集,通过匹配一些参数来建立一个分类器。建立一种分类的方式,主要是用来训练模型的。

    验证集:对学习出来的模型,微调分类器的参数,如在神经网络中选择隐藏单元数。验证集还用来确定网络结构或者控制模型复杂程度的参数。

    测试集:主要用于测试训练好的模型的分类能力(识别率等)

    显然,training set是用来训练模型或确定模型参数的,如ANN中权值等; validation set是用来做模型选择(model selection),即做模型的最终优化及确定的,如ANN的结构;而 test set则纯粹是为了测试已经训练好的模型的推广能力。

    但实际应用中,一般只将数据集分成两类,即training set 和test set,大多数文章并不涉及validation set。 

  • 相关阅读:
    如何阅读论文
    我的算法学习之路
    blazor wasm访问非本地的restful service
    ionic + asp.net core webapi + keycloak实现前后端用户认证和自动生成客户端代码
    在ef core中使用postgres数据库的全文检索功能实战之中文支持
    在ef core中使用postgres数据库的全文检索功能实战
    .net core grpc单元测试
    asp.net core + entity framework core 多数据库类型支持实战
    asp.net core计划任务探索之hangfire+redis+cluster
    Keycloak & Asp.net core webapi 整合跳坑之旅
  • 原文地址:https://www.cnblogs.com/hust-yingjie/p/7085891.html
Copyright © 2011-2022 走看看