美文网首页
你的开发集和测试集(译)

你的开发集和测试集(译)

作者: 低智商游戏 | 来源:发表于2018-06-05 00:41 被阅读17次

让我们回顾一下前面提到的检测猫图片的例子:你运行一个移动应用,用户向你的应用上传很多不同内容的图片,你想自动的找出其中的猫的图片

通过从不同网站下载包含猫的图片(正向示例)和没有猫的图片(反向示例),你的团队得到了大量的训练数据。你们把数据分成两组,其中70%的数据作为训练集, 30%作为测试集。使用这些数据,你们建立了在训练集和测试集上都工作的很好的猫检测器。

但是当你讲这个猫检测器集成到你的移动应用上时,你发现它的表现很糟糕。



发生了什么?

你发现用户上传的图片和你从网站抓取的图片有很多的不同:用户上传的图片大多数都是使用移动设备拍摄的,因此分辨率低, 模糊,并且光线不好。而你的训练集和测试集是通过网站抓取的。你的算法并不适用于检测只能手机拍摄的图片。

在现代大数据时代之前,机器学习中的一个常见规则就是按照70%/30%的比例将数据分为训练集和测试集。这种做法是可行的,但是对于训练集(上面的例子中指的是网站图片)和你真正关心的数据集(移动电话中的图片)不同的应用来说,这种做法并不好。

我们通常定义:

  • 训练集-----在这个数据集上运行你的机器学习算法
  • 开发集-----在这个数据集上,你调整参数, 选择特征并做和学习算法相关的其他决定。有时这个数据集也可称作持有交叉验证集
  • 测试集----- 使用这个数据集测试算法的性能,但是不会对使用什么样的学习算法以及使用什么参数作出任何决定。

一旦定义了开发集和测试集,你的团队将会尝试很多想法,比如不同的学习算法参数,看看那个最好。开发集和测试集可以让你的团队了解你的算法性能怎么样。

换句话说,开发集和测试集的目的是引导你的团队对机器学习系统做最重要的改变。

因此,你需要做如下事情:
选择能够反映你期望未来获取的数据并希望能够做的很好的开发集和测试。
换句话说,你的测试集并不仅仅是可获得数据的30%,特别是你未来期望获取的数据(移动应用数据)和你的训练数据(网站图片)具有本质区别的时候。

如果你还没有发布你的移动应用,你可能还没有用户,因此你也就无法获取真正反映你未来必须做的好的数据。但是你仍然要尝试逼近这个目标。例如,让你的朋友使用移动手机拍摄照片并发送给你。一旦你的应用发布了,你就可以使用真实的用户数据更新你的开发集和测试集

如果你实在找不到方法获取接近你未来期望的数据,也许你只能从使用网页数据开始。但是你要意识到其中的风险,这个系统可能并不能很好的工作。

决定在建立开发集和测试集上投入多少资金需要一些判断力。可是不要假定你的训练版本和测试版本是一样的。试着选择能够反映你最终想要表现的好的测试样例,而不是你有什么数据就使用什么数据进行训练。

相关文章

网友评论

      本文标题:你的开发集和测试集(译)

      本文链接:https://www.haomeiwen.com/subject/bwyusftx.html