本文是吴恩达《机器学习》视频笔记第64篇,对应第6周第6个视频。
“Advice for applying machine learning:——Learning curves”
01
—
笔记
本节视频介绍“学习曲线”,学习曲线是个什么东东呢?
如果你想检验你的学习算法是否允许正常,或者想改进你的学习算法,那就很有必要绘制学习曲线。学习曲线还可以帮助我们查看算法结果是否有偏差、方差问题。
一般先绘制训练集、验证集的误差曲线。
以训练集的学习曲线为例,以训练集样本的数目m为横坐标,以平均误差平方和为纵坐标绘制曲线,观察训练误差随训练样本集大小变化之间的关系。如下图:
如果我们有100个样例的训练集,我们会刻意改变训练集的大小m(比如,m=10,20,30,...,100),当m变化时训练集的平均误差平方和也会跟着变化,这样就可以观察我们的算法随着训练集大小的变化其在训练集上的平均误差平方和方面的表现。
一般情况下,随着训练样本的增加,训练集的平均误差平方和会增加,而相应的验证集上的平均误差平方和会减少。
假设出现高偏差情况,假设使用的是线性模型,有下图所示的拟合效果(如下图,上半部分m取值较小,下半部分m取值较大)。
不停改变m的值,会得到一条这样的曲线(验证集上的平均误差平方和)
你会发现如果在高偏差情况,随着m的增加验证集上的误差会减少,但是减少到一定程度之后m再增加误差就不会再有明显下降了。
同时,训练集上的平均误差平方和会随m增加而增加,且慢慢的非常接近验证集上的误差。
最后,你会发现两条曲线接近的值表现出的误差非常大,意味着我们的模型不能很好的拟合要求解的问题,再怎么增加训练数据也是徒劳,因为模型本身出了问题。
上面就是高偏差的现象。
下面,我们增加模型的复杂度,用更高项的多项式来拟合。
拟合曲线很曲折,在训练集上的表现很美妙。
训练集上的误差会一直较小,而验证集上的误差呢?却迟迟下不来。
从上面的曲线可以看出,如果我们的模型过于复杂,出现高方差,这种情形下如果继续增加训练样本的数量会使得算法变得更好。这也是为什么一些较复杂的算法,在普通量级的训练样本上表现一般般,一旦到了大数据领域就会有惊艳表现。
当然本文中的学习曲线是理想化后的,在实际工作中,学习曲线会有跳动,但一般来说画学习曲线可以使我们对我们设计的算法有个较好的认识。
02
—
视频