在11.2中,我们提到了一种数据划分的方法,那么怎么衡量这种数据划分方法中的误差呢?

来看一个例子:有20w条各种领域的语音识别数据,2w条汽车语音定位数据

train+dev+test,其中train是20w原始数据+1w汽车数据,dev和test各自都是5k条汽车数据

显然地,train和dev/test此时是不同分布的,如果出现以下情况

基准情况:

train error:1%

dev error:10%

我们不知道如何评估这种误差,因为train和dev是不同分布的,存在可能模型本来很好但是由于汽车数据的噪音等等所以错误上升了。但是也有可能模型本来就不好,所以很难判断真实问题是什么。

情况一:

所以引入train-dev集合,请看下面的划分:

train的20w原始数据+1w汽车数据打乱并random shuffle到train/train-dev中,比如此时train有20w打乱后的数据,train-dev有1w打乱后的数据,dev和test不变,请看以下情况:

train error:1%

train-dev:9%

dev error:10%

此时,train和train-dev是同分布的,所以可以看出这两者的方差variance较大,即使在train集上表现较好,依然无法将其泛化到同分布的train-dev集上,所以我们可以使用改进variance的方法对模型进行改进。

情况二:

train error:1%

train-dev:1.5%

dev error:10%

此时,可以看到variance的问题已经不存在了,但此时将其放入不同分布的dev集合上误差变大,所以我们说这就是数据不匹配的问题

情况三:

train error:10%

train-dev:11%

dev error:12%

注意:此时以human performance为代表的bayes optimal error为0

所以此时出现了可避免误差bias的情况,因为在train集上,误差相较于最优误差有很大差距。

情况四:

train error:10%

train-dev:11%

dev error:20%

注意:此时以human performance为代表的bayes optimal error为0

所以此时出现了两种问题:一.可避免误差bias高;二.数据不匹配

结论:

human performance(bayes error):a%

train error:b%

train-dev:c%

dev error:d%

test error:e%

1.通过衡量a与b的差距,可以看出偏差bias的高低

2.通过衡量b与c的差距,可以看出方差variance的高低

3.通过衡量c与d的差距,可以看出是否存在数据不匹配的问题

4.通过衡量d与e的差距,可以看出模型是否在dev上存在过拟合的问题,如果存在可能需要更大更全面的dev set

最后全新的问题出现了,数据不匹配怎么办?

不幸的是目前为止没有系统性的方案解决这一问题,但是我们仍旧有一些方式可以对这一问题有所帮助,请看11.4 定位数据不匹配

