本主题主要讲授一些评估假设函数性能的一些方法。

一、评估假设函数

评估模型(假设函数)的方法有多种,当特征数比较少时,可以通过画图的方式来观察模型的优劣;当特征数比较多时,则需要使用更一般的方法,这种方法就是将整个数据集划分成训练集和测试集,划分的比例为 7 : 3,如下图。
吴恩达机器学习课程 | 06 Advice for Applying Machine Learning
我们让假设函数在训练集中进行训练,将训练误差最小化。做到这一点后,将训练得到的模型参数代入到测试集的代价函数 Jtest(θ)J_{test}(\theta) 中,可以求得该组参数的好坏程度,通过这种方法可以达到评估模型优劣的目的。

二、模型选择

训练集误差越低,并不能说明假设函数对新样本的泛化能力就越好,也有可能是发生了过拟合。

假如现在我们需要为我们的数据集选择一个合适的假设函数,我们可以给出一系列假设函数作为可能的选项,然后将每个假设函数都放到训练集中进行训练,得到每个假设函数的最优参数,然后将参数代入到测试集的代价函数 Jtest(θ)J_{test}(\theta) 中,计算这些假设函数在测试集中的误差,挑出测试误差最小的那一个假设函数作为最终结果。

但上述方法存在一个问题,我们将数据集分成了训练集和测试集,假设函数在训练集中训练得到各自的最优参数后,我们通过测试集找出最优的那个假设函数 HH,但是 HH 在新样本中的泛化误差我们却无从得知。因为数据集已经用完了,并且我们也不能将 HH 再放到测试集中以为这样可以得出 HH 的泛化误差,因为测试集中的数据都是已经被使用过的,就好比把学生在作业里已经做过的题目拿来期末考试,这样肯定不能反映出学生的真实水平。

所以,我们的改进方法是,将整个数据集分成训练集、验证集(交叉验证集)和测试集,比例为 6 : 2 : 2,如下图:
吴恩达机器学习课程 | 06 Advice for Applying Machine Learning
我们将所有假设函数放到训练集中进行训练,找到各自的最优参数。然后将参数代入到验证集的代价函数 Jcv(θ)J_{cv}(\theta) 中,得出验证误差最低的那个假设函数。最后将这个假设函数放到测试集中计算其测试误差,这时的测试误差就可以作为这个假设函数的泛化误差。

用一个通俗的类比,在训练集中训练好比是课堂上做例题,验证集好比是做课后做习题,测试集则是期末考试。

三、方差和偏差

当模型的性能不理想时,多半是遇到了两种情况:方差 bias 过大或者偏差 variance 过大,偏差过大意味着模型存在着欠拟合的问题,方差过大意味着模型存在着过拟合的问题。

给定一个数据集,假如要在众多多项式假设函数中选择一个作为最终的模型,多项式的次数与误差之间的关系则如下图所示,在多项式的次数比较小时,模型在训练集和验证集中的误差都很高,但随着次数增高,模型对训练集的拟合程度越来越好,训练误差越来越低。但随着次数的增加,最终会出现过拟合的问题,在验证集中的验证误差会呈现中一个先减后增的趋势。

在多项式次数较低时,容易出现欠拟合问题,这时模型的偏差较大,训练集误差和验证集误差都比较高;在多项式次数较高时,容易出现过拟合问题,这时模型的方差较大,验证集误差远远大于训练集误差。
吴恩达机器学习课程 | 06 Advice for Applying Machine Learning

3.1 偏差、方差与正则化的关系

如何选择合适的正则化参数?

四、学习曲线

学习曲线可用于判断一个模型是否处于高偏差、高方差或者两者兼有。

如下图,假如现在已经选定了一个模型,则随着训练集中样本数的不断增加,模型的训练误差会不断增加(样本数较少时误差比较低的原因是此时训练集中的数据点很容易拟合),最终达到某一个值。但训练集中的样本数较少时,模型在验证集中的误差是非常大的,但随着训练样本的数目越来越多,在验证集中的误差会不断减小。
吴恩达机器学习课程 | 06 Advice for Applying Machine Learning
下图,在高偏差的情况下,随着训练集样本数的不断增加,训练误差和验证误差会趋于相等。所以在发生高偏差问题时,不断给数据集扩增新的数据不会有很大帮助。
吴恩达机器学习课程 | 06 Advice for Applying Machine Learning
下图,在高方差的情况下,随着训练集样本数的不断增加,训练误差和验证误差之间的差距虽然会不断地减小,但仍很大。但在发生高方差问题时,扩增数据集对于训练模型是有较大帮助的。

吴恩达机器学习课程 | 06 Advice for Applying Machine Learning

相关文章: