机器学习笔记之正则化

在训练数据不够多,或者是过度训练的情况下,经常会导致过拟合正则化就是向原始模型引入额外信息,通过向目标函数添加一个参数范数惩罚项来降低模型容量的方法,以便于更好地拟合训练集。


过拟合问题

  • 线性回归中
    下图中是三种拟合情况:
    机器学习笔记之正则化图一的训练情况比较差,称为欠拟合、高偏差
    图二的训练情况和拟合都比较好。
    图三训练出的方程对数据的拟合过于完美,虽然匹配了每个训练集,但是不能很好地匹配测试集,无法比较准确地预测新数据,称为过拟合,高方差

  • Logistic回归中
    下图中是三种拟合情况:
    机器学习笔记之正则化
    图一中欠拟合,高偏差
    图二中拟合地比较好
    图三中过拟合,高方差

当特征数量很多,而训练模型比较少时,就会出现过拟合的情况:
机器学习笔记之正则化
想要解决过拟合问题,有两个办法:
(1) 减少特征的数量,可以通过一些特征选择的方法进行筛选。
(2) 正则化,通过引入一个正则项,限制参数的大小


代价函数

通过正则化解决过拟合问题,就是采用加入惩罚项的方法来减小参数的值,可以缓解过拟合的程度。

比如下面的曲线:
机器学习笔记之正则化
但是当特征值非常多的时候,我们并不知道每一个参数是否重要,所以需要把所有参数都缩小,因此惩罚项是从 θ1\theta_1θn\theta_n,不处理 θ0\theta_0

代价方程如下:
J(θ)=12m[i=1m(hθ(x(i))y(i))2+λj=1mθj2]J(\theta)=\frac1{2m}\left[\sum_{i=1}^m\left(h_\theta(x^{(i)})-y^{(i)}\right)^2+\lambda\sum_{j=1}^m\theta_j^2\right]
其中 λ\lambda正则化参数,因为所有的参数都被处理了,所以 λ\lambda 的取值非常重要,否则就会出现拟合出一条水平线的情况。λ\lambda 的第一个目标是更好地去拟合训练集,第二个目标是将参数控制得更小。


线性回归的正则化

  • 梯度下降法

常规的梯度下降法:
θj=θjα1mi=1m(hθ(x(i))y(i))xj(i)(j[0,n])\theta_j=\theta_j-α\frac{1}{m}\sum_{i=1}^m\left(h_\theta(x^{(i)})-y^{(i)}\right)x_j^{(i)}\quad (j\in[0,n])
θ0\theta_0 和其它的 θj\theta_j 分开处理,加入惩罚项之后的梯度下降法:
θ0=θ0α1mi=1m(hθ(x(i))y(i))x0(i)\theta_0=\theta_0-α\frac{1}{m}\sum_{i=1}^m\left(h_\theta(x^{(i)})-y^{(i)}\right)x_0^{(i)}

θj=θjα[1mi=1m(hθ(x(i))y(i))xj(i)λmθj](j[1,n])\theta_j=\theta_j-α\left[\frac{1}{m}\sum_{i=1}^m\left(h_\theta(x^{(i)})-y^{(i)}\right)x_j^{(i)}-\frac{\lambda}{m}\theta_j\right]\quad (j\in[1,n])
其中 θj\theta_j 化简之后:
θj=θj(1αλm)α1mi=1m(hθ(x(i))y(i))xj(i)(j[1,n])\theta_j=\theta_j(1-α\frac{\lambda}{m})-α\frac{1}{m}\sum_{i=1}^m\left(h_\theta(x^{(i)})-y^{(i)}\right)x_j^{(i)}\quad (j\in[1,n])

  • 正规方程

常规的正规方程:
θ=(XTX)1XTy\theta=(X^TX)^{-1}X^Ty
正则化的正规方程:
θ=(XTX+λ[011])1XTy\theta=\left(X^TX+\lambda \left[\begin{matrix} 0 & & & \\ & 1 & & \\ & & \ddots & \\ & & & 1 \end{matrix}\right]\right)^{-1} X^Ty
增加的矩阵是个n+1维的方阵,对角线上除了第一个元素为0其他都为1,非对角线上的元素全为 1。


Logistic回归的正则化

常规 Logistic 回归的代价函数:
J(θ)=1m[i=1my(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))]J(\theta)=-\frac1m\left[\sum_{i=1}^my^{(i)}logh_\theta(x^{(i)})+\left(1-y^{(i)}\right)log\left(1-h_\theta(x^{(i)})\right)\right]
再进行正则化后的代价函数:
J(θ)=1m[i=1my(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))]+λ2mj=1nθj2(j[1,n])J(\theta)=-\frac1m\left[\sum_{i=1}^my^{(i)}logh_\theta(x^{(i)})+\left(1-y^{(i)}\right)log\left(1-h_\theta(x^{(i)})\right)\right]+\frac{λ}{2m}\sum_{j=1}^n\theta_j^2\quad (j\in[1,n])
常规 Logistic 回归的梯度下降法:
θj=θjα1mi=1m(hθ(x(i))y(i))xj(i)(j[1,n])\theta_j=\theta_j-α\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}\quad(j\in[1,n])
Logistic 回归进行正则化后的梯度下降法:
θ0=θ0α1mi=1m(hθ(x(i))y(i))x0(i)\theta_0=\theta_0-α\frac{1}{m}\sum_{i=1}^m\left(h_\theta(x^{(i)})-y^{(i)}\right)x_0^{(i)}

θj=θjα[1mi=1m(hθ(x(i))y(i))xj(i)λmθj](j[1,n])\theta_j=\theta_j-α\left[\frac{1}{m}\sum_{i=1}^m\left(h_\theta(x^{(i)})-y^{(i)}\right)x_j^{(i)}-\frac{\lambda}{m}\theta_j\right]\quad (j\in[1,n])
注意 hθ(x)h_\theta(x) 的形式