ubuntu之路——day10.3 train/dev/test的划分、大小和指标更新
train/dev/test的划分
我们在前面的博文中已经提到了train/dev/test的相关做法。比如不能将dev和test混为一谈。同时要保证数据集的同分布等。
现在在train/dev/test的划分中,我们依然要旧事重提关于same distribution即同分布的概念。
假设我们现在有一种商品来自8个国家,如果我们将四个国家作为train和dev,将另外四个国家作为test,这种做法显然是错的。
因为我们建立的模型的靶点是为了逼近前四个国家的结果,但是在真正测试的时候我们移动了靶点,所以结果肯定是不好的。(当然这其实引入了火热的transfer learning的目标,但显然的我们不能直接这么做)
更好的方法是将这8个国家的样本全部进行组合,然后随机抽取一部分作为开发集,另一部分作为测试集,这就保证了同分布,也保证了目标的一致性。
开发集和测试集的大小
在ML的早期:train set 70% + test set 30% 或者 train set 60% + dev set 20% + test set 20%
这种划分方式在早期的机器学习中是合理的,因为早期的数据是小规模的比如100、1000、10000条数据的时候
在DL的时代:train set 98% + dev set 1% + test set 1%
因为在深度网络的大数据时代,当我们有了几十万条、一百万条甚至更多的数据的时候,利用其中1%作为测试已经是很大的数据了。
开发集的更新和评价指标的更新:
在上面的猫图片分类例子中,如果一个error小的算法看起来比较好,但是它会提供比如porn图等不可接受的服务时,我们就要更改评价指标,比如图中的加权公式,让其在将特定的porn图分类为猫时扩大错误权重,这样最终的error就会变大。
其次有关于train set的更新,比如图片分类如果我们在开发阶段引入了高质量、专业精美的图片,但是在测试时用户上传了手机的低分辨率,表情怪异,光线过度等图片时,其模型的准确率并不高,此时就要更新开发阶段使用的集合。这仍旧是一种同分布的问题。
最新文章
- Effective java笔记(九),并发
- HDU 1532 最大流模板题
- C语言 线性表 双向链式结构 实现
- ASP.net MVC自定义错误处理页面的方法
- G面经Prepare: Valid Preorder traversal serialized String
- MongoDB 启动mongo不带DB
- 基于HTML5 Canvas的网页画板实现教程
- LPC2478的外部中断使用
- 关于php的一些安全知识
- Spring框架Controller层(表现层)针对方法参数是Bean时HttpServletRequest绑定参数值问题解释
- 【官方文档】Nginx模块Nginx-Rtmp-Module学习笔记(三)流式播放Live HLS视频
- Flash Builder4.7安装破解
- python面试题之Python支持什么数据类型?
- 使用maxwell实时同步mysql数据到kafka
- HDU 1542 Atlantis(扫描线)题解
- Python 利用Python操作excel表格之openyxl介绍Part2
- centos7下安装docker(17.4docker监控----prometheus)
- DatagramSocket(邮递员):对应数据报的Socket概念,不需要创建两个socket,不可使用输入输出流。
- 20181013xlVba据成绩条生成图片文件
- css grid 网格布局
热门文章
- 一分钟读懂低功耗蓝牙(BLE)连接数据包
- HashMap简介以及hashCode写法的建议
- WebSocketServer
- python---Numpy模块中创建数组的常用方式代码示例
- 用 Python 加密文件
- Nginx页面图片错误 ERR_CONTENT_LENGTH_MISMATCH
- Java设计模式的6大原则
- [Flutter] Custom a Slider with SliderTheme
- Ural1297 最长回文子串(后缀数组+RMQ)
- 2017.10.1 国庆清北 D1T2 两个逗比捉迷藏