机器学习中的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) 一般需要将样本分成独立的三部分 ...
随机推荐
- 18-09-16如何从pychram的第三方包导入设计器
1 在pychrm 中的操作 2 找到pycharm 中找到对应的包 3 找到设计器中文件夹 后进行复制即可
- 【转】用opencv使摄像头在30fps下捕获1080p的数据
原文:http://blog.sina.com.cn/s/blog_9b493e7b0102xvn6.html opencv可以捕获摄像头数据.如果要读高分辨率和高帧率,可以用如下的设置: captu ...
- python网络编程(UDP+广播)
UDP广播案例,一端发送,多端接受: 发送端: # UDP广播案例 from socket import * from time import sleep # 设定目标地址 dest=('176.21 ...
- Linux 网络编程(一)--Linux操作系统概述
一.Linux的内核版本 Linux内核的编号采用如下编号形式: 主版本号.此版本号.主补丁号.次补丁号 例如:2.6.26.3 第一个数字”2”是主版本号,表示第2大版本. 第二个数字”6”是此版本 ...
- 从.net parallel角度解读spark
对于我这样一个一直工作在.net平台上的developer来讲,Hadoop,Spark,HBase等这些大数据名词比较陌生,对于分布式计算,.net上也有类似的Parallel(我说的不是HDIns ...
- CentOS7的网卡重启方法
1.centos6的网卡重启方法:service network restartcentos7的网卡重启方法:systemctl restart network 2.DNS配置文件:cat /etc/ ...
- Filter 中空指针错误
Filter 是过滤器,凡是通过servlet JSP 的请求需要filter 进行过滤或者拦截操作,保证数据的合法或者逻辑正确性 但是写第一个filter 配置完成后,发现jsp 文件进不去了,直 ...
- 如何才能在python的路上走得更远
刚开始了新的课程,现在又没有什么心情学习了,不知点解就是提不起兴趣去学习,为什么呢?学习python如何才能提起劲,有什么方法可以提上劲学习?
- phpStudy 切换版本后没有权限的问题
在httpd-vhosts.conf配置如下: <VirtualHost *:80> ServerName www.jy.com DocumentRoot "C:\htdocs\ ...
- 利用iftop找出是谁占用了带宽
第一步:安装EPEL源 yum install epel-release 第二部:安装iftop yum install iftop 然后用iftop命令即可查看相关信息 ift ...