机器学习策略-不匹配的训练和开发/测试数据

觉得有用的话,欢迎一起讨论相互学习~Follow Me

2.4在不同分布上训练和测试数据

  • 在深度学习时代,越来越多的团队使用和开发集/测试集不同分布的数据来训练模型.下面解释一些方法来处理训练集和测试集存在差异的情况.

Example1

  • 假设你要开发一个识别猫的机器学习系统,其中 需要识别的是用户手机上传的猫的图片 这些图片往往清晰度低,取景不专业,识别度低.由于用户量少的缘故,这些图片量很少,只有大约1W张.但是从网上可以下载大量清晰度高,取景专业,辨识度高的猫的图片,大约20W张. 1W张的用户图片是我们真正关心的数据,但是这对于训练模型是远远不够的.所以我们将20W网上下载的高清图片作为训练集,但这和想要实际处理的数据并不一样

Solution1

  • 将20W张高清图片与1W张用户手机上传的模糊图片混合,随机分配到训练,开发和测试集中.假设你已经确定开发集和测试集中各包含2500个样本,训练集包括205000个样本.
  • 这种方式很大的坏处在于:对于 开发集 的2500个样本,大部分来自于网上下载的高清图片.这并不是你真正关心的数据分布.由数学期望我们计算出大约有\(\frac{200K}{210K}=2381\)张图片来自高清数据集,有\(\frac{10K}{210K}=119\)张图片来自于用户上传图片即真正应该关心的数据.
  • 所以这种方式的结果是系统的大部分工作是优化网上下载的高清图片.这并不是我们需要的分布.
  • 这种方式不推荐使用

Solution2

  • 为了避免Solution1中带来的问题,我们将使用网上的高清图片200K张图片和5K张来自用户手机的上传图片作为 训练集,而 开发集测试集 都是2500张不同的手机图片.
  • 这种方式的好处在于:开发集和测试集中的图片来与用户上传的手机图片 这才是你系统真正关心的重点.

Example2

  • 假设你要开发一个智能语音汽车后视镜,你现在有很多语音数据,但是这些都不是来自智能语音后视镜的.下面解释如何来分配训练集,开发集和测试集.
  • 训练集
  • 500K段语音数据:
    • 购买的带标签的语音数据
    • 智能音箱,语音激活音箱数据
    • 语音激活键盘数据
  • 10K段语音激活后视镜数据
  • 开发集/测试集语音数据:
  • 各来自实际语音激活后视镜的数据5K段语音数据.

2.5 不匹配分布的偏差和方差

  • 对于训练集和开发/测试集来自不同的分布的情况而言,我们计算偏差和方差的方法不同.

    Notics

  • 算法只见过训练集数据,没见过开发集数据
  • 开发集数据来自不同的分布
  • 需要辨清开发集上的误差有多少是因为算法没看到开发集中的数据导致的<方差>,多少是因为开发集数据分布本身就不一样<数据不匹配>

    Solution

  • 定义一个新的数据train-dev set 从训练集中抽取数据,和训练集数据来自同一个数据分布,但是不用于训练数据.
  • 分别将分类器在训练集/训练-开发集/开发集上运行,获取其准确率信息
  • 假如在训练集上误差为1%,在训练-开发集上误差为9%,在开发集上误差为10%
    • 分类器在训练集和训练开发集上误差差距较大,这表明算法没有识别没有看到过的数据,这表明分类器本身方差较大
    • 分类器在训练-开发集和开发集上误差差距不大,表明算法误差的差距不是主要由于数据 分布不一样 导致的
  • 假如在训练集上误差为1%,在训练-开发集上误差为1.5%,在开发集上误差为10%
    • 分类器在训练集和训练开发集上误差差距较小,这表明分类器本身方差不大
    • 分类器在训练-开发集和开发集上误差差距很大,表明算法误差的差距主要由于 数据不匹配 导致的


2.6 定位数据不匹配

  • 如果你的训练集和开发/测试集来自不同的数据分布,并且误差分析的结果表明你有一个数据不匹配的问题,这个问题没有标准的解决方案,但是我们可以尝试一些可以做的事情.

Suggestion

  • 做误差分析,并且了解训练集和开发/测试集的具体差异.
  • 人为加工训练集(人工合成数据),使其和开发/测试集更加相近,或者收集更多的类似于开发/测试集的数据.
  • 对于作者举例的语音识别智能后视镜的例子,我们可以先准备大量清晰的音频(不带马路噪音的数据),然后手机汽车噪音的音频,将两者合成后成为人工合成的数据.
  • 但是应该注意,任意重复噪音,容易造成模型对该段噪音的过拟合.最好是不要重复噪音数据,而是收集等长的噪音数据.学习算法有可能取得更好的性能.
  • 当使用人工数据合成时,一定谨记有可能人工合成的数据只是从所有可能性的空间选取了很小一部分去模拟数据.

