机器学习中的train valid test以及交叉验证
转自 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以及交叉验证的更多相关文章
- MATLAB曲面插值及交叉验证
在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点.插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值.曲面插值是对三维数据进行离 ...
- [深度概念]·K-Fold 交叉验证 (Cross-Validation)的理解与应用
K-Fold 交叉验证 (Cross-Validation)的理解与应用 我的网站 1.K-Fold 交叉验证概念 在机器学习建模过程中,通行的做法通常是将数据分为训练集和测试集.测试集是与训练独立的 ...
- K-Fold 交叉验证
转载--原文地址 www.likecs.com 1.K-Fold 交叉验证概念 在机器学习建模过程中,通行的做法通常是将数据分为训练集和测试集.测试集是与训练独立的数据,完全不参与训练,用于最终模型的 ...
- 机器学习:weka中Evaluation类源码解析及输出AUC及交叉验证介绍
在机器学习分类结果的评估中,ROC曲线下的面积AOC是一个非常重要的指标.下面是调用weka类,输出AOC的源码: try { // 1.读入数据集 Instances data = new Inst ...
- 机器学习——交叉验证,GridSearchCV,岭回归
0.交叉验证 交叉验证的基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set or test set) ...
- 机器学习基础:(Python)训练集测试集分割与交叉验证
在上一篇关于Python中的线性回归的文章之后,我想再写一篇关于训练测试分割和交叉验证的文章.在数据科学和数据分析领域中,这两个概念经常被用作防止或最小化过度拟合的工具.我会解释当使用统计模型时,通常 ...
- 斯坦福大学公开课机器学习:advice for applying machine learning | model selection and training/validation/test sets(模型选择以及训练集、交叉验证集和测试集的概念)
怎样选用正确的特征构造学习算法或者如何选择学习算法中的正则化参数lambda?这些问题我们称之为模型选择问题. 在对于这一问题的讨论中,我们不仅将数据分为:训练集和测试集,而是将数据分为三个数据组:也 ...
- python 机器学习中模型评估和调参
在做数据处理时,需要用到不同的手法,如特征标准化,主成分分析,等等会重复用到某些参数,sklearn中提供了管道,可以一次性的解决该问题 先展示先通常的做法 import pandas as pd f ...
- [机器学习] 训练集(train set) 验证集(validation set) 测试集(test set)
在有监督(supervise)的机器学习中,数据集常被分成2~3个即: 训练集(train set) 验证集(validation set) 测试集(test set) 一般需要将样本分成独立的三部分 ...
随机推荐
- Qt 文件的操作
文件操作是应用程序必不可少的部分.Qt 作为一个通用开发库,提供了跨平台的文件操作能力.从本章开始,我们来了解下 Qt 的文件以及输入输出的功能,也就是 I/O 系统. Qt 通过QIODevice提 ...
- python面向对象之继承/多态/封装
老师说,按继承/多态/封装这个顺序来讲. 子类使用父类的方法: #!/usr/bin/env python # coding:utf-8 class Vehicle: def __init__(sel ...
- Java ASM 技术简介
什么是ASM ASM 是一个 Java 字节码操控框架.它能被用来动态生成类或者增强既有类的功能.ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为. ...
- LimeSDR 无线信号重放攻击和逆向分析
原文链接:https://mp.weixin.qq.com/s/TBYKZR3n3ADo4oDkaDUeIA
- java.lang.ClassNotFoundException: org.apache.storm.topology.IRichSpout
java.lang.NoClassDefFoundError: org/apache/storm/topology/IRichSpout at java.lang.Class.getDeclaredM ...
- 洛谷题解 P1315 【观光公交】
这道题很多人都用的模拟(或者暴力),今天我就写一个"标准"的贪心发给大家.(我这段代码差点超时···也差点超内存···) 主要思路:通过贪心求得最小值即可,把加速器用到乘客最多的两 ...
- 如何开发NPM包
创建包目录 D:\>mkdir mypackage && cd mypackage D:\mypackage>npm init --yes 进入mypackage目录,你会 ...
- django学习:一些疑惑
昨天学习了django的第二天,有一些收获. django的语法很严谨,看上去明明对齐的,但是他却提示说缩进不一致.后来我把前面的空全部删除,全部采用空格,这样就通过了,看样子还是要编程有一个好习惯, ...
- Android Studio 入口程序的设置方法
在src -> main中 ,打开 AndroidManifest.xml 这个文件 下面这里有两个窗口,如果要想把哪个窗口设置成入口窗体,只要把下面红色的放在这个节点中就可以了 <act ...
- 在word中批量更改Mathtype公式的格式
方法参照下面这个链接 还有这个方法