《Machine Learning Yearning》第16章

这一章主要讲了如何清理那些被错误标记的开发集和测试集样本。
主要是看这些错误标记的样本所占比例。如果小的话可以暂时不管,先提升其他部分。如果较大那么就把他们改正过来。但是要注意的是,一定要同时修改开发集和测试集,保证它们的分布一致性。

16 Cleaning up mislabeled dev and test set examples

 错误分析过程中,你可能会注意到有些开发集的样本标记错误。在这里的“标记错误(mislabeled)”,意思是在算法统计之前,这个图片已经被标注者标记错了。即,样本中的(x,y)中y的值标记错了。例如,也许一些不是猫的被标记成了猫,反之亦然。如果你怀疑错误标记图像比重较大,增加一个类别跟踪这部分标记错误地样本。
这里写图片描述

 你应该在你的开发集中正确把这些错误标记的样本改过来吗?记住开发集的目的是帮助你快速地评估算法,那样你就能分辨算法A和B哪个更好。如果开发集错误标记的部分阻碍了你做这个判断,那么是值得花时间修改错误的标签。

例如假设你的分类器性能如下:

  • 开发集的总体准确度……………90%(10%的总体错误率)
  • 标记错误导致的误差……………0.6%(占开发集错误的6%)
  • 其他导致的错误…………………9.4%(占开发集错误的94%)

 因此由于标记错误导致的0.6%的错误率相比较你可以提升的9.4%的错误来说不够大。手动地修正开发集中的错误标签没有什么害处,但是这样做的意义不大:不知道你的系统总体误差率是10%还是9.4%也是可以的。

 假设你继续提升猫分类器并且得到如下性能:

  • 开发集总体准确率……………98%(2%的总体错误率)
  • 错误标记导致的错误率………0.6%(占开发集错误的30%)
  • 其他导致的错误率……………1.4%(占开发集错误的70%)

 30%的错误由标记错误导致的,这会加大你估计准确性的误差。现在就值得提升开发集中标签的质量。处理错误样本会帮你弄清楚分类器的错误率接近1.4%还是2%—有显著的差异。

 一开始就忽略开发集/测试集的错误标记样本并不罕见,在后来你的系统性能提高后才开始考虑错误标记的部分,因为这部分的比例随着总体错误率降低而升高。

 最后一章解释了你如何通过算法提升例如狗、大型猫科动物和模糊图像的错误类别。在这一章,你能学到通过提升数据的标签来改进错误标记的类别。

 无论你用什么过程来修正开发集,记住也要将其用在测试集上,那样你的开发集和测试集能服从同一分布。保证你的开发集和测试集的一致性,会避免我们在第六章讨论的问题。你的团队优化了开发集的性能,只是后来会意识到他们根据不同的标准在一个不同的测试集上判断的。

 如果你决定提高标签的质量,也要仔细检查系统错误分类的和正确分类的样本标签。有可能在一个样本中,你的原始标签和学习算法都是错的。如果你只是修正了你系统错分的样本标签,可能会在评估中引入偏差。如果你有1000个开发集样本,并且你的分类器准确率是98%,那么检查这10个错误分类的样本比检查980个正确分类的样本容易。因为在实际中只检查错误分类的样本更容易,偏差也会引入到一些开发集中。如果你只关系开发产品或应用程序,这种偏差是可以接受的,但是如果你计划使用这个结果发表学术研究论文,或者需要一个完全无偏差的测试集准确率测量,着将会是一个问题。

猜你喜欢

转载自blog.csdn.net/lisa_ren_123/article/details/81141280