20偏差和方差:误差的两个主要来源(20 Bias and Variance: The two big sources of error)

假设训练集,开发集和测试集都来自相同的分布,你应该获取更多训练数据,因为那样可以提高模型性能,对吧?
不幸运的是即使取得更多训练数据没有什么坏处,它也没有你想象的很多的好处。取得更多训练数据也有可能是在浪费时间,所以问题来了,你如何确定什么时候增加训练数据,什么时候不呢?

在机器学习领域有两大主要的误差来源:偏差和方差。理解了偏差和方差将帮助你确定什么时候增加数据,或者采用其他方式来提升性能。理解他们也会帮助你充分利用时间。

假设你想构建一个有5%错误率的猫分类器。现在你的训练集错误率为15%,开发集错误率16%。在这种情况下,增加训练数据可能没有什么帮助,你应该关注其他的方式。实际上,给训练集增加更多数据会导致算法更加难以在训练集上有好的表现(将会在下一章解释为什么)。

如果在训练集上错误率是15%(精度85%),但是你的目标是5%的错误率(精度95%),那么首要问题是提升算法在训练集的精度,因为算法在开发集/测试集上的表现一般比训练集差。所以如果算法在可见样本(训练集)上是85%精确度,那么在未见样本(开发集)上根本不可能获得95%的精确度。

像之前一样假设算法在开发集上错误率为16%(84%精度)。
将这16%的错误率拆解成两部分:

  • 首先,在本例中算法在训练集上的错误率是15%,我们认为这是算法的偏差(非正式的偏差)
  • 其次,算法在开发集(测试集)上的表现比训练集差了多少。在本例中,算法的开发集表现比训练集差了1%,我们认为这是算法的方差(非正式的方差)。

对算法进行修改可以解决第一方面的问题—偏差—提高算法在训练集上的性能。对算法做另一些修改解决第二方面的问题—方差—在开发集合测试集上获得更好的泛化性能。先理解这两方面的问题哪一个更加需要去解决,再决定对算法做什么样的修改,这样做非常非常的有用。

形成一个关于偏差方差直观的理解可以帮助你高效地修改算法。

猜你喜欢

转载自blog.csdn.net/weixin_35576881/article/details/80318753
今日推荐