转自 https://www.cnblogs.com/rainsoul/p/6373385.html

在以前的网络训练中,有关于验证集一直比较疑惑,在一些机器学习的教程中,都会提到,将数据集分为三部分,即训练集,验证集与测试集,但是由于工作中涉及到的都是神经网络的训练,大部分的情况是将数据集分为train以及test两部分,直接用train set进行网络的训练,test set进行accuracy的测试,最后在选取accuracy最高的迭代次数所对应的模型使用,一直延续的就是这样一个套路,对于验证集的疑惑一直没有得到解决。

今天看到了一篇博客,对于这个问题的分析较为透彻,我才弄明白了一点,下面是自己的一点理解,写在这里,供以后查阅,也希望看到的网友们能够给我指点错误,共同学习。

首先要明确的一点是,验证集以及交叉验证是用于模型选取过程中的,而不是模型训练过程中的!

我的疑问产生的原因是,我没有完整的走完整个机器学习的全过程,正常情况下,采用机器学习的方法解决一个实际问题的过程应该大致包括以下几个步骤:问题抽象-》模型选择-》模型训练-》模型应用。但是由于我一开始接触机器学习就是神经网络方面的东西,通常都是拿到一个公认的性能比较好的网络模型,用自己的数据集进行训练,调整模型的参数,使该模型适用与我们当前的数据集。这样的一个过程实际上相当于承认了我所选择的神经网络的网络架构是一个“最优”的模型了(这个“最优”是大牛们验证得到的结果),将“问题抽象-》模型选择”这两个步骤都省略掉了(大牛们替我做过了),只做了后面的两个步骤,那么此时根本就没有模型选取的过程,也就没有采用验证集的必要性了,这也就是我为什么没有见过验证集出现的原因了。

这里附上莫烦的教程,检验神经网络,从why和how两个维度展开。

明确了上面的原因之后,那么验证集以及交叉验证等方法就可以按照下面的过程进行理解了:

1、有一个实际问题需要用机器学习的方式进行求解,首先对该问题进行数学上的抽象(用数学语言进行描述,向量化特征表示等过程);

2、对于该问题,采取机器学习的方式进行解决的话,有n个可供选择的模型model1, model2,......modeln(比如这n个模型可以是不同阶次的拟合多项式);

3、将我们所拥有的数据集分为三部分(数据集充足的前提下,不充足的时候则用交叉验证的手段),分别对这n个模型的性能进行评估,得到“最优”的模型modelk;

4、将所有数据都用作训练集,对modelk进行训练,得到modelk的最优参数。

总结一句,就是验证集合是在没有确定什么模型最优的时候采用的,确定下来之后,就可以将所有的数据集都用作训练,得到最优的模型参数。