ubuntu之路——day11.3 不匹配数据划分的偏差和方差的更多相关文章

  1. ubuntu之路——day11.4 定位数据不匹配与人工合成数据

    1.人工检验train和dev/test之间的区别: 比如:汽车语音识别中的噪音.地名难以识别等等 2.使得你的训练集更靠近(相似于)dev/test,收集更多类似于dev的数据: 比如:dev中存在 ...

  2. ubuntu之路——day11.7 end-to-end deep learning

    在传统的数据处理系统或学习系统中,有一些工作需要多个步骤进行,但是端到端的学习就是用一个神经网络来代替中间所有的过程. 举个例子,在语音识别中: X(Audio)----------MFCC----- ...

  3. ubuntu之路——day11.6 多任务学习

    在迁移学习transfer learning中,你的步骤是串行的sequential process 在多任务学习multi-task learning中,你试图让单个神经网络同时做几件事情,然后这里 ...

  4. ubuntu之路——day11.5 迁移学习

    在深度学习领域中,最强力的理念之一就是可以将神经网络学习的一种知识应用到另一个独立的任务中. 看上面的例子,首先我们有一个已经完成训练的神经网络,其目标是图像识别,我们有了绿色的1000000张图片并 ...

  5. ubuntu之路——day11.2 快速搭建系统并进行迭代、在不同的划分上进行训练和测试

    快速搭建系统并进行迭代 1.建立dev/test set,并确定你的目标 2.快速建立初始化的系统 3.使用前面提到的bias/variance分析和错误分析来进行模型优化和迭代 针对以上的过程,An ...

  6. ubuntu之路——day11.1 如何进行误差分析

    举个例子 还是分类猫图片的例子 假设在dev上测试的时候,有100张图片被误分类了.现在要做的就是手动检查所有被误分类的图片,然后看一下这些图片都是因为什么原因被误分类了. 比如有些可能因为被误分类为 ...

  7. python之路-Day11

    引子 到目前为止,我们已经学了网络并发编程的2个套路, 多进程,多线程,这哥俩的优势和劣势都非常的明显,我们一起来回顾下 协程 协程,又称微线程,纤程.英文名Coroutine.一句话说明什么是线程: ...

  8. #leetcode刷题之路44-通配符匹配

    给定一个字符串 (s) 和一个字符模式 (p) ,实现一个支持 '?' 和 '*' 的通配符匹配.'?' 可以匹配任何单个字符.'*' 可以匹配任意字符串(包括空字符串).两个字符串完全匹配才算匹配成 ...

  9. #leetcode刷题之路10-正则表达式匹配

    匹配应该覆盖整个字符串 (s) ,而不是部分字符串.说明:s 可能为空,且只包含从 a-z 的小写字母.p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *. 示例 1:输入:s = & ...

随机推荐

  1. oracle命令行导出、导入dmp文件

    1.导出语句: exp test/test@127.0.0.1:1521/orcl file=d:\gpmgt.dmp full=n: 导出test用户数据库对象,full=n表示默认只导出test用 ...

  2. Android笔记(六十一)动态添加组件

    想要一个功能,点击按钮,可以在已有的布局上,新添加一组组件. 动态的创建组件,本质上还是创建组件,只不过是在程序中根据逻辑来创建.大致步骤是找到要创建控件的位置,然后将要创建的组件添加进去. 看代码: ...

  3. linux删除同目录及子目录下统一扩展名的文件

    find . -name '*.csv' -type f -print -exec rm -rf {} \; 利用find去查找文件,点是指当前目录下,引号中是相应的数据的名称,自己可以定义,然后用t ...

  4. PyQt5入门

    PyQt5 是用来创建Python GUI应用程序的工具包.作为一个跨平台的工具包,PyQt可以在所有主流操作系统上运行(Unix,Windows,Mac). 本文描述Windows系统下如何安装Py ...

  5. flutter入门开发的一些坑

    flutter入门开发的一些坑 很久没写博客了,最近在准备物联网比赛,顺便抽出时间学习了一下flutter,花了近2周完成了一个查看博客博文的一个小的APPdemo,随便截了两张图,如下: 首页 博客 ...

  6. 2013.5.4 - KDD第十六天

    昨天下午的时候中秋给我发短信"待会儿上课吧?上课讨论下?",然后我回复"嗯,好的."然后上课的时候中秋说那个方案也许不太好执行,因为他后来看数据了,数据库里面这种"可以从从协同作者进行判断"的例子并不 ...

  7. Xshell 5连接上suse

    # 关闭防火墙 systemctl stop SuSEfirewall2.service systemctl stop SuSEfirewall2_init.service systemctl dis ...

  8. Vue钩子函数

    Vue的生命周期函数 beforeCreate:function(){ console.log('1-beforeCreate 初始化之后'); }, created:function(){ cons ...

  9. href = '' 表示刷新当前页面

    <a href="javascript:;" target="_blank"><img src="../img/focus-slid ...

  10. php自定义函数之内部函数

    内部函数,是指在函数内部又声明了一个函数. 注意事项: 1.内部函数名,不能是已存在的函数名 2.假设在函数a里面定义了一个内部函数,不能定用两次函数a. 我们下面来看代码,你将很快的学习会: < ...