到目前为止,我们已经学习了两个算法,包括线性回归和逻辑回归。在实际问题中,有可能会遇到过拟合问题,它会导致效果很差。这一节,我们介绍一下什么是过拟合,以及解决过拟合问题的方法,正则化。
1,过拟合
过拟合:如果我们有非常多的特征,我们通过学习得到的假设可能能够非常好地适应训练集(代 价函数可能几乎为 0),但是可能会不能推广到新的数据。那么你可能遇到了过拟合的问题。
如上图所示,第一个图是一个线性模型,欠拟合。不能很好的适应我们的训练集。第三个模型是一个四次方的模型,完全拟合我们的数据,过于强调拟合原始数据,丢失了算法的本质。虽然可以很好的拟合我们给出的训练数据,但是对于我们给出的检验数据却会表现非常差,就是过拟合。中间的模型是最好的。
不但在线性回归中有这个问题,在分类中也会出现这个问题。
如上图所示,x的次数越高,拟合的越好,但是相应的预测能力可能会变差。
我们有两个方法,一个是手工去除一些特征,或者使用算法的帮助剔除不好的数据。另一种是保留所有的特征,但是使用正则化,减小参数的大小。
2,代价函数
上面问题中,我们的模型可能是:,我们从之前的事例中看出正是由于高次项导致了过拟合的发生,所以如果我们能 让这些高次项的系数接近于 0 的话,我们就能很好的拟合了。所以我们要做的就是在一定程度上减小这些参数? 的值,这就是正则化的基本方法。我们决定要减小
和
的值,我们要做的就是修改代价函数,这样做的话,我们在尝试最小化代价时也需要将这个惩罚纳入考虑中,并最终导致选择较小 一些的
和
。
修改以后的代价函数:,因为修改之后的函数,如果你要是想让这个函数取得最小值,那么你就必须要是后面的两个参数足够的小。通过这样的代价函数选择出的参数
和
对预测的影响比之前要小得多。假如我们 有非常多的特征,我们并不知道其中哪些特征我们要惩罚,我们将对所有的特征进行惩罚, 并且让代价函数最优化的软件来选择这些惩罚的程度。。这样的结果是得到了一个较为简单的 能防止过拟合问题的假设:
其中称为正则化参数。经过处理之后与不经过处理得到的图:
但是,如果你选择的正则化参数过大,那么就会把所有的参数都最小化了,导致模型变成了,也就是上边的横线,造成了欠拟合。
所以对于正则化,我们要取一个合理的 ? 的值,这样才能更好的应用正则化。
3,正则化线性回归
正则化线性回归的代价函数为:
我们在这个代价函数中不对进行正则化,所以梯度下降算法分为两种情形。
如果我们对上面的第二个式子进行简化,那么,我们可以得到:
从上边我们可以看到,正则化以后的式子就是在原来算法的基础上令减小一个额外的值。
4,正则化逻辑回归
同样对于逻辑回归,我们也给代价函数增加一个正则化的表达式,得到代价函数:
通过求导,得出梯度下降算法为:
注意其中的。