Chapter 20、Bias and Variance: The two big sources of error

偏差和方差:误差的两大来源

假设你的训练集、开发集和测试集都来自相同的分布。那么你应该总是试图去获取更多的训练数据,因为这样能只提高性能,对吗?

尽管有更多的数据是无害的,不幸的是,它并不总是如我们期望的那样有帮助。获取更多的数据可能是浪费时间。所以,你如何决定何时该加数据,何时不用这么麻烦?

机器学习中有两个主要错误来源:偏差和方差。理解它们将有助于你决定添加数据,以及其他提高性能的策略是否能很好地利用时间。

假设你希望构建一个5%错误的猫识别器。目前,你的训练集错误率为15%,并且你的开发集错误率为16%。在这种情况下,添加数据可能不会有太多帮助。你应该关注其他改变。实际上,在你的训练集上添加更多的样本只会让你的算法难以在训练集上做的更好。(我们在后面章节中解释了原因)

如果你在训练集上的错误率是15%(85%的准确率),但是你的目标是5%错误率(95%准确率),那么第一个要解决的问题是提高算法在训练集上的性能。你的开发/测试集上的性能通常比在训练集上要差。所以,如果算法在见过的样本上得到85%的准确率,那么是不可能在没见过的样本上得到95%的准确率的。

假设如上所述你的算法在开发集上有16%的错误率(84%的准确率)。我们将这16%的错误分为两部分:

  • 首先,算法在训练集上的错误率。在本例中,它是15%。我们非正式地将此认为是算法的偏差(bias)
  • 其次,算法在开发(或测试)集上比训练集上差多少。在本例中,开发集比训练集差1%。我们非正式地将此认为是算法的方差(variance)【1】。

学习算法的一些改变能解决错误的第一个组成部分——偏差,并且提高算法在训练集上的性能;一些改变能解决第二个组成部分——方差,并帮助算法从训练集到开发/测试集上更好的泛化【2】。为了选择最有希望的改变,了解这两组错误中哪个更叩待解决是很有用的。

开发对于偏差和方差的良好直觉将帮助你为算法选择有效的改变。

——————————

【1】统计领域有更多关于偏差和方差的正式定义,我们不必担心。粗略地说,当你有一个非常大的训练集时,偏差就是你算法在训练集上的错误率。方差是与此设置中的训练集相比,你在测试集上差多少。当你的误差衡量是均方差(mean squared error)时,你可以卸下指定这两个量的公式,并证明 Total Error = Bias + Variance。但是为了决定如何在ML问题上取得进展的目的,这里给出的偏差和方差的更非正式的定义就足够了。

【2】这里还有一些通过对系统架构做出大的改变的方法,能够同时减少偏差和方差。但是这些方法往往难以识别和实施。

results matching ""

    No results matching ""