机器学习—模型过拟合的解决方法

1. 过拟合(Over fitting)的定义

为了更好的描述欠拟合和过拟合,我先借用一下吴恩达课程中的一张图来描述一下。

对于一个简单的数据集(x,y),x代表特征,y代表结果。

上图中的左边这幅图,它采用了只有两个参数的hypothesis:h_{\theta}(x)=\theta_{0}+\theta_{1}x\theta_{0}表示偏置),我们可以看到这个函数不能很好的拟合所有的点,也称这个模型欠拟合。

对于中间这幅图,它加了一个特征:x^2;从而得到有三个参数的hypothesis:h_{\theta}(x)=\theta_{0}+\theta_{1}x+\theta_{2}x^{2}得到图中的一条曲线,我们可以看到其拟合效果还算可以。

对于最右边的这幅图,我们在最左边的图的基础上给它添加了多个参数是hypothesis变成了一个五次多项式:h_{\theta}(x)=\sum_{i=0}^{5}\theta_{i}x^{i},我们可以看到这个曲线穿过了图中所有的点,但是用于测试数据时,其正确率可能会很低,因为他过分拟合了测试集中的数据而使假设变得过度严格,这种情况可称之为过拟合。过拟合的征兆一般是在训练集上正确率很高,但是在测试集上正确率很低。

2. 过拟合的解决方法

我们从上面过拟合的例子可以知道,因为参数过多导致了过拟合的发生,那么过拟合的解决方法就有以下两种:

  • 人工选择参数,减少一些不必要的参数
  • 让模型自动的选择参数,或者降低不必要的参数的权重
  • 增大训练集

对第一种方法,实际可行度不高,因为需要做大量的测试才能确定一个参数是否有用。所以一般采用第二种方法,该方法也叫正则化(Regularization)。

3. 正则化

正则化防止模型过拟合的做法就是保留所有的特征但是减少该特征所对应的参数的大小,也就是\theta_{j}x_{j}中的\theta_{j}的大小,从而使该特征在整个模型中的权重减少。

4. 正则化后的线性回归模型

加了正则化后的线性回归模型的Cost function为:J(\theta)=\frac{1}{2m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^{2}+\lambda\sum_{j=1}^{n}\theta_{j}^{2}

上式中,m表示训练样本的数量,n表示参数的个数,\lambda表示正规系数。这里我们要注意对\theta_{0}不做正则化,因为\theta_{0}表示偏置,没有对应的特征。

与上式Cost function相对应的Gradient descend步骤如下:

\theta_{0} = \theta_{0}-\alpha\frac{\partial }{\partial J(\theta_{0})}J(\theta)=\theta_{0}-\alpha\frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x_{0}^{(i)}

\theta_{j} = \theta_{j}-\alpha\frac{\partial }{\partial J(\theta_{j})}J(\theta)=\theta_{j}-\alpha[(\frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x_{0}^{(i)})+\frac{\lambda}{m}\theta_{j}]

因为Cost function中加入了每个参数的平方,那么如果该参数对应的特征没有多大用处的时候,梯度下降过程中就会对该参数减少,从而改变该特征的权重。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值