[DeeplearningAI笔记]ML strategy_2_2训练和开发/测试数据集不匹配问题的更多相关文章

  1. Alink漫谈(七) : 如何划分训练数据集和测试数据集

    Alink漫谈(七) : 如何划分训练数据集和测试数据集 目录 Alink漫谈(七) : 如何划分训练数据集和测试数据集 0x00 摘要 0x01 训练数据集和测试数据集 0x02 Alink示例代码 ...

  2. [DeeplearningAI笔记]ML strategy_1_2开发测试集评价指标

    机器学习策略 ML strategy 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.4 满足和优化指标 Stisficing and optimizing metrics 有时候把你要考 ...

  3. [DeeplearningAI笔记]ML strategy_1_3可避免误差与改善模型方法

    机器学习策略 ML strategy 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.8 为什么是人的表现 今天,机器学习算法可以与人类水平的表现性能竞争,因为它们在很多应用程序中更有生产 ...

  4. [DeeplearningAI笔记]ML strategy_1_1正交化/单一数字评估指标

    机器学习策略 ML strategy 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.1 什么是ML策略 机器学习策略简介 情景模拟 假设你正在训练一个分类器,你的系统已经达到了90%准确 ...

  5. [DeeplearningAI笔记]ML strategy_2_1误差分析

    机器学习策略-误差分析 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.1 误差分析 训练出来的模型往往没有达到人类水平的效果,为了得到人类水平的结果,我们对原因进行分析,这个过程称为误差 ...

  6. [DeeplearningAI笔记]ML strategy_2_3迁移学习/多任务学习

    机器学习策略-多任务学习 Learninig from multiple tasks 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.7 迁移学习 Transfer Learninig 神 ...

  7. [DeeplearningAI笔记]ML strategy_2_4端到端学习

    机器学习策略-端到端学习 End-to-end deeplearning 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.9 什么是端到端学习-What is End-to-end dee ...

  8. [DeeplearningAI笔记]改善深层神经网络1.1_1.3深度学习使用层面_偏差/方差/欠拟合/过拟合/训练集/验证集/测试集

    觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.1 训练/开发/测试集 对于一个数据集而言,可以将一个数据集分为三个部分,一部分作为训练集,一部分作为简单交叉验证集(dev)有时候也成为验 ...

  9. ML基础 : 训练集,验证集,测试集关系及划分 Relation and Devision among training set, validation set and testing set

    首先三个概念存在于 有监督学习的范畴 Training set: A set of examples used for learning, which is to fit the parameters ...

随机推荐

  1. 常用SQL语句集合

    一.数据定义 1.创建新数据库:CREATE DATABASE database_name2.创建新表:CREATE TABLE table_name (column_name datatype,co ...

  2. 【JavaScript 实现当前动态时间】

    实现一个简单动态的当前时间 <!doctype html> <html lang="en"> <head> <meta charset=& ...

  3. Unknown column in 'where clause'

    Unknown column in 'where clause' 错误如题:Unknown column in 'XXX' 'where clause' 意思是:未知表名 排查 1,查表名是否有错 2 ...

  4. 图的简单应用(C/C++实现)

    存档: #include <stdio.h> #include <stdlib.h> #define maxv 10//定义最大顶点数 typedef char elem;// ...

  5. XYZZY(spfa求最长路)

    http://acm.hdu.edu.cn/showproblem.php?pid=1317 XYZZY Time Limit: 2000/1000 MS (Java/Others)    Memor ...

  6. python内建函数isinstance基础用法

      语法:isinstance(object,type) 作用:来判断一个对象是否是一个已知的类型.  其第一个参数(object)为对象,第二个参数(type)为类型名(int...)或类型名的一个 ...

  7. VMWare 安装ubuntu,虚机设置静态IP接入公网

    本文提供的kafka安装配置为Linux(ubuntu-16.04.3) 1.首先安装VMarea(14.0.0 build-6661328) 2.到http://www.ubuntu.org.cn/ ...

  8. Vuethink正确安装过程

    1.      下载项目vuethink,本例将项目放置website文件下. 2.      后台搭建 本地建站–>以phpstudy为例 1)      新建站点域名 <Virtual ...

  9. 评论发布信息可插入QQ表情

    demo例子: HTML文本内容: <template> <div id="publish"> <!-- 发布内容输入框,利用Html5的新属性con ...

  10. 一步步部署基于Windows系统的Jenkins持续集成环境

    如题:本文将介绍如何在Windows环境下运用Jenkins部署持续集成环境.之所以写本文,是因为在最近工作当中,学习使用Jenkins时,确实遇到了一些问题,而大多数教程文档都是基于Mac或是Lin ...