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。 

  • 相关阅读:
    C#预编译指令
    net 数据库连接详解 相当经典啊
    C#中参数前缀ref、out的使用
    C#中HTML字符转换函数
    SQL语句【TSQL汇总】
    64位XP操作系统下访问Access数据库的问题及解决
    ASP.NET Cache的一些总结
    xml 总结
    POJ 1011 Sticks
    POJ 3278 Catch That Cow
  • 原文地址:https://www.cnblogs.com/hust-yingjie/p/7085891.html
Copyright © 2011-2022 走看看