在前面介绍了线性回归和逻辑回归,他们经常会遇到一个叫做过拟合(overfitting)的问题。
例如前面讲的房价预测例子,用线性回归拟合我们的数据:
如果假设函数 h θ ( x ) h_{\bm{\theta}}(\boldsymbol{x}) hθ(x)(hypothesis function)参数太多,容易形成第 ③ 个曲线的样子。
如果假设函数过于简单,则结果像 ① 那样,欠拟合。
对于逻辑回归的分类问题也是如此:
从图中可以看到,通常在参数较多的时候发生过拟合(最右边的曲线)。
这个时候它会拼命地拟合训练集,并且损失看起来很低。
但是对新的样本泛化能力不强。
处理办法:
(1) 减少选取变量的数量。
---- 手动选出要删除或保留的特征。(重要的保留,无用的去掉)
---- 模型算法自动选择。(后面讲)
(2) 正则化。
---- 所有特征都要,但是降低第 j j j 个特征的权重 θ j \theta_j θj。
看回这个例子:
明显第 ① 条曲线是很优秀的,第 ② 条有点过拟合。
为了改进图 ② ,我们想把 θ 3 \theta_3 θ3 θ 4 \theta_4 θ4 干掉,我们在代价函数加上两项蓝色的东西:
J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x i ) − y i ) 2 + 1000 θ 3 2 + 1000 θ 4 2 J(\bm{\theta})=\frac{1}{2m} \sum^{m}_{i=1} \left( \; h_{\bm{\theta}}\left(x^i\right)- y^i \;\right)^2 \color{blue}{+ 1000 \, \theta_3^2 + 1000\, \theta_4^2} J(θ)=2m1i=1∑m(hθ(xi)−yi)2+1000θ32+1000θ42
这两个东西会使整个代价函数变得很大。
在拟合参数的时候,为了降低这两个东西对代价函数的影响, θ 3 \theta_3 θ3 和 θ 4 \theta_4 θ4 会尽量变得小,甚至为零。于是就达到了我们的目的: θ 3 ≈ 0 , θ 4 ≈ 0 \theta_3 \approx 0,\theta_4 \approx 0 θ3≈0,θ4≈0:
就变得和第 ① 条曲线一样了。
通常的写法是这样:
J ( θ ) = 1 2 m [ ∑ i = 1 m ( h θ ( x i ) − y i ) 2 + λ ∑ j = 1 n θ j 2 ] (1) J(\bm{\theta})=\frac{1}{2m} \left[ \sum^{m}_{i=1} \left( \; h_{\bm{\theta}}\left(x^i\right)- y^i \;\right)^2 +\textcolor{red}{\lambda \sum^{n}_{j=1} \theta_j^2}\right]\tag{1} J(θ)=2m1[i=1∑m(hθ(xi)−yi)2+λ