正则化参数的选择对偏差和方差的影响
用一个四阶多项式,要用正则化拟合这个模型,这里的lambda的值是正则化参数,它控制着你交易的金额,保持参数w与训练数据拟合,从将lambda设置为非常大的值的示例开始,例如,lambda=10000,如果这样做,你最终会安装一个大致像这样的模型,因为lambda非常大,然后算法被高度激励以保持这些参数w非常小,所以你最终得到W1,W2,实际上,所有这些参数都非常接近于零,所以这个模型的结果是f(x)近似为一个常数,这就是为什么最终会有这样一个模型,这个模型显然有很高的偏差,它不符合训练数据,因为它在训练场上表现都不好,而且Jtrain很大,来看一下另一个极端,假设你设定了lambda是一个非常小的值,所以用一个很小的值,把lambda设置为零的极端,选择lambda,没有正规化,所以我们只是拟合了一个四次多项式,没有正规化,最终看到的就是蓝色的曲线,太符合数据了,所以我们之前看到的是当你有一个这样的模型,Jtrain很小,但是Jcv比Jtrain大得多,这表明我们有很高的方差,它超过了这个数据,如果有一个lambda中间值,不是很大,看起来的模型就会恰到好处,与数据很吻合,Jtrain和Jcv都很小,所以如果你试图决定lambda的什么值用于正规化,参数交叉验证也为你提供了一种方法。
如果你拟合一个四阶多项式,这就是模型,你使用正则化,怎样才能选择一个好的值lambda?
这将是一个程序,类似于你所看到的选择多项式d的次数,专门使用交叉验证,假设我们试图用lambda=0拟合一个数据,所以用lambda=0最小化成本函数,最后得到一些参数,然后可以计算交叉验证错误,现在尝试一个不同的值,假设lambda=0.01,最小化成本函数会给你第二组参数,还可以看到它在交叉验证集上做得有多好,继续尝试lambda的其他值,以此类推,通过尝试lambda拟合参数的一个大范围的可能值,使用这些不同的调节函数,然后在交叉验证集上评估性能,然后,可以尝试选择正则化参数的最佳值,具体而言,如果在这个例子中,如果发现B5值最低,所以就用W5B5作为选择参数,最后,如果你想报告广义误差的估计,然后,你将报告W5B5的测试集错误j测试。
为了进一步了解这个算法在做什么,让我们来看看训练错误和交叉验证错误是如何变化的?
作为参数lambda的函数,在这个图中,又改变了x轴,改为正则化参数lambda值。看左边lambda=0的极值,这对应于不使用任何正则化,如果lambda很小或者为0,我们以这个非常摆动的曲线结束的地方,在这种情况下,我们有一个高方差模型,所以Jtrain会很小,Jcv会很大,因为它在训练数据上做得很好,但在交叉验证数据上做得更糟,右边这个极值有非常大的lambda值,假设lambda=10000,最后把一个看起来像那样的模型,所以这个有很高的偏差,它与数据不符,结果是Jtrain会很高,Jcv也会很高,实际上如果你看Jtrain是如何随着lambda函数变化的,你会发现Jtrain会这样上去,因为在优化费用函数中,较大的lambda算法越是试图保持w的平方越小,那就是给予这个正则化术语的权重就越大,而左边的项是Jtrain,所以更多的是试图保持参数较小,它在最大限度地减少训练错误方面做得越差,所以只要增加训练误差,Jtrain会像现在这样增加,结果交叉验证错误是这样的(绿线),因为我们已经看到,如果lambda太大或太小,那么它在交叉验证集上做得不好,它要么在左边合适,或者在右边,会有一些lambda的中间值,使算法执行的更好,交叉验证所做的是尝试很多不同的lambda值,并评估交叉验证误差在许多这些不同的点,然后希望选择一个交叉验证误差低的值,这将会为应用程序提供一个良好的模型。其中横轴是多项式的度,这两个图看起来有点不符合数学,也不是以任何正式的方式,这是因为当你拟合一个多项式的度数时,这条曲线的左边对应于过拟合和高偏差,右部分对应欠拟合和高方差,左边是高方差,右边是高偏差。