IT教程 ·

python机械进修——正则化

我们在练习的时刻经常会碰到这两种状况:

1、模子在练习集上偏差很大。

2、模子在练习集上偏差很小,表现不错,然则在测试集上的偏差很大

我们先来剖析一下这两个问题:

关于第一个问题,显著就是没有练习好,也就是模子没有很好拟合数据的才能,并没有学会怎样拟合,大概是因为在练习时我们挑选了较少的特性,或许是我们挑选的模子太简朴了,不能轻微庞杂的拟合数据,我们能够经由历程尝试拔取更多的特性、增添一些多项式特性或许直接选用非线性的较庞杂的模子来练习。

关于第二个问题,能够说是第一个问题的别的一个极度,就是模子对练习集拟合的太好了,以至于把练习集数据中的那些可有可无的特性或许噪音也进修到了,致使的效果就是当我们运用测试集来评价模子的泛化才能时,模子表现的很差。打个不适当比方就是你日常平凡把功课都背下来了,然则实在你并没有学会怎样准确解题,所以碰到测验就考的很差。处理方法就是增添练习集的数据量或许削减特性数目来尝试处理。

第一个问题我们叫做欠拟合(underfitting),第二个问题我们叫做过拟合(overfitting)
python机械进修——正则化 IT教程 第1张

这两个问题还存在一种处理方法,就是我接下来要说的正则化。

我们之前说模子进修的历程也就是调解权重参数的历程,经由历程练习集合的数据来将模子的权重参数调解到一个使得丧失函数最小的值。

关于一个散布较庞杂的样本,假如练习获得的权重参数维度太少或许参数太小,也就是特性项很少,一些主要的特性没有起到作用,那末这条拟合曲线就会变得很简朴,我们看上图的欠拟合图象,内里的拟合曲线是一条直线,这就是权重参数维度太少的效果。而假如权重参数维度过量或许参数过大,致使拟合曲线过于庞杂,如上图的过拟合图象,拟合曲线能够圆满的将两类差别的样本点区离开,然则我们也能够看出这条曲线很庞杂,权重参数的项数肯定许多。

如今进入正题,关于正则化,我们罕见的情势是L2正则:
[ frac lambda 2lVert w lVert^2 = frac lambda 2 sum_{j=1}^m{w_j^2} ]
这里的
[ lambda ]
就是正则化系数。

我们将正则项直接添加到丧失函数后即可运用,比方关于逻辑回归模子,带有L2正则项的丧失函数为:
[ J(w)=sum_{i=1}^nleft[-y^{(i)}log(phi(z^{(i)}))-(1-y^{(i)})log(1-phi(z^{(i)}))right] + frac lambda 2lVert w lVert^2 ]
我们经由历程掌握正则化系数来掌握权重参数的大小。平常正则化用于处理模子过拟合的问题,我们的练习目标是为了使丧失函数最小,然则假如权重参数过大会致使过拟合,模子泛化才能下落,那末为了处理这个问题,将正则项加到丧失函数背面,构成一个新的丧失函数,为了最小化这个新的丧失函数,我们在练习历程当中不仅要使得偏差小,还要保证正则项不能太大,因而假如我们挑选一个较大的正则化系数,那末为了保证正则项不能太大,就会使得权重参数变小,这也就是我们的终究目标:在保证偏差不大的状况下,使得权重参数也不能太大,缓解了过拟合问题。正则化系数越大,正则化越强,权重参数越小。

所以关于欠拟合的模子,我们也能够尝试减小正则化系数来增大权重参数,而关于过拟合模子,我们尝试增大正则化系数来减小权重参数。

参与评论