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

想要解决过拟合问题,有两个办法:
(1) 减少特征的数量,可以通过一些特征选择的方法进行筛选。
(2) 正则化,通过引入一个正则项,限制参数的大小
代价函数
通过正则化解决过拟合问题,就是采用加入惩罚项的方法来减小参数的值,可以缓解过拟合的程度。
比如下面的曲线:

但是当特征值非常多的时候,我们并不知道每一个参数是否重要,所以需要把所有参数都缩小,因此惩罚项是从 θ1 到 θn,不处理 θ0。
代价方程如下:
J(θ)=2m1[i=1∑m(hθ(x(i))−y(i))2+λj=1∑mθj2]
其中 λ 为正则化参数,因为所有的参数都被处理了,所以 λ 的取值非常重要,否则就会出现拟合出一条水平线的情况。λ 的第一个目标是更好地去拟合训练集,第二个目标是将参数控制得更小。
线性回归的正则化
常规的梯度下降法:
θj=θj−αm1i=1∑m(hθ(x(i))−y(i))xj(i)(j∈[0,n])
把 θ0 和其它的 θj 分开处理,加入惩罚项之后的梯度下降法:
θ0=θ0−αm1i=1∑m(hθ(x(i))−y(i))x0(i)
θj=θj−α[m1i=1∑m(hθ(x(i))−y(i))xj(i)−mλθj](j∈[1,n])
其中 θj 化简之后:
θj=θj(1−αmλ)−αm1i=1∑m(hθ(x(i))−y(i))xj(i)(j∈[1,n])
常规的正规方程:
θ=(XTX)−1XTy
正则化的正规方程:
θ=⎝⎜⎜⎛XTX+λ⎣⎢⎢⎡01⋱1⎦⎥⎥⎤⎠⎟⎟⎞−1XTy
增加的矩阵是个n+1维的方阵,对角线上除了第一个元素为0其他都为1,非对角线上的元素全为 1。
Logistic回归的正则化
常规 Logistic 回归的代价函数:
J(θ)=−m1[i=1∑my(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))]
再进行正则化后的代价函数:
J(θ)=−m1[i=1∑my(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))]+2mλj=1∑nθj2(j∈[1,n])
常规 Logistic 回归的梯度下降法:
θj=θj−αm1i=1∑m(hθ(x(i))−y(i))xj(i)(j∈[1,n])
Logistic 回归进行正则化后的梯度下降法:
θ0=θ0−αm1i=1∑m(hθ(x(i))−y(i))x0(i)
θj=θj−α[m1i=1∑m(hθ(x(i))−y(i))xj(i)−mλθj](j∈[1,n])
注意 hθ(x) 的形式