【吴恩达系列】machine learning课程week3----正则化

正则化

1. 欠拟合(under fitting)和过拟合(over fitting)

  • 欠拟合:训练数据中有显著的预测误差
  • 过拟合:训练数据预测误差很小,但是测试数据预测误差很大

2 解决过拟合问题

2.1 通常情况
  1. 丢弃一些不能帮助我们正确预测的特征。可以是手工选择保留哪些特征,或者使用一 些模型选择的算法来帮忙(例如PCA)。
  2. 正则化。保留所有的特征,但是减少参数的大小(magnitude);当有很多个特征的时候,并且每个特征都会对最终预测值产生影响,正则化可以保证运作良好。
2.2 正则化costFunction和正则化参数 λ \lambda λ

正则化的目的是为了简化假设模型,根据奥卡姆剃刀原则,越简单的模型越不容易出现过拟合。 J ( θ ) = 1 m ∑ i = 1 m c o s t ( h θ ( x ) , y ) + λ 2 m ∑ j n θ j 2 J(\theta) =\frac{1}{m}\sum_{i=1}^m cost(h_\theta(x),y)+\frac{\lambda}{2m}\sum^n_j \theta_j^2 J(θ)=m1i=1mcost(hθ(x),y)+2mλjnθj2 其中 λ \lambda λ又称为正则化参数(RegularizationParameter)

  • 线性回归: c o s t ( h θ ( x ) , y ) = 1 2 ( h θ ( x ( i ) ) − y ( i ) ) 2 cost(h_\theta(x),y) = \frac{1}{2} (h_\theta(x^{(i)})−y^{(i)})^2 cost(hθ(x),y)=21(hθ(x(i))y(i))2
  • 逻辑回归: c o s t ( h θ ( x ) , y ) = − y log ⁡ ( h θ ( x ) ) − ( 1 − y ) log ⁡ ( 1 − h θ ( x ) ) cost(h_\theta(x),y)=-y\log(h_\theta(x))-(1-y)\log(1-h_\theta(x)) cost(hθ(x),y)=ylog(hθ(x))(1y)log(1hθ(x))

λ \lambda λ 控制两个不同目标之间的取舍,即更好的去拟合训练集的目标将参数控制的更小的目标,从而保持假设模型的相对简单,避免出现过拟合的情况。

  1. 选择的 λ \lambda λ太大:可能会过多地消除特征,导致 θ \theta θ都约等于 0 了,最终预测函数变成了水平直线了。这就变成了欠拟合的例子了(偏见性太强,偏差过高)。
  2. 选择的 λ \lambda λ太小:失去了正则项的意义。
2.3 正则化线性回归
2.3.1 梯度下降法

在线性回归中,我们的预测代价如下评估:
J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 + λ 2 m ∑ j n θ j 2 J(\theta) =\frac{1}{2m}\sum_{i=1}^m (h_\theta(x^{(i)})−y^{(i)})^2+\frac{\lambda}{2m}\sum^n_j \theta_j^2 J(θ)=2m1i=1m(hθ(x(i))y(i))2+2mλjnθj2

重复直到收敛:
       θ 0 : = θ 0 − α ∂ ∂ θ 0 J ( θ ) = θ 0 − α 1 m ∑ i = 1 m [ ( h θ ( x ( i ) ) − y ( i ) ) x 0 ( i ) ] \theta_0:=\theta_0-\alpha \frac{\partial}{\partial \theta_0} J(\theta)=\theta_0 - \alpha \frac{1}{m} \sum^m_{i=1}[(h_\theta(x^{(i)})- y^{(i)})x^{(i)}_0] θ0:=θ0αθ0J(θ)=θ0αm1i=1m[(hθ(x(i))y(i))x0(i)]
       θ j : = θ j − α ∂ ∂ θ j J ( θ ) = θ j ( 1 − α λ m ) − α 1 m ∑ i = 1 m [ ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) ] \theta_j:=\theta_j-\alpha \frac{\partial}{\partial \theta_j} J(\theta)=\theta_j(1-\alpha \frac{\lambda}{m}) - \alpha \frac{1}{m} \sum^m_{i=1}[(h_\theta(x^{(i)})- y^{(i)})x^{(i)}_j] θj:=θjαθjJ(θ)=θj(1αmλ)αm1i=1m[(hθ(x(i))y(i))xj(i)]    (对j=1,…,n)

