过拟合问题
正常来说我们对给定的数据进行建立模型,对于图一来说,没有根据实际给定的数据建立,而是独自画了一条直线来拟合,这样导致我们建立的模型不能和训练数据相匹配,我们将其称之为欠拟合。对于图二来说,我们使用平方来构建一个假设函数,这个假设函数能够很好的拟合训练数据并且没有出现奇怪的波动,大致为我们想要的假设函数。对于图三来说我们给定的次方过高导致生成的模型变化并没有规律,这样在该模型的泛化能力就会很弱。
在第一张图片中对应的是线性回归的情况,而对于逻辑回归,过拟合的问题依旧存在,如上图所示。在最后一张图中由于模型想要将训练数据的每一个样本都囊括进去,这样导致生成的样本过于复杂,对于样本它的表现可能很好,代价函数甚至可以为0.但同样它的泛化能力就比较弱。如上面讨论的线性回归一样。
那么问题出现了,对于欠拟合还是很好解决的,无非是训练不够,模型选择不准确,我们可以继续训练。但是对于过拟合我们应该如何做那?
对于过拟合一般有两个解决方法:
1.减少特征值,一般过拟合都出现在样本数量少而特征多的情况,我们可以选择那些更为重要的特征转而放弃一些无关紧要的特征,这样特征减少,就能够很好的解决过拟合问题 。但有个弊端,假如我们不想要放弃任何一个特征那?
2.正则化就是对应此种解决方法的,正则化保留所有的特征数量减少特征的量级。
代价函数
我们在前面的例子中很直观的看到因为后面x项的次数增大因此数值也变得更加的不确定起来,但如果我们把θ3和θ4变得特别小比如无限的接近0,这样就会使得尽管后面有高次项,但实际上依旧是二次项,这样就能够很好的解决过拟合的问题了。这样的思想实际上就是正则化的思想。
我们在前面提到,想要减小一些特征的参数,但我们如何判断哪些特征不重要,哪些特征重要那?很明显我们只有对那些不重要的特征参数缩小才能达到我们的目的,但目前我们并没有什么办法得出哪些特征重要哪些特征不重要,因此我们选择所有特征对应的参数都减小。我们求特征使用的方法是代价函数,在这里想要减小特征参数同样要使用到代价函数。我们在代价函数后面增添一项正则化项,它的作用是用来减小所有的参数。
当我们使用正则化项后,其实并没有降低假设函数的最高次幂,只是将其变得更加平滑,得到一个更好的假设函数。保证没有过拟合。注意λ,作为正则化系数。
前面讲到正则化系数λ,实际上λ是十分重要的。他决定了对假设函数中特征参数的下降程度。如果过小,就起不到原本的作用,如果过大,则会使得所有的特征参数都趋近于0,这样就会使得代价函数类似于一个常数。变成了一条直线。我们使用这条直线来拟合数据集,这很明显不合适,就会出现欠拟合的情况。
线性回归的正则化
我们想要求得最适合的参数,无非是两种方法。一是梯度下降,二是正规方程。我们在这里讨论一下梯度下降。梯度下降想要正则化与前面代价函数正则化的方法是一致的,都是在后面加上对应的正则化项。我们对正则化项与前面的项进行整合得到如上图中最下面的式子。在这里需要注意的是θj对应的参数小于1。
在前面讨论过了梯度下降对应的正则化的式子,现在来讨论一下正规方程对应的正则化的例子,在此我们先讨论一下正规方程。我们在求对应的参数时,令其所有的特征求偏导,然后令其值为0这样就可以求出最小值,这是正规方程的算法思想。而对于正规方程正则化则是同样的结果。对应上图中左上角为训练样本的特征值,而对应的y为所得到的结果。我们同样使用正规方程的式子,只是在其中加上λ乘以对应的矩阵,该矩阵对角线上有元素,且左上角为0。而λ则是对应的正则化系数。
Logistic回归的正则化
对于逻辑回归来说,同样存在过拟合的问题,如上图左边的图所示。我们使用的假设函数项次较高导致分类过拟合,我们在逻辑回归中使用正则化,对于逻辑回归使用正则化,同样是优先考虑代价函数,如上图中最下所示,在原来的代价函数上加上一个正则项。
对于逻辑回归来说同样使用梯度下降算法,我们想要在梯度下降算中使用正则化,只需将后面原本代价函数关于某一个参数的偏导,改成新的带正则化项的偏倒即可。(注,这里看上去梯度下降函数和前面的线性回归中的梯度下降函数一样实际上差别很大,因为假设函数不相同)
我们观察前面给出的例子不难得出,大多数情况下,正则化的时候,在后面加上正则化项即可。对于许多高级优化算法而言,此条同样成立,我们在处理这些问题时,想要使用正则化的时候,同样在后面加上对应的正则化项即可。