吴恩达机器学习(五)正则化(解决过拟合问题)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhq9695/article/details/82830631

目录

0. 前言

1. 正则化(Regularization)

2. 线性回归中的正则化

3. 逻辑回归中的正则化


学习完吴恩达老师机器学习课程的正则化,简单的做个笔记。文中部分描述属于个人消化后的理解,仅供参考。

如果这篇文章对你有一点小小的帮助,请给个关注喔~我会非常开心的~

0. 前言

在分类或者回归时,通常存在两个问题,“过拟合”(overfitting)和“欠拟合”(underfitting).

  • 过拟合:曲线为了减少代价函数,一味地拟合数据,使得样本中几乎每一个数据都能正确被分类(回归),导致过度拟合,不能泛化新的样本,通常具有高方差(high variance)
  • 欠拟合:曲线的拟合度不够,太多的数据并没有被拟合到,通常具有高偏差(high bias)

通常,在过拟合的情况中,存在过量的特征,有以下两种解决办法:

  • 减少特征量
  • 采用正则化

1. 正则化(Regularization)

由于造成过拟合的原因可能是太多的特征量,所以可采用减少特征量的方法。但是不妨换种思路,减少特征量的权值(这个特征乘以的 \theta 很小),来达到目的。

例如,对于 h_{\theta}(x)=\theta_{0}+\theta_{1}x_{1}+\theta_{2}x_{2}+\theta_{3}x_{3}+\theta_{4}x_{4},已知 x_{3}\ x_{4} 的关联度不大,我们需要减少它的权值(\theta_{3}\ \theta_{4}),可将代价函数修改为 J(\theta)=\frac{1}{2m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^2+1000\theta_{3}^{2}+1000\theta_{4}^{2},这样为了降低 J(\theta),就会使得 \theta_{3}\ \theta_{4} \rightarrow 0,达到了减小特征的目的。

但是通常,我们不知道哪些特征量是无关的,所以给出修改后的代价函数定义:

扫描二维码关注公众号,回复: 3373697 查看本文章

 \large J(\theta)=\frac{1}{2m}[\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^2+\lambda\sum_{i=1}^{n}\theta_{j}^{2}]

其中,\lambda 称为正则化参数,\lambda\sum_{i=1}^{n}\theta_{j}^{2} 称为正则项,目的是使得 \theta_{j} 减小。正则化使得假设函数更加简单,减小发生过拟合概率。

注:如果 \lambda 过大,会造成 \theta_{j}\rightarrow 0 \ (j=1,2,...,n),使得 h_{\theta}(x)=\theta_{0},造成欠拟合。

2. 线性回归中的正则化

在线性回归中运用正则化,我们已知代价函数和梯度下降法如下定义:

\large \begin{align*} J(\theta)&=\frac{1}{2m}[\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^2+\lambda\sum_{i=1}^{n}\theta_{j}^{2}]\\ \theta_{j} & :=\theta_{j}-\alpha \frac{\partial }{\partial \theta_{j} }J(\theta) \end{align*}

代入可得:

\large \begin{align*} \theta_{0} & := \theta_{0}-\alpha \frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x_{0}^{(i)}\\ \theta_{j} & := \theta_{j}-\alpha[ \frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x_{j}^{(i)}+\frac{\lambda}{m}\theta_{j}]\ (j=1,2,...,n)\\ \Rightarrow \theta_{j}&:=\theta_{j}(1-\alpha\frac{\lambda}{m})-\alpha\frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x_{j}^{(i)}\ (j=1,2,...,n) \end{align*}

其中,1-\alpha\frac{\lambda}{m}< 1,所以相当于 \theta_{j} 乘以一定的权值,然后再减去梯度下降的变化量。

同样,在正规方程中,也可以使用正则化:

\large \theta=(X^{T}X+\begin{bmatrix} 0 & & & & \\ & 1 & &0 & \\ & & 1 & & \\ & 0 & &... & \\ & & & &1 \end{bmatrix})^{-1}X^{T}y

此时,可以保证,中间项一定不是奇异矩阵,一定存在逆矩阵。

3. 逻辑回归中的正则化

与上述类似,代价函数可表示为:

\large \begin{align*} J(\theta)&= -\frac{1}{m}\sum_{i=1}^{m}[y^{(i)}log(h_{\theta}(x^{(i)}))+(1-y^{(i)})log(1-h_{\theta}(x^{(i)}))]\\ &+ \frac{\lambda}{2m}\sum_{j=1}^{n}\theta_{j}^{2} \end{align*}

梯度下降法可表示为:

\large \begin{align*} \theta_{0} & := \theta_{0}-\alpha \frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x_{0}^{(i)}\\ \theta_{j} & := \theta_{j}-\alpha[ \frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x_{j}^{(i)}+\frac{\lambda}{m}\theta_{j}]\ (j=1,2,...,n)\end{align*}

逻辑回归中的 h_{\theta}(x) 是在 \theta^{T}x 外包裹了一层 sigmoid 函数的,与线性回归不同,所以梯度下降法看似相同却不同。


如果这篇文章对你有一点小小的帮助,请给个关注喔~我会非常开心的~

猜你喜欢

转载自blog.csdn.net/zhq9695/article/details/82830631