第七章 正则化(Regularization)
第1节 解决过拟合的问题(Solving the Problem of Overfitting)
7.1 过拟合的问题
参考视频 : 7 - 1 - The Problem of Overfitting (10 min).mkv
我们目前学习了线性回归和逻辑回归算法,它们能有效地解决问题,但将其应用到特定的机器学习应用是,会遇到过拟合(over-fitting)的问题,导致模型的预测效果变差。
用线性回归中的预测房价举例:
第一个模型是一个线性模型,属于欠拟合;第三个是一个四次方的模型,过分地拟合了原始数据,丢失了算法的本质:预测新数据,它预测新数据的表现一定会很差!
分类问题举例:
以多项式理解,xxx的次数越高,拟合得越好,但相应的预测新数据的能力就变得很差!
发现了过拟合问题,我们应该如何处理?
- 丢弃一些不能帮助我们正确预测的特征。可以手工选择保留那些特征,或使用一些模型选择的算法(PCA等)来帮助清洗数据
- 正则化。保留所有的特征,但是减小参数的大小(magnitude)
7.2 代价函数
参考视频 : 7 - 2 - Cost Function (10 min).mkv
在回归问题中假设模型是:hθ(x)=θ0+θ1x1+θ2x22+θ3x33+θ4x44h_{\theta}(x)=\theta_0+\theta_1x_1+\theta_2x_2^2+\theta_3x_3^3+\theta_4x_4^4hθ(x)=θ0+θ1x1+θ2x22+θ3x33+θ4x44,我们可以看出来:正是那些高次项导致了过拟合的产生。所以如果我们能让这些高次项的系数接近于0的话,我们就能很好的拟合了。
如何减小高次项的系数θ\thetaθ值呢?这就是正则化的基本方法。如果要减小θ3,θ4\theta_3,\theta_4θ3,θ4,我们需要修改代价函数,为θ3,θ4\theta_3,\theta_4θ3,θ4设置惩罚项。修改后的代价函数如下:J(θ)=12m∑i=1m(hθ(x(i))−y(i))2+10000θ32+10000θ42minθJ(θ)J(\theta)=\frac{1}{2m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y{(i)})^2+10000\theta_3^2+10000\theta_4^2 \\ \underset{\theta}{min}J(\theta)J(θ)=2m1i=1∑m(hθ(x(i))−y(i))2+10000θ32+10000θ42θminJ(θ)之后在最小化代价函数时也会把惩罚项考虑在内,导致选择较小的θ3,θ4\theta_3,\theta_4θ3,θ4。
假如我们有非常多的特征,而且不知道哪些特征需要进行惩罚,我们将对所有的特征进行惩罚,一般化的代价函数如下:J(θ)=12m[∑i=1m(hθ(x(i))−y(i))2+λ∑j=1nθj2]J(\theta)=\frac{1}{2m}\left [ \sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y{(i)})^2+\lambda\sum_{j=1}^n\theta_j^2 \right ]J(θ)=2m1[i=1∑m(hθ(x(i))−y(i))2+λj=1∑nθj2]其中λ\lambdaλ称为正则化参数(Regularization Parameter)。注:根据惯例,我们不对θ0\theta_0θ0进行惩罚。经过正则化出里的模型与原模型的可能对比如下图所示:
如果选择的正则化参数过大,则会把所有的参数都最小化了,导致模型变成hθ(x)=θ0h_{\theta}(x)=\theta_0hθ(x)=θ0,也就是上图中的红色直线,是欠拟合。
所以对于正则化,我们要取一个合理的正则化参数值,这样才能取得比较好的效果。
7.3 正则化线性回归
之前介绍过两种求解线性回归的算法:一种基于梯度下降,一种基于正规方程。
(一)基于梯度下降求解正则化线性回归:J(θ)=12m[∑i=1m(hθ(x(i))−y(i))2+λ∑j=1nθj2]minθJ(θ)J(\theta)=\frac{1}{2m}\left [\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^2+\lambda\sum_{j=1}^n\theta_j^2 \right ] \\ \underset {\theta}{min}J(\theta)J(θ)=2m1[i=1∑m(hθ(x(i))−y(i))2+λj=1∑nθj2]θminJ(θ)
梯度下降算法为:Repeat{ θj:=θj−α∂∂θjJ(θ) }Repeat \{ \ \theta_j := \theta_j-\alpha\frac {\partial }{\partial \theta_j}J(\theta) \ \}Repeat{ θj:=θj−α∂θj∂J(θ) }
求偏导数,分为j=0j=0j=0无惩罚和j≠0j≠0j̸=0有惩罚:{j=0,∂∂θ0J(θ)=1m∑i=1m(hθ(x(i))−y(i))⋅x0(i)j≠0,∂∂θjJ(θ)=1m[∑i=1m(hθ(x(i))−y(i))⋅xj(i)+λθj]\left\{\begin{matrix}j=0, \frac {\partial }{\partial \theta_0}J(\theta)=\frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})\cdot x^{(i)}_0 \\ j\neq 0, \frac {\partial }{\partial \theta_j}J(\theta)=\frac{1}{m}\left[\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})\cdot x^{(i)}_j+\lambda \theta_j \right] \end{matrix}\right.{j=0,∂θ0∂J(θ)=m1∑i=1m(hθ(x(i))−y(i))⋅x0(i)j̸=0,∂θj∂J(θ)=m1[∑i=1m(hθ(x(i))−y(i))⋅xj(i)+λθj]
所以正则化线性回归的梯度下降算法为:
Repeat{Repeat \{Repeat{ θ0:=θ0−α1m∑i=1m(hθ(x(i))−y(i))⋅x0(i)θj:=θj−α1m[∑i=1m(hθ(x(i))−y(i))⋅xj(i)+λθj]\theta_0 := \theta_0-\alpha\frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})\cdot x^{(i)}_0 \\ \theta_j := \theta_j - \alpha \frac{1}{m}\left[\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})\cdot x^{(i)}_j+\lambda \theta_j \right]θ0:=θ0−αm1i=1∑m(hθ(x(i))−y(i))⋅x0(i)θj:=θj−αm1[i=1∑m(hθ(x(i))−y(i))⋅xj(i)+λθj] }\}}
(二)基于正规方程求解正则化线性回归:
θ=(XTX+λ[0111])−1XTy\theta=\left( X^TX+\lambda\begin{bmatrix}
0& & & \\
& 1& & \\
& & 1& \\
& & & 1
\end{bmatrix}\right)^{-1}X^Tyθ=⎝⎜⎜⎛XTX+λ⎣⎢⎢⎡0111⎦⎥⎥⎤⎠⎟⎟⎞−1XTy 其中矩阵大小为(n+1)*(n+1)
7.4 正规化逻辑回归
参考视频:7 - 4 - Regularized Logistic Regression (9 min).mkv
逻辑回归的代价函数:J(θ)=−1m∑i=1m[y(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))]J(\theta)=-\frac {1}{m}\sum_{i=1}^{m} \left[y^{(i)}log h_{\theta}(x^{(i)}) + (1-y^{(i)})log(1-h_{\theta}(x^{(i)}))\right]J(θ)=−m1i=1∑m[y(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))]
正则化后的代价函数:J(θ)=−1m∑i=1m[y(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))]+λ2m∑j=1nθj2J(\theta)=-\frac {1}{m}\sum_{i=1}^{m} \left[y^{(i)}log h_{\theta}(x^{(i)}) + (1-y^{(i)})log(1-h_{\theta}(x^{(i)}))\right]+\frac{\lambda}{2m}\sum_{j=1}^{n}\theta_j^2J(θ)=−m1i=1∑m[y(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))]+2mλj=1∑nθj2
所以正则化逻辑回归的梯度下降算法为:
Repeat{θ0:=θ0−α1m∑i=1m(hθ(x(i))−y(i))⋅x0(i)θj:=θj−α1m[∑i=1m(hθ(x(i))−y(i))⋅xj(i)+λθj]}\text{Repeat\{} \\ \quad \theta_0 := \theta_0-\alpha\frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})\cdot x^{(i)}_0 \\ \quad \theta_j := \theta_j - \alpha \frac{1}{m}\left[\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})\cdot x^{(i)}_j+\lambda \theta_j \right] \\ \}Repeat{θ0:=θ0−αm1∑i=1m(hθ(x(i))−y(i))⋅x0(i)θj:=θj−αm1[∑i=1m(hθ(x(i))−y(i))⋅xj(i)+λθj]}
注意:虽然正则化逻辑回归的梯度下降的表达式和正则化线性回归的看起来一样,但是逻辑回归的hθ(x)=g(θTx)h_{\theta}(x)=g(\theta^Tx)hθ(x)=g(θTx)与线性回归hθ=θTxh_{\theta}=\theta^Txhθ=θTx不同。记住θ0\theta_0θ0不参与正则化。
目前大家对机器学习算法可能还只是略懂,不过一旦你精通了线性回归、高级优化算法和正则化技术,就已经说明你对机器学习理解已经非常深入了。

本文探讨了机器学习中常见的过拟合问题,并介绍了通过正则化技术来解决这一问题的方法。文中详细解释了正则化在线性回归及逻辑回归中的应用,包括修改代价函数以惩罚过大的参数值,以及在梯度下降和正规方程法中的具体实现。
7320

被折叠的 条评论
为什么被折叠?



