正则化——解决过拟合问题

线性回归例子

如果

\[{h_\theta }\left( x \right) = {\theta _0} + {\theta _1}x\]

通过线性回归得到的曲线可能如下图

这种情况下,曲线对数据的拟合程度不好。这种情况称为“Underfit”,这种情况属于“High bias”(高偏差)。

如果

\[{h_\theta }\left( x \right) = {\theta _0} + {\theta _1}x + {\theta _2}{x^2}\]

通过线性回归得到的曲线可能如下图

这种情况下,曲线对数据的拟合程度就比较好,可以称为“Just right”。。。

如果

\[{h_\theta }\left( x \right) = {\theta _0} + {\theta _1}x + {\theta _2}{x^2} + {\theta _3}{x^3} + {\theta _4}{x^4}\]

通过线性回归得到的曲线可能如下图

这种情况下虽然对现有数据有很好的拟合程度,但是对于新的数据预测是不合理的。这种情况称为“Overfit”,这种情况属于“High variance”(高方差)。



什么情况会出现过拟合呢?

if we have too many features, the learned hypothesis may fit the training set very well (J(θ)≈0), but fail to generalize to new examples (predict prices on new examples).

如果我们有太多的特征,学习的假设可能非常适合训练集(J(θ)≈0),但不能推广到新的例子(预测新例子的价格)。



在列举逻辑回归的例子

如果

\[\begin{array}{l}
{h_\theta }\left( x \right) = g\left( {{\theta _0} + {\theta _1}{x_1} + {\theta _2}{x_2}} \right)\\
\left( {g = sigmoid\_function} \right)
\end{array}\]

这种情况属于“Underfit”

如果

\[{h_\theta }\left( x \right) = g\left( {{\theta _0} + {\theta _1}{x_1} + {\theta _2}{x_2} + {\theta _3}x_1^2 + {\theta _4}x_2^2 + {\theta _5}{x_1}{x_2}} \right)\]

这种情况属于“Just right”

如果

\[{h_\theta }\left( x \right) = g\left( {{\theta _0} + {\theta _1}{x_1} + {\theta _2}x_1^2 + {\theta _3}x_1^2{x_2} + {\theta _4}x_1^2x_2^2 + {\theta _5}x_1^2x_2^3 + ...} \right)\]

这种情况属于“Overfit”



如何解决过拟合?

方案1:

Reduce number of features.

  • Manually select which features to keep.
  • Model selection algorithm

减少特征的数量

  • 人工决定保留哪些特征
  • 运用模型选择算法

存在的问题:去掉特征就意味着去掉“Information”,如果去掉了有用的信息就不好了

方案2:

Regularization

  • Keep all the features, but reduce magnitude/values of parameters θj

正规化

  • 保留所有特征,但减少参数θj的幅度/值

优点:Works well when we have a lot of features, each of which contributes a bit to predicting y.

当我们有很多特征时效果很好,每个功能都有助于预测y。



正则化具体实现

对比以下两种情况

\[{h_\theta }\left( x \right) = {\theta _0} + {\theta _1}x + {\theta _2}{x^2}\]

\[{h_\theta }\left( x \right) = {\theta _0} + {\theta _1}x + {\theta _2}{x^2} + {\theta _3}{x^3} + {\theta _4}{x^4}\]

假设我们使θ3,θ4很小,那么x3和x4的影响就会很小,这时过拟合的公式结果就很接近好的情况

我们先假设使用如下公式

\[J\left( \theta  \right) = \frac{1}{{2m}}\sum\limits_{i = 1}^m {{{\left( {{h_\theta }\left( {{x^{\left( i \right)}}} \right) - {y^{\left( i \right)}}} \right)}^2}}  + 1000\theta _3^2 + 1000\theta _4^2\]

线性回归的目的是

\[\mathop {\min }\limits_\theta  \frac{1}{{2m}}\sum\limits_{i = 1}^m {{{\left( {{h_\theta }\left( {{x^{\left( i \right)}}} \right) - {y^{\left( i \right)}}} \right)}^2}}  + 1000\theta _3^2 + 1000\theta _4^2\]

因为的θ3,θ4权重比较大,所以要想最小化这个方程,θ3,θ4必须很小,这就起到的减小θ3,θ4的效果。

在正则化方法中,我们不知道需要让那个参数更小,这时我们就让所有参数都小。

加上正则化部分后代价函数为

\[\left( \theta  \right) = \frac{1}{{2m}}\left[ {\underbrace {\sum\limits_{i = 1}^m {{{\left( {{h_\theta }\left( {{x^{\left( i \right)}}} \right) - {y^{\left( i \right)}}} \right)}^2}} }_{part1} + \underbrace {\lambda \sum\limits_{j = 1}^n {\theta _j^2} }_{part2}} \right]\]

其中,λ称为正则化参数(regulariztion parameter)。这个函数有两个目标:第一个目标是让h(x)尽量接近y;第二个目标是让每个θ尽量小(或让代价函数尽量简单)。

为什么让所有参数都尽量小就可以达到让函数曲线更接近正确?

自己实现了就比较直观的了解了!!

λ的大小选择问题

对于

\[{h_\theta }\left( x \right) = {\theta _0} + {\theta _1}x + {\theta _2}{x^2} + {\theta _3}{x^3} + {\theta _4}{x^4}\]

如果 λ选的过大,所有的参数θ1,θ2,θ3,θ4都会很小,这样就会出现

\[{h_\theta }\left( x \right) \approx {\theta _0}\]

这就会出现欠拟合(underfit)

如果λ选的过小,就起不到正则化的效果,这样就会出现

\[{h_\theta }\left( x \right) \approx {\theta _0} + {\theta _1}x + {\theta _2}{x^2} + {\theta _3}{x^3} + {\theta _4}{x^4}\]