机器学习中的train valid test以及交叉验证的更多相关文章

  1. MATLAB曲面插值及交叉验证

    在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点.插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值.曲面插值是对三维数据进行离 ...

  2. [深度概念]·K-Fold 交叉验证 (Cross-Validation)的理解与应用

    K-Fold 交叉验证 (Cross-Validation)的理解与应用 我的网站 1.K-Fold 交叉验证概念 在机器学习建模过程中,通行的做法通常是将数据分为训练集和测试集.测试集是与训练独立的 ...

  3. K-Fold 交叉验证

    转载--原文地址 www.likecs.com 1.K-Fold 交叉验证概念 在机器学习建模过程中,通行的做法通常是将数据分为训练集和测试集.测试集是与训练独立的数据,完全不参与训练,用于最终模型的 ...

  4. 机器学习:weka中Evaluation类源码解析及输出AUC及交叉验证介绍

    在机器学习分类结果的评估中,ROC曲线下的面积AOC是一个非常重要的指标.下面是调用weka类,输出AOC的源码: try { // 1.读入数据集 Instances data = new Inst ...

  5. 机器学习——交叉验证,GridSearchCV,岭回归

    0.交叉验证 交叉验证的基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set or test set) ...

  6. 机器学习基础:(Python)训练集测试集分割与交叉验证

    在上一篇关于Python中的线性回归的文章之后,我想再写一篇关于训练测试分割和交叉验证的文章.在数据科学和数据分析领域中,这两个概念经常被用作防止或最小化过度拟合的工具.我会解释当使用统计模型时,通常 ...

  7. 斯坦福大学公开课机器学习:advice for applying machine learning | model selection and training/validation/test sets(模型选择以及训练集、交叉验证集和测试集的概念)

    怎样选用正确的特征构造学习算法或者如何选择学习算法中的正则化参数lambda?这些问题我们称之为模型选择问题. 在对于这一问题的讨论中,我们不仅将数据分为:训练集和测试集,而是将数据分为三个数据组:也 ...

  8. python 机器学习中模型评估和调参

    在做数据处理时,需要用到不同的手法,如特征标准化,主成分分析,等等会重复用到某些参数,sklearn中提供了管道,可以一次性的解决该问题 先展示先通常的做法 import pandas as pd f ...

  9. [机器学习] 训练集(train set) 验证集(validation set) 测试集(test set)

    在有监督(supervise)的机器学习中,数据集常被分成2~3个即: 训练集(train set) 验证集(validation set) 测试集(test set) 一般需要将样本分成独立的三部分 ...

随机推荐

  1. MySQL关于root密码修改

    (转载) 方法一:在mysql系统外,使用mysqladmin修改mysqladmin -u root -p password "test123"Enter password: [ ...

  2. key单片机按键抖动

    //write by:cyt //Time:2017-2-10 //Porject Name:key shake_destory #include<reg51.h> #define GPI ...

  3. 《Pro SQL Server Internals, 2nd edition》

    设计和优化索引 定义一种应用于所有地方的索引策略是不可能的.每个系统都是独特的,需要基于工作,业务需求和其他一些因素的自己的索引方法.然而,有几个设计的注意事项和指导方针可以被应用到每个系统. 在我们 ...

  4. 高分一号计算NDVI

    1.准备工作 如果想要ENVI友好一点,请下载ENVI5.3,并且安装China satellites 补丁(参考博客:ENVI扩展工具:中国国产卫星支持工具) App Store for ENVI下 ...

  5. ios外部链接或者app唤起自己的app

    唤起自己的app,其实都是通过链接,关于这个需要了解下scheme,自己和调用方对接下协议,这里只是说明下到自己app指定页的问题 唤起自己的app分为两种情况 一.自己的app已经启动,那么唤起自己 ...

  6. Mac pip install mysql-python

    首次在mac os 下,用pip install MySQL-Python时经常出现如下错误: sh: mysql_config: command not foundTraceback (most r ...

  7. 尝鲜svnup

    最近有同事折腾了一下svnup的编译,终于可以在Mac OS X和Linux上面编译通过了,仓库在这里:https://github.com/lvzixun/svnup/ svnup这个工具只有一个功 ...

  8. SQLalchemy 字段类型

    常用的SQLAlchemy列选项 类型名 python中类型 说明 Integer int 普通整数,一般是32位 SmallInteger int 取值范围小的整数,一般是16位 BigIntege ...

  9. POJ - 1222: EXTENDED LIGHTS OUT (开关问题-高斯消元)

    pro:给定5*6的灯的状态,如果我们按下一个灯的开关,它和周围4个都会改变状态.求一种合法状态,使得终状态全为关闭: sol:模2意义下的高斯消元. 终于自己手打了一个初级板子. #include& ...

  10. Python:从入门到实践--第六章--字典--练习

    #1.人:使用一个字典来存储一个熟人的信息;包括姓,名,年龄和居住的城市.将字典中的每项信息都打印出来 friend = { 'last_name':'马', 'first_name':'脑壳', ' ...