5. 开发集和测试集

让我们回到之前关于猫咪图片的例子: 你开发了一个移动APP, 用户可以上传许多不同的图片到你的APP上,你想识别出用户上传的图片中所有包含猫咪的图片。 你的团队下载了很多图片数据集,包含猫咪图片(正样本,positive example)和非猫咪图片(负样本, negative example)。他们将这些数据划分为70%的训练集,30%的测试集。当使用这些进行算法训练时,效果非常不错。 但是将算法(分类器)部署到APP的时候,发现效果却非常的糟糕!

发生了什么?

你发现用户上传的图片和你团队下载作为训练集的图片不同。用户使用收集拍摄的图片分辨率更低,模糊,而且照明效果较差。由于你的训练/测试集来源于网站上的图片,你的算法没有很好的把智能手机图片一般化。 大数据时代之前,在机器学习中人们对数据集的一个常见划分规则为:将数据集划分为70%/30%的训练集和测试集。但是在越来越多的应用(比如上面的例子)中,收集的数据与训练数据不同,这个时候该规则就不适用了。

我们通常定义:

• 训练集(Training set) — 运行在算法上的数据集. • 开发集(Dev/development set) — 这部分数据通常用来调参,选择特征,以及对学习算法进行改进。有时也被用于交叉验证。 • 测试集(Test set) — 这部分数据通常用于评估算法的性能,但不要依靠这个数据对你的算法进行调参和修改。 一旦你定义了一个开发集和测试集,你的团队就可以进行模型的建立,通过调整参数,特征选择等。从而制定最有效的机器学习算法。开发集和测试集可以很快的告诉你算法的运行情况。

换句话说,开发集和测试集的目的是为了让你对算法进行改进,使算法效果变得更好

所以你应该:

• 选择开发集和测试集时,主要选择可以反映未来需要获取的数据

换句话说,你的测试集不应该只是可用数据的30%这么简单,尤其是你得到的数据(移动app的图像)和你训练数据(网站图像)不一样的时候。 如果你还没有运行你的移动应用,也就意味着还没有用户,可能你就无法获取到一些比较好的数据,但是你可以尝试去获取这些数据。比如:让你的朋友拍一些手机照片发给你,一旦你的应用启动后,你可以使用实际的数据来更新你的开发/测试集。 如果你实在没有办法获取到你期望的数据,那么你可以从网站图片开始,不过这种做法可能会导致你的系统不能一般化(generalize)的很好。 有时,可能需要花费一些资金去获取比较好的数据集。切记不要认为你的训练集和测试集分布必须是一样的。尽量去选择那些可以反映真实情况的数据作为测试样本。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏量子位

自动给神经网络找bug,Google发布TensorFuzz

能不能把炼丹师们从无休止无希望的debug工作中拯救出来?两位谷歌大脑研究员Augustus Odena和Ian Goodfellow说,好像能。

1500
来自专栏IT派

资源 | 深度学习图像标注工具汇总

对于监督学习算法而言,数据决定了任务的上限,而算法只是在不断逼近这个上限。世界上最遥远的距离就是我们用同一个模型,但是却有不同的任务。但是数据标注是个耗时耗力的...

1282
来自专栏量子位

深度学习动手入门:GitHub上四个超棒的TensorFlow开源项目

问耕 编译自 Source Dexter 量子位 出品 | 公众号 QbitAI 作者简介:akshay pai,数据科学工程师,热爱研究机器学习问题。Sour...

5739
来自专栏AI科技大本营的专栏

资源 | 深度学习图像标注工具汇总

对于监督学习算法而言,数据决定了任务的上限,而算法只是在不断逼近这个上限。世界上最遥远的距离就是我们用同一个模型,但是却有不同的任务。但是数据标注是个耗时耗力的...

2183
来自专栏AI研习社

IBM高级研发工程师武维:如何分布式训练深度学习模型?| 分享总结

AI 研习社按:随着深度学习神经网络规模越来越大,训练一个深度神经网络(Deep Neural Networks, DNNs)往往需要几天甚至几周的时间。为了加...

2885
来自专栏人工智能头条

10行代码实现目标检测,请收下这份教程

1151
来自专栏AI科技大本营的专栏

如何通过深度学习轻松实现自动化监控?

【导读】这是一篇关于使用基于深度学习的目标检测来实现监控系统的快速教程。在教程中通过使用 GPU 多处理器来比较不同目标检测模型在行人检测上的性能。

1145
来自专栏机器之心

资源 | ChainerCV:基于Chainer的深度学习计算机视觉实用库(内含工具集)

选自GitHub 作者:二井谷勇佑(Yusuke Niitani) 机器之心编译 参与:黄小天、蒋思源 近日,Preferred Networks 通过其研究博...

32611
来自专栏IT派

11 个Javascript机器学习库

Brain.js是一个Javascript库,用于替代(现在已弃用的)“ 脑 ”库的神经网络,该库可与Node.js一起使用或在浏览器中使用(注释计算),并为不...

1334
来自专栏MelonTeam专栏

老司机用神经网络带您安全驾驶

0 概述 随着今年深度学习的热潮的来临,神经网络已经被应用在越来越多的应用中。而在印象中对于神经网络进行训练的往往需要借助大量的计算资源与数据。其实通过一定的...

2555

扫码关注云+社区

领取腾讯云代金券