机器学习--正则化(regularization)防止分类器过拟合

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/helen1313/article/details/53036791

本文参考吴恩达《机器学习》课程。

要介绍正则化,先要介绍一下过拟合的概念。

1 过拟合(overfitting)

         拿线性回归中(房价-房子面积)为例,如下图,最左边那幅图中,我们用线性回归(一次函数,因为只有一个特征size)来进行拟合,可以看到拟合出来的线大致反应出房价的趋势,但是并没有很好的拟合,这种情况我们称之为欠拟合(underfitting);为了更好的拟合,中间图我们用二次函数(即令x1=2, x2=x^2)来进行拟合,可以看到曲线很好的跟踪了样本点(样本点基本就在曲线的附近);当我们用更高的阶来拟合样本点时,如最右边图所示,可以看到样本点很好的落在曲线上,但是显然的,这条曲线不是一条好的预测曲线,当再来一个新的样本点,我们进行预测时,这条曲线的预测能力会很差,因为它过分的去拟合了训练样本,从而不再适应于新的样本,我们称这种情况叫过拟合(overfitting)。同时,我们也会说这条曲线的泛化能力很差(一个从训练集得到的模型是否能够很好的泛化到新的样本上,称为这个模型的泛化能力)。通俗的理解过拟合:过分的拟合了训练样本,也就是说,模型不仅学习了样本的一般特性,还把样本的个体特殊特性也学习了,从而,当模型应用到新来的数据时,效果不是很好。


    过拟合不仅仅出现在高阶次的拟合,当数据量较小,特征数较大的时候,过拟合也会产生(其实阶次高,就是特征数大)。

    避免过拟合是分类器设计中的一个核心任务。通常采用增大数据量和测试样本集的方法对分类器性能进行评价。

下图是逻辑回归欠拟合&过拟合的例子。

    要选得到一个好的分类器,我们必须让分类器不出现过拟合的情况,那我们如何应对过拟合呢?主要有两种方法:

1.     减少特征(feature)数量:

    a)      手动减少特征数

    b)      model selection algorithm(后面会讲到)

2.     正则化:保留所有的特征,但是减少每个特征对应参数theta的值;事实证明,正则化这个方法很有效。

2 正则化(regularization)

1 线性回归的正则化

原形式:

         首先,回顾一下没有正则化时,线性回归算法。

代价函数(cost function):

批处理梯度下降法(batchgradient descent):

正则化:

代价函数(cost function):


其中,  是一个正数。

      如何理解上式?可以把上式分为两部分,左边部分即为原始的代价函数,右边部分为正则化项(注意:正则化项中不包含theta0)。我们的目标是最小化整个代价函数,增加了右边这一项以后,为了让整个式子总体变小,势必要减小theta的值,即相当于弱化了训练集对模型的作用。可以想一下极端情况帮助理解:当=0时,相当于没有加正则化项,模型容易处于过拟合状态;当取值很大,为了让代价函数最小,势必将theta 1~theta n的值取为0,此时我们的假设函数h(x)=theta0是一条直线,相当于严重的欠拟合(没有拟合训练样本)。

批处理梯度下降法更新theta值(batchgradient descent),同样注意theta0不需要加正则化项:

Repeat{

}

可以看到,由于学习速率a>0, >0(而且这两个值一般都是很小的正数),所以1-a <1,即每次theta在更新的时候都会缩小一下。

2 逻辑回归的正则化

原形式:

         注意到,在逻辑回归中,我们利用似然函数对数值的最大值来求解:


那么,我们可以定义逻辑回归的代价函数(costfunction)如下:

逻辑回归theta更新如下:

正则化:

代价函数(cost function):

逻辑回归theta更新如下:

Repeat{

}


展开阅读全文

没有更多推荐了,返回首页