这里 ( 1 − α λ m ) (1-\alpha \frac{\lambda}{m}) (1αmλ)会恒小于1,比如0.99。于是梯度下降的过程就是每次更新都把参数乘以 0.999,缩小一点点,然后再向最小点的方向移动一下,达到了Regularization 的目的。

2.3.2 正规方程法

在线性回归中,我们的预测代价如下评估:
J ( θ ) = 1 2 m ( X Θ − Y ) T ( X Θ − Y ) + λ 2 m ∣ ∣ Θ ∣ ∣ 2 2 J(\theta) =\frac{1}{2m}(X\Theta-Y)^T (X\Theta-Y)+\frac{\lambda}{2m}||\Theta||_2^2 J(θ)=2m1(XΘY)T(XΘY)+2mλΘ22

Θ = ( X T X + λ L ) − 1 X T Y \Theta = (X^T X + \lambda L)^{-1}X^T Y Θ=(XTX+λL)1XTY
其中 L = [ 0 1 ⋱ 1 ] L= \begin{bmatrix} 0 & & & & & \\ & 1 & & & &\\ & & & \ddots & \\ & & & & 1 \\ \end{bmatrix} L=011

在第二周课程中,提到了正规方程中,可以通过正则化解决不可逆问题。
为什么能解决不可逆?待补充
因此对于正规方程,正则化相当于一石二鸟。

2.3 正则化逻辑回归

预测代价如下评估:
J ( θ ) = [ 1 m ∑ i = 1 m − y log ⁡ ( h θ ( x ) ) − ( 1 − y ) log ⁡ ( 1 − h θ ( x ) ) ] + λ 2 m ∑ j n θ j 2 J(\theta) =[\frac{1}{m}\sum_{i=1}^m -y\log(h_\theta(x))-(1-y)\log(1-h_\theta(x))]+\frac{\lambda}{2m}\sum^n_j \theta_j^2 J(θ)=[m1i=1mylog(hθ(x))(1y)log(1hθ(x))]+2mλjnθj2

重复直到收敛:
       θ 0 : = θ 0 − α ∂ ∂ θ 0 J ( θ ) = θ 0 − α 1 m ∑ i = 1 m [ ( h θ ( x ( i ) ) − y ( i ) ) x 0 ( i ) ] \theta_0:=\theta_0-\alpha \frac{\partial}{\partial \theta_0} J(\theta)=\theta_0 - \alpha \frac{1}{m} \sum^m_{i=1}[(h_\theta(x^{(i)})- y^{(i)})x^{(i)}_0] θ0:=θ0αθ0J(θ)=θ0αm1i=1m[(hθ(x(i))y(i))x0(i)]
       θ j : = θ j − α ∂ ∂ θ j J ( θ ) = θ j ( 1 − α λ m ) − α 1 m ∑ i = 1 m [ ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) ] \theta_j:=\theta_j-\alpha \frac{\partial}{\partial \theta_j} J(\theta)=\theta_j(1-\alpha \frac{\lambda}{m}) - \alpha \frac{1}{m} \sum^m_{i=1}[(h_\theta(x^{(i)})- y^{(i)})x^{(i)}_j] θj:=θjαθjJ(θ)=θj(1αmλ)αm1i=1m[(hθ(x(i))y(i))xj(i)]    (对j=1,…,n)

注意:

  1. 虽然正则化的逻辑回归中的梯度下降和正则化的线性回归中的表达式看起来一样,
    但由于两者的 h θ ( x ) h_\theta(x) hθ(x) 不同,所以还是有很大差别。
  2. θ 0 \theta_0 θ0 不参与其中的任何一个正则化。

在Octave 中,我们依旧可以用 fminuc 函数来求解代价函数最小化的参数,值得注意的 是参数𝜃0的更新规则与其他情况不同。

⚠️补充:正则化与模型选择[待写] 链接

3. 代码

3.1 Python代码

代码地址待后续补充

3.2 Matlab代码

github地址

4. 参考资料

csdn笔记
gitbook笔记
课程翻译

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值