第5章:正则化

5.1 过拟合问题 The problem of overfitting

什么是过拟合问题?
我们继续用线性回归来预测房价的例子,我们通过建立以住房面积为自变量的函数来预测房价。我们可以用一次函数来拟合数据,但这不是一个很好的模型,通过数据可以明显看出,随着房子面积增大,住房价格应该逐渐稳定,该模型没有很好的拟合训练集,称为欠拟合高偏差;如果我们用二次函数来拟合数据,拟合效果很好;如果我们用四阶多项式来拟合数据,虽然我们完美地拟合了训练集但在测试集的表现效果很差,称为过拟合高方差
概括地说,如果我们有太多的特征变量,训练出的假设函数能很好地拟合训练集,即代价函数非常接近于0,但是无法泛化到新的样本中,称之为过拟合问题
【机器学习笔记】第5章:正则化
同样,逻辑回归也存在过拟合问题。
【机器学习笔记】第5章:正则化
怎样解决过拟合问题?
有两个方法解决过拟合问题:

  1. 减少选取特征变量的数量
    ①人工检查变量清单,并以此决定哪些变量应该保留
    ②模型选择算法,这种算法可以自动选择哪些变量保留
  2. 正则化
    ①保留所有的特征变量,但是减少量级或者参数θj\theta_j的大小
    ②当有很多特征变量时,这个方法非常有效,其中的每一个变量都能对预测的y值产生一点影响

5.2 代价函数 Cost function

正则化的思想就是给参数惩罚,使参数的值很小,这样就会得到更简单的假设函数,也就更不容易出现过拟合的问题。
如图所示,给θ3\theta_3θ4\theta_4前面各加一个很大的系数,那么优化的时候为了得到更小的值,那只能让θ3\theta_3θ4\theta_4更小,尽量接近于0。
【机器学习笔记】第5章:正则化
但是,当有很多特征变量时,我们很难预先挑选出哪些变量是相关度较低的,于是我们就不知道该选出哪些参数来缩小他们的值,所以我们要在代价函数中加入正则化项作为惩罚项来缩小每一个参数的值。
加入正则化项的代价函数J(θ)J(\theta)为:J(θ)=12m[i=1m(hθ(x(i))y(i))2+λj=1nθj2]J(\theta)=\frac{1}{2m}[\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2+\lambda\sum_{j=1}^n\theta_j^2]minθJ(θ)\min_\theta J(\theta)其中λ\lambda是正则化参数,它的作用就是控制两个不同目标之间的取舍,第一个目标也就是目标函数的第一项,为了更好地拟合数据;第二个目标也就是正则化项,为了保持参数尽量地小,从而避免出现过拟合的情况。
如果λ\lambda设置的过大,对参数的惩罚过多的时候,那就会使每个参数都接近于0,这样便会出现欠拟合的情况。

5.3 线性回归的正则化 Regularized linear regression

线性回归正则化后的代价函数为:
J(θ)=12m[i=1m(hθ(x(i))y(i))2+λj=1nθj2]J(\theta)=\frac{1}{2m}[\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2+\lambda\sum_{j=1}^n\theta_j^2]minθJ(θ)\min_\theta J(\theta)

5.3.1 基于梯度下降的线性回归正则化

Repeat {θ0:=θ0α1mi=1m(hθ(x(i))y(i))x0(i)\theta_0:=\theta_0-\alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_0^{(i)}θj:=θjα[1mi=1m(hθ(x(i))y(i))xj(i)+λmθj]\theta_j:=\theta_j-\alpha[\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}+\frac{\lambda}{m}\theta_j](j=1,2,3,,n)\qquad(j=1,2,3,\cdots,n)}
θj\theta_j变形得到:θj:=θj(1αλm)α1mi=1m(hθ(x(i))y(i))xj(i)\theta_j:=\theta_j(1-\alpha\frac{\lambda}{m})-\alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}
对于线性回归的正则化,我们惩罚的对象是θ1,θ2,,θn\theta_1,\theta_2,\cdots,\theta_n,不惩罚θ0\theta_0,所以把对θ0\theta_0的更新单独写出来。
由上面的式子可见,正则化之后的梯度下降更新与之前的梯度下降更新相比,θj\theta_j多乘了一个(1αλm)(1-\alpha\frac{\lambda}{m})。因为α\alpha很小而m很大,所以(1αλm)(1-\alpha\frac{\lambda}{m})是一个比1略小的值,相当于每次迭代的时候把参数缩小了一点点,或者说θj\theta_j的平方范数变小了。

5.3.1 基于正规方程的线性回归正则化

θ=(XTX+λ[0111])1XTy\theta=\left( X^TX+\lambda\begin{bmatrix} 0 \\ & 1\\ & & 1 \\ & & & \ddots \\ & & & & 1 \end{bmatrix}\right) ^{-1}X^Ty
之前我们知道当样本数m小于等于特征数n时,XTXX^TX是不可逆的,但是我们加了正则化项之后就永远可逆。正则化项可以解决不可逆问题。

5.4 Logistic回归的正则化 Regularized logistic regression

逻辑回归正则化后的代价函数为:J(θ)=1m[i=1my(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]+λ2mj=1nθj2J(\theta) = -\frac{1}{m}[\sum_{i=1}^my^{(i)}log(h_\theta(x^{(i)}))+(1-y^{(i)})log(1-h_\theta(x^{(i)}))]+\frac{\lambda}{2m}\sum_{j=1}^n\theta_j^2minθJ(θ)\min_\theta J(\theta)

5.4.1 基于梯度下降的逻辑回归正则化

Repeat {θ0:=θ0α1mi=1m(hθ(x(i))y(i))x0(i)\theta_0:=\theta_0-\alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_0^{(i)}θj:=θjα[1mi=1m(hθ(x(i))y(i))xj(i)+λmθj]\theta_j:=\theta_j-\alpha[\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}+\frac{\lambda}{m}\theta_j](j=1,2,3,,n)\qquad(j=1,2,3,\cdots,n)}
注意,虽然逻辑回归正则化的梯度下降与线性回归正则化的梯度下降形式上一样,但是内容不一样,这里的hθ(x)=11+eθTxh_\theta(x)=\frac{1}{1+e^{-\theta^Tx}}

5.4.2 基于高级优化算法的逻辑回归正则化

高级的优化算法需要我们自己写costFunction函数,costFunction函数有两个返回值jVal和gradient,jVal是用来计算J(θ)J(\theta),gradient是用来计算对J(θ)J(\theta)的偏导数,那我们在写的时候就要加上正则化项,如下图所示。
【机器学习笔记】第5章:正则化

相关文章: