过拟合问题
-
概念
-
过拟合解决方案
- 减少选取的变量
x
的数量。人工或者算法选择
- 正则化。保留所有变量,但是降低阶数或者减小θj
正则化
线性回归正则化
代价函数
假设拟合函数为θ0+θ1x+θ2x2+θ3x3+θ4x4,代价函数为θmin2m1∑i=1m(hθ(xi)−yi)2。此时出现过拟合现象。此时可以将代价函数改为θmin2m1∑i=1m(hθ(xi)−yi)2+1000θ32+1000θ42,来使得θ3,θ4的值最小,以此降低高阶项的影响,从而解除过拟合。即当拟合函数中存在高阶变量且出现过拟合时,可以给高阶变量的参数设定一定的惩罚机制,将高阶变量的影响降到最低。
如果只知道变量,而不知道啊变量的具体阶数,此时可以修改代价函数为2m1[i=1∑m(hθ(xi)−yi)2+λj=1∑mθj2]来缩小每一个参数。其中λ称为正则化参数,用于控制两项之间的关系,以更好的进行拟合。
注意,正则化惩罚的参数为θ1,θ1,…,θn,没有惩罚θ0。
梯度下降算法的正则化
重复执行
θ0θj:=θ0−αm1i=1∑m(hθ(xi)−yi)x0i:=θj(1−αmλ)−αm1i=1∑m(hθ(xi)−yi)xji , (j=1,2,3,…,n)
标准方程算法的正则化
θ的求解公式变为
θ=(XTX+λ⎣⎢⎢⎢⎢⎢⎡0⋮01⋯1⋯⋱0⋮1⎦⎥⎥⎥⎥⎥⎤)−1XTy,矩阵为(n+1)×(n+1)阶,n为变量数
当λ>0时,括号内的矩阵一定可逆
逻辑回归正则化
代价函数
修改为J(θ)=−m1i=1∑m[yilog(hθ(xi))+(1−yi)log(1−hθ(xi))]+2mλj=1∑nθj2
梯度下降算法的正则化
重复执行
θ0θj:=θ0−αm1i=1∑m(hθ(xi)−yi)x0i:=θj(1−αmλ)−αm1i=1∑m(hθ(xi)−yi)xji , (j=1,2,3,…,n)
高级算法的正则化
首先定义一个costFunction(theta)
,此函数返回代价函数值和代价函数的偏导数的值。
1 2 3 4 5
| function [jVal,gradient] = costFunction(theta) jVal = (theta(1)-5)^2+(theta(2)-5)^2; gradient = zeros(2,1); gradient(1) = 2*(theta(1)-5); gradient(2) = 2*(theta(2)-5);
|

然后设置参数,并调用高级优化函数
1 2 3
| options = optimset('GradObj','on','MaxIter','100'); initialTheta = zeros(2,1); [optTheta,functionVal,exitFlag] = fminunc(@costFunction,initialTheta,options)
|