赞
踩
上一篇:机器学习笔记(5)——逻辑回归
到现在为止,我们已经学习了几种不同的学习算法,包括线性回归和逻辑回归,它们能够有效地解决许多问题,但是当将它们应用到某些特定的机器学习应用时,会遇到过拟合(over-fitting)的问题,可能会导致它们效果很差。在本文中我们将学习使用正则化来解决过拟合的问题。
如下图对同一个线性回归问题的三种拟合预测函数的方式,第一个属于欠拟合,第二个拟合得刚好,而第三个就是过拟合了。
旁白:这应该很容易领会吧,拟合函数对样本变化趋势不敏感 只拟合出一个模糊的大体趋势就是欠拟合,敏感过头了每个样本都想精确照顾到但却没抓住样本的整体趋势就是过拟合 ,所以做人要学会敏感得刚刚好掌控大局(扯远了hhh
过拟合:拟合出的预测函数可以非常好的适配训练用的数据,但是对于新数据的预测效果很差。又称这个算法具有高方差,就是为了适配现有的数据用了过多的变量去约束,导致代价函数值虽然接近于0,但是它的预测效果无法推广到新的样本中。
上述过拟合的问题在逻辑回归中也同样可能会存在,如下图对于同一个逻辑回归问题的决策边界划分,第一个简单画条直线就属于欠拟合了,第二个刚好,第三个就是过拟合了
旁白:过拟合问题的本质就在于样本数据本身也是存在误差的,有不确定因素有突变,不能确保所有数据都百分之百满足某种规律,如果一种拟合方式能满足百分之九十几的样本并且针对新数据的预测效果也在90%以上就很不错了,如果说为了强行适配几个突变的数据而把拟合函数变得非常复杂,没抓住样本实际的整体规律,即使能满足所有样本,对新样本的预测效果不一定好。总之我们做回归预测统计的是数据的整体规律而非完全精确计算。
当样本特征只有一两个时,我们通过画图可视化就很容易看出来是欠拟合还是过拟合了,并能做出相应的调整,但是当样本特征数量很多时就很难再可视化了。解决这个问题有两种方法,第一,减少特征的数量,有时候并不是所有特征都有用,有些算法可以自动选择有用的特征;第二,就是正则化,我们可以保留所有特征,但是减小其量级或其对应的参数θj的大小,这种方法在我们有很多特征每个特征都有一点影响时很有效。
如下图左边的拟合函数h()是刚好拟合的,如果加入了两个高阶项θ3x3和θ4x4,函数图像变得非常复杂(图右蓝色线)就呈现出过拟合了,但是这时候如果给代价函数J(θ)加上1000θ32和1000θ42(称为惩罚项),那么在迭代过程中为了使代价函数值尽可能小,θ3和θ4会自动被迭代到一个很小的值甚至接近于0,那么θ3x3和θ4x4这两项就约等于没有或者说影响很小了,那么最后拟合函数的图像又会变得平滑(图右粉色线),接近左边二次函数的图像。
从上述例子我们可以很容易理解出,高阶多项式的参数值越小,预测函数整体就越接近低阶函数,函数就会越平滑而不至于出现过拟合的问题。递推推广来说,如果我们在代价函数中给每一个参数θj都加上一个惩罚项,使得迭代出的参数θj都很小,那么预测函数整体就会比较平滑,这就是正则化的思想。
假设在房价模型中我们有100个特征,那么加上θ0总共就有101个参数,我们不知道哪些特征的相关性是比较低的,因此我们就不知道在代价函数中应该给哪些参数加上惩罚项,我们就可以直接缩小除了θ0外(约定俗成,除不除外对结果影响不大)的所有参数,即在代价函数中针对从θ1到θ100都加一个惩罚项λθj2,这些项合起来就叫正则化项,λ称为正则化参数,如下,那么最终得到的预测函数就会相对平滑
旁白:那可能有人就会想了,我这样同时给所有参数都加上惩罚项,是不是就相当于都没惩罚一样,但其实不是这样的,其实可以领会到缩小所有参数是对预测函数整体变化趋势的一种压缩(可以画个二次函数然后尝试缩小所有参数感受一下),并且在迭代过程中每个θj的变化都不一样,惩罚项并不是等比例对θj产生影响。如果控制好正则化参数λ的大小,就能一个合适的比较平滑的预测函数,如果你自己手动去实现这个算法,就会直观的看到这个效果。
如果正则化参数λ设置的过大,那么最终除了θ0外的所有参数都会被迭代到接近0,预测函数就变成了近乎于y=θ0的直线,这样就是欠拟合了显然也不行,因此选择一个合适的正则化参数就非常重要,之后会介绍一些方法可以自动的选择合适的λ。
我们前面讲了梯度下降和正规方程这两种线性回归中对代价函数进行最小化的方法,下面我们把正则化应用到其中,防止线性回归中的过拟合
梯度下降的每轮迭代过程就是每个θ参数当前值减去当前位置代价函数J(θ)针对它的偏导数,那么J(θ)内加了一项正则化项后,就是迭代过程中加了一项正则化项对θj的偏导, 很容易计算出这项偏导就是2λθj,再乘上外面的系数α(1/2m),就相当于迭代过程中θj还要额外减去一项α(λ/m)θj,就是将θj倍乘一个(1 - α(λ/m)),其他的都和原来的一样,而通常α很小m很大,所以这个倍乘系数通常是一个比1略小的数比如0.99这样。这样我们就能看出来正则化项是如何缩小参数θj的了。
之前我们讲了在线性回归中可以用正规方程一次性解出θ,但是由于部分突变数据的影响正规方程也可能存在过拟合。回顾一下,正规方程解θ的公式如下
我们只需要在其中加入一项n+1维(n为实际特征总数)的λ矩阵(对角线上除第一行的外其余都是λ,并且矩阵其余元素都是0。也可把λ提取到矩阵外,如下),就能实现对正规方程的正则化(推导暂略,但是也可以领会到由于x和y都是正数,括号内加了这样一个λ矩阵是增大了括号内计算出的矩阵中的元素值,再对其求逆其实是整体缩小了表达式的值,就是缩小了参数向量θ中的值)
并且在正规方程中加入这样一个正则化项还有一个好处,我们之前说可能会存在由于XTX不可逆导致正规方程用不了的问题,那么加入这样一个λ矩阵就能使得括号内的矩阵一定可逆了
在逻辑回归的梯度下降中使用正则化的形式和前面线性回归的其实是一样的,因为也是加入同样一个正则化项,在迭代过程中求偏导的结果是一样的,如下
到这里我们就已经学完了基本的线性回归与逻辑回归算法以及相关的正则化技巧,后面就要进入神经网络的世界了^^。最后放送一个吴恩达老师的蜜汁微笑,据说学到这里就已经超越很多硅谷工程师了(懂了,这就辞职去硅谷应聘)
下一篇:机器学习笔记(7)——神经网络初探
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。