不匹配的数据集

训练、开发、测试集的来源都应该要是相同的。在无法达成这一要求下,对于不同来源的数据集,就要充分考虑如何将它们进行划分。

举个例子,想要开发一款手机应用,就像现在的Google相册中分类功能一样,能对用户上传的猫的图片进行识别。假如现在有1万张普通用户上传的猫的图片数据,这些图片的质量都不太好,有一些可能是模糊的,另外又网络上获取了20万张质量较好的猫的图片。

构建机器学习模型时,在开发集和测试集上,一定要反映出将来需要面临的数据。考虑到例子中这个机器学习模型主要将应用在识别用户拍摄的猫的图片上,在划分数据上,就可以将20万张网络获取和图片和5千张用户上传的图片共20.5万张图片作为训练集,剩下的5千张图片一半作开发集,一半作测试集。长远来看,这种分配方法比起随机打乱所有数据样本再进行分配性能要好。

在这种情况下,由于数据集的不匹配,后续如果进行方差/偏差分析,就很难找到问题的根源了,例如对于上面的例子,由于开发集包含的样本比训练集中的样本更加难以准确识别,开发集的错误率往往会大于训练集的错误率。为了解决这个问题,可以再定义一个训练-开发集,训练-开发集和训练集的来源相同,但是这部分并不参与训练。

grafana 不匹配某个字符 不匹配的_数据

如上图所示,加入训练-开发集后得到的数据中,在B场景下训练集错误率和训练-开发集之间相差较大,它们的来源相同,由此就可以知道这是个偏差问题,后面各个场景下都可以按照之前的偏差/方差分析进行分析了,训练-开发集便起到了这个作用。

对于不匹配的数据集,偏差/方差分析过程如下:

grafana 不匹配某个字符 不匹配的_数据集_02

在一些情况下,可以直接通过一些手段直接解决数据集不匹配的问题。首先,需要进行人工错误分析,以了解训练、开发、测试集之间存在的差异,随后根据分析结果制作一些数据或者收集之间互相匹配的数据集。例如,必要时可以进行人工合成,将一些高质量的照片模糊化,或者对一些声音信息加入一些噪音,以此来使数据集匹配。

作者:Young