机器学习策略篇:详解开发集和测试集的大小(Size of dev and test sets)
在深度学习时代,设立开发集和测试集的方针也在变化。
可能听说过一条经验法则,在机器学习中,把取得的全部数据用70/30比例分成训练集和测试集。或者如果必须设立训练集、开发集和测试集,会这么分60%训练集,20%开发集,20%测试集。在机器学习的早期,这样分是相当合理的,特别是以前的数据集大小要小得多。所以如果总共有100个样本,这样70/30或者60/20/20分的经验法则是相当合理的。如果有几千个样本或者有一万个样本,这些做法也还是合理的。
但在现代机器学习中,更习惯操作规模大得多的数据集,比如说有1百万个训练样本,这样分可能更合理,98%作为训练集,1%开发集,1%测试集,用\(D\)和\(T\)缩写来表示开发集和测试集。因为如果有1百万个样本,那么1%就是10,000个样本,这对于开发集和测试集来说可能已经够了。所以在现代深度学习时代,有时拥有大得多的数据集,所以使用小于20%的比例或者小于30%比例的数据作为开发集和测试集也是合理的。而且因为深度学习算法对数据的胃口很大,可以看到那些有海量数据集的问题,有更高比例的数据划分到训练集里,那么测试集呢?
要记住,测试集的目的是完成系统开发之后,测试集可以帮评估投产系统的性能。方针就是,令的测试集足够大,能够以高置信度评估系统整体性能。所以除非需要对最终投产系统有一个很精确的指标,一般来说测试集不需要上百万个例子。对于的应用程序,也许想,有10,000个例子就能给足够的置信度来给出性能指标了,也许100,000个之类的可能就够了,这数目可能远远小于比如说整体数据集的30%,取决于有多少数据。
对于某些应用,也许不需要对系统性能有置信度很高的评估,也许只需要训练集和开发集。认为,不单独分出一个测试集也是可以的。事实上,有时在实践中有些人会只分成训练集和测试集,他们实际上在测试集上迭代,所以这里没有测试集,他们有的是训练集和开发集,但没有测试集。如果真的在调试这个集,这个开发集或这个测试集,这最好称为开发集。
不过在机器学习的历史里,不是每个人都把术语定义分得很清的,有时人们说的开发集,其实应该看作测试集。但如果只要有数据去训练,有数据去调试就够了。打算不管测试集,直接部署最终系统,所以不用太担心它的实际表现,觉得这也是很好的,就将它们称为训练集、开发集就好。然后说清楚没有测试集,这是不是有点不正常?绝对不建议在搭建系统时省略测试集,因为有个单独的测试集比较令安心。因为可以使用这组不带偏差的数据来测量系统的性能。但如果的开发集非常大,这样就不会对开发集过拟合得太厉害,这种情况,只有训练集和测试集也不是完全不合理的。不过一般不建议这么做。
总结一下,在大数据时代旧的经验规则,这个70/30不再适用了。现在流行的是把大量数据分到训练集,然后少量数据分到开发集和测试集,特别是当有一个非常大的数据集时。以前的经验法则其实是为了确保开发集足够大,能够达到它的目的,就是帮评估不同的想法,然后选出\(A\)还是\(B\)更好。测试集的目的是评估最终的成本偏差,只需要设立足够大的测试集,可以用来这么评估就行了,可能只需要远远小于总体数据量的30%。
所以希望本随笔能给们一点指导和建议,知道如何在深度学习时代设立开发和测试集。
机器学习策略篇:详解开发集和测试集的大小(Size of dev and test sets)的更多相关文章
- 机器学习入门06 - 训练集和测试集 (Training and Test Sets)
原文链接:https://developers.google.com/machine-learning/crash-course/training-and-test-sets 测试集是用于评估根据训练 ...
- 斯坦福大学公开课机器学习:advice for applying machine learning | model selection and training/validation/test sets(模型选择以及训练集、交叉验证集和测试集的概念)
怎样选用正确的特征构造学习算法或者如何选择学习算法中的正则化参数lambda?这些问题我们称之为模型选择问题. 在对于这一问题的讨论中,我们不仅将数据分为:训练集和测试集,而是将数据分为三个数据组:也 ...
- sklearn获得某个参数的不同取值在训练集和测试集上的表现的曲线刻画
from sklearn.svm import SVC from sklearn.datasets import make_classification import numpy as np X,y ...
- 随机切分csv训练集和测试集
使用numpy切分训练集和测试集 觉得有用的话,欢迎一起讨论相互学习~Follow Me 序言 在机器学习的任务中,时常需要将一个完整的数据集切分为训练集和测试集.此处我们使用numpy完成这个任务. ...
- sklearn学习3----模型选择和评估(1)训练集和测试集的切分
来自链接:https://blog.csdn.net/zahuopuboss/article/details/54948181 1.sklearn.model_selection.train_test ...
- sklearn——train_test_split 随机划分训练集和测试集
sklearn——train_test_split 随机划分训练集和测试集 sklearn.model_selection.train_test_split随机划分训练集和测试集 官网文档:http: ...
- Sklearn-train_test_split随机划分训练集和测试集
klearn.model_selection.train_test_split随机划分训练集和测试集 官网文档:http://scikit-learn.org/stable/modules/gener ...
- csv数据集按比例分割训练集、验证集和测试集,即分层抽样的方法
一.一种比较通俗理解的分割方法 1.先读取总的csv文件数据: import pandas as pd data = pd.read_csv('D:\BaiduNetdiskDownload\weib ...
- 将dataframe分割为训练集和测试集两部分
data = pd.read_csv("./dataNN.csv",',',error_bad_lines=False)#我的数据集是两列,一列字符串,一列为0,1的labelda ...
- 用python制作训练集和测试集的图片名列表文本
# -*- coding: utf-8 -*- from pathlib import Path #从pathlib中导入Path import os import fileinput import ...
随机推荐
- JavaScript语法-字符串模板
目录 JavaScript 模板字符串 代码 问题 初学者容易出现的错误 调用函数的情况 JavaScript 模板字符串 代码 以下是index.js的部分代码: onShareAppMessage ...
- 不到2000字,轻松带你搞懂STM32中GPIO的8种工作模式
大家好,我是知微! 学习过单片机的小伙伴对GPIO肯定不陌生,GPIO (general purpose input output)是通用输入输出端口的简称,通俗来讲就是单片机上的引脚. 在STM32 ...
- #特殊判断#牛客练习赛71 A 回文数
题目 分析 首先出现奇数次的数超过1显然无解 并且只有多个0或者只有一个非0数字并且其它都是0也无解 然后由于没有前导0所以先要找到最小的非0数,先占据首尾 最后按照常规方法前一半从左到右依次递增 注 ...
- #排列组合,容斥#洛谷 5684 [CSPJX2019]非回文串
题目 分析 那显然就是\(n!\)减去回文串的方案数 首先如果有超过一个出现奇数次字母那肯定不存在回文串 如果有且仅有一个首先要在次数中选择一个然后其它当偶数处理 偶数那就是首先字母位置选好但顺序可以 ...
- #莫比乌斯反演#ZOJ 3435 Ideal Puzzle Bobble SP7001 VLATTICE
ZOJ 3435 Ideal Puzzle Bobble SP7001 VLATTICE - Visible Lattice Points(洛谷题目传送门) SP7001 VLATTICE - Vis ...
- 如何用 Prometheus Operator 监控 K8s 集群外服务?
前言 前面系列文章中: Prometheus Operator 与 kube-prometheus 之一 - 简介 - 东风微鸣技术博客 (ewhisper.cn) 监控 Kubernetes 集群证 ...
- 建议收藏!Harmony应用配置文件概述(Stage模型)
一. 应用配置文件 每个应用项目必须在项目的代码目录下加入配置文件,这些配置文件会向编译工具.操作系统和应用市场提供应用的基本信息. 在基于Stage模型开发的应用项目代码下,都存在一个app.jso ...
- docker 应用篇————portainer[九]
前言 简单介绍一下portainer. 正文 运行一下. docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/va ...
- 重新点亮linux 命令树————文件列表查看命令[二]
前言 整理一下文件查看命令 正文 主要是pwd和ls命令 pwd 这个是一个非常常用的命令,在shell脚本中基本都有,表示的是当前目录. 这是一个非常简单,但是非常实用的命令. 通过使用pwd -- ...
- RestfulApi 学习笔记——查询与过滤还有搜索(五)
前言 过滤和查询感觉是一个样子,实际上是不同含义.查询是查询一个主体,如果说要查询全部男职工但是名字中带良的,全部男职工 就是主体要查询的对象,然后名字中带良的表示的是过滤. 那么什么是搜索呢?搜索是 ...