在解决实际问题的过程中,我们会倾向于用复杂的模型来拟合复杂的数据,但是使用复杂模型会产生过拟合的风险,而正则化就是常用的减少过拟合风险的工具之一。
过拟合
过拟合是指模型在训练集上误差很小,但是在测试集上表现很差(即泛化能力差),过拟合的原因一般是由于数据中存在噪声或者用了过于复杂的模型拟合数据。如下图所示,下图中的训练样本是三次多项式加了点噪声得到的,然后用不同的多次项拟合,M代表最高次项次数,下面四个图中M=0和M=1由于使用的过于简单的模型,没有能够很好地拟合训练数据,属于欠拟合。但是在M=3和M=4两个模型中,M=3有一点点的训练误差,但是在测试集上会取得不错的效果;而M=9则完全没有训练误差,但是训练出来的模型大大偏离了他的实际模型,这就是所谓的过拟合。 @H_301_6@
奥卡姆剃刀原理说,在所有能解释数据的模型中,越简单的越靠谱。但是为了拟合复杂的数据,不得不采用更复杂的模型,那么有没有一种办法,能以一种相对比较简单的模型来拟合复杂数据,答案是有,这就是正则化方法。
正则化假设
拿多项式回归举例,在多项式回归中,我们的目标是最优化的最小二乘误差(least square error ),但是通常在优化目标后面会看到一个w的平方项,或者w的绝对值的表达式,这个就是正则化项。其中,w的二次方回归叫做ridge regression,w的绝对值项叫做lasso regression。 @H_301_6@
正则化原理及推导
先来看下面两个图,第一个使用了最高十次项的多项式拟合,第一个图中可以看出红色的线很好的拟合了样本中的所有点,但是并不是理想的拟合,似乎泛化能力很弱。第二个图在第一个图的基础上加了L2正则项(Ridge Regression),得到了一个相对理想的模型。 @H_301_6@
这里先写下十次项多项式和target的二次项多项式的hypothesis @H_301_6@
我们求解的问题就是 @H_301_6@
如果没有约束,对于凸函数,我们常用梯度下降法,每次往梯度方向走一小步,直到不能走为止,现在在这里加上了限制,先来看L2正则,想象一个球往山谷里滚下去,现在只能滚在这个圆形区域内,如果谷底在这个圆形区域内,那么没什么问题。如果谷底在圆形区域外,则小球最后肯定会落在圆形边界上,而且小球最后停着的点的梯度方向,和w的方向肯定是平行的(如果不平行,肯定会有一个垂直w的分量,把小球往另一侧拉,如下图的绿色箭头)。 @H_301_6@ @H_301_6@ 由于梯度和w平行,那么最后优化的结果是 @H_301_6@
再来看L1正则,它的约束区域是正的菱形,同理,做梯度下降,最后小球落到的地方的梯度平行于w(概率很小,几乎不可能)或者小球滚到菱形的点上,菱形的点落在某条轴上方,而某条轴上的点只有一个维度上是非零,其余都是零,这就是为什么L1正则化最后的结果w是稀疏的。 @H_301_6@
总结
我的微信公众号是:数据科学家的日常,会记录一些我平时的学习心得以及各种机器学习算法的学习笔记,欢迎关注。