这样就解决不了过拟合(overfit)

原文地址:https://www.cnblogs.com/qkloveslife/p/9858811.html

时间: 2024-10-29 09:48:30

正则化——解决过拟合问题的相关文章

(五)用正则化(Regularization)来解决过拟合

1 过拟合 过拟合就是训练模型的过程中,模型过度拟合训练数据,而不能很好的泛化到测试数据集上.出现over-fitting的原因是多方面的: 1 训练数据过少,数据量与数据噪声是成反比的,少量数据导致噪声很大 2 特征数目过多导致模型过于复杂,如下面的图所示: 看上图中的多项式回归(Polynomial regression),左边为模型复杂度很低,右边的模型复杂度就过高,而中间的模型为比较合适的模型,对于Logistic有同样的情况 如何避免过拟合 1. 控制特征的数目,可以通过特征组合,或者

Ng第七课:正则化与过拟合问题 Regularization/The Problem of Overfitting

7.1  过拟合的问题 7.2  代价函数 7.3  正则化线性回归 7.4  正则化的逻辑回归模型 7.1  过拟合的问题 如果我们有非常多的特征,我们通过学习得到的假设预测可能能够非常好地适应训练集(代价函数可能几乎为 0),但是可能会不能推广到新的数据. 下图是一个回归问题的例子: 第一个模型是一个线性模型,欠拟合,不能很好地适应我们的训练集:第三个模型是一 个四次方的模型,过于强调拟合原始数据,而丢失了算法的本质:预测新数据.可以看出,若给出一个新的值使之预测,它将表现的很差,是过拟合,

tensorflow学习之路---解决过拟合

''' 思路:1.调用数据集 2.定义用来实现神经元功能的函数(包括解决过拟合) 3.定义输入和输出的数据4.定义隐藏层(函数)和输出层(函数) 5.分析误差和优化数据(改变权重)6.执行神经网络 '''import tensorflow as tffrom sklearn.datasets import load_digitsfrom sklearn.model_selection import train_test_splitfrom sklearn.preprocessing import

正则化(神经网络过拟合时的应对方法)

正则化就是在J(w,b)中加上wi^2 J(w,b)表示的是整个模型在样本上的效果,J(w,b)越小,效果越好 深度学习也就是训练参数,是J变小. 现在拿L2型正则化来举个例子 我们知道,过拟合的原因是深度网络深度太深,节点太多,激活函数太复杂(非线性) 现在我的J在原来的基础上+ (w1 * w1 + w2 * w2 + ....... + wn * wn)*lanbda/2*m lanbda是正则化的参数 那么对于没有正则化之前的神经网络来说我的w肯定是变小了 这样就减小了神经网络对图片的影

深度学习中 --- 解决过拟合问题(dropout, batchnormalization)

过拟合,在Tom M.Mitchell的<Machine Learning>中是如何定义的:给定一个假设空间H,一个假设h属于H,如果存在其他的假设h’属于H,使得在训练样例上h的错误率比h’小,但在整个实例分布上h’比h的错误率小,那么就说假设h过度拟合训练数据. 也就是说,某一假设过度的拟合了训练数据,对于和训练数据的分布稍有不同的数据,错误率就会加大.这一般会出现在训练数据集比较小的情况. 深度学习中避免过拟合的方法: Dropout      2012年ImageNet比赛的获胜模型A

神经网络于过拟合

"Small" neural network (fewer parameters; more prone to underfitting) Computationally cheaper "Large" neural network (more parameters; more prone to overfitting) Computationally more expensive. Use regularization (λ) to address overfit

【神经网络和深度学习】笔记 - 第三章 如何提高神经网络学习算法的效果

文章导读: 1.交叉熵损失函数 1.1 交叉熵损失函数介绍 1.2 在MNIST数字分类上使用交叉熵损失函数 1.3 交叉熵的意义以及来历 1.4 Softmax 2. 过拟合和正则化 2.1 过拟合 2.2 正则化 2.3 为什么正则化可以减轻过拟合问题 2.4 正则化的其它方法 3. 参数初始化 4. 其它方法 4.1 随机梯度下降算法的改进 4.2 其它神经元模型 我们前面已经学习了反向传播算法,它是我们学习神经网络的基础.这一章将会介绍一系列的方法技巧来改善反向传播算法的效果,进而改善学

Python机器学习中文版

Python机器学习简介 第一章 让计算机从数据中学习 将数据转化为知识 三类机器学习算法 第二章 训练机器学习分类算法 透过人工神经元一窥早期机器学习历史 使用Python实现感知机算法 基于Iris数据集训练感知机模型 自适应线性神经元及收敛问题 Python实现自适应线性神经元 大规模机器学习和随机梯度下降 第三章 使用Scikit-learn进行分类器之旅 如何选择合适的分类器算法 scikit-learn之旅 逻辑斯蒂回归对类别概率建模 使用正则化解决过拟合 支持向量机 使用松弛变量解

欠拟合和过拟合的一般解决方法

简单来说,欠拟合是指模型在训练集.验证集和测试集上均表现不佳的情况:过拟合是指模型在训练集上表现很好,到了验证和测试阶段就大不如意了,即模型的泛化能力很差.欠拟合和过拟合一直是机器学习训练中的难题,在进行模型训练的时候往往要对这二者进行权衡,使得模型不仅在训练集上表现良好,在验证集以及测试集上也要有出色的预测能力.下面对解决欠拟合和过拟合的一般方法作一总结,说明大致的处理方向,具体应用还得结合实际的任务.数据和算法模型等. 解决欠拟合(高偏差)的方法 1.模型复杂化 对同一个算法复杂化.例如回归