精华内容
下载资源
问答
  • 过拟合和欠拟合

    万次阅读 多人点赞 2018-10-06 10:23:35
    开始我是很难弄懂什么是过拟合,什么是欠拟合以及造成两者的各自原因以及相应的解决办法,学习了一段时间机器学习和深度学习后,分享下自己的观点,方便初学者能很好很形象地理解上面的问题。 无论在机器学习还是...

    开始我是很难弄懂什么是过拟合,什么是欠拟合以及造成两者的各自原因以及相应的解决办法,学习了一段时间机器学习和深度学习后,分享下自己的观点,方便初学者能很好很形象地理解上面的问题。

    无论在机器学习还是深度学习建模当中都可能会遇到两种最常见结果,一种叫过拟合(over-fitting )另外一种叫欠拟合(under-fitting)。

    首先谈谈什么是过拟合呢?什么又是欠拟合呢?网上很直接的图片理解如下:

    所谓过拟合(over-fitting)其实就是所建的机器学习模型或者是深度学习模型在训练样本中表现得过于优越,导致在验证数据集以及测试数据集中表现不佳。过拟合就是学到了很多没必要的特征,比如你说的长得像猫的狗,和长得像狗的猫,其实这只是特例,但神经网络为了更好的降低Loss,就只能被迫学习这些特征用来区分猫和狗。但是学习的太过了,(举个例子:一个男人穿着蓝色的衣服,神经网络可能把是否穿蓝色衣服作为区分男人女人的特征,这就是过拟合)遇到了新样本这些错误的特征就没有什么用了。所以过拟合就是表现为训练的时候效果很好(因为神经网络已经学到了很多有用没用的特征),但是在测试样本上的效果就很差(有的特征完全没用啊,完全就是为了降低loss而得出来的特征)。至于为什么会产生过拟合,一般是因为参数过多,为了降低loss(神经网络的任务就是为了最小化loss),后者样本过少。总之就是参数/样本的比太大。

    所谓欠拟合呢(under-fitting)?相对过拟合欠拟合还是比较容易理解。还是拿刚才的模型来说,可能训练样本被提取的特征比较少,导致训练出来的模型不能很好地匹配,表现得很差,甚至样本本身都无法高效的识别。

    那么问题来了,我们需要怎么去解决过拟合和欠拟合的问题呢??

    现在常用的判断方法是从训练集中随机选一部分作为一个验证集,采用K折交叉验证的方式,用训练集训练的同时在验证集上测试算法效果。在缺少有效预防欠拟合和过拟合措施的情况下,随着模型拟合能力的增强,错误率在训练集上逐渐减小,而在验证集上先减小后增大;当两者的误差率都较大时,处于欠拟合状态(high bias, low variance);当验证集误差率达到最低点时,说明拟合效果最好,由最低点增大时,处与过拟合状态(high variance, low bias)。下图的横坐标用拟合函数多项式的阶数笼统地表征模型拟合能力:
    这里写图片描述

    过拟合:

    首先我们从上面我们可以知道,造成过拟合的原因有可以归结为:参数过多。那么我们需要做的事情就是减少参数,这里有两种办法:

    1、回想下我们的模型,假如我们采用梯度下降算法将模型中的损失函数不断减少,那么最终我们会在一定范围内求出最优解,最后损失函数不断趋近0。那么我们可以在所定义的损失函数后面加入一项永不为0的部分,那么最后经过不断优化损失函数还是会存在。其实这就是所谓的“正则化”。

    下面这张图片就是加入了正则化(regulation)之后的损失函数。这里m是样本数目,λ表示的是正则化系数。

    注意:当 λ 过大时,则会导致后面部分权重比加大,那么最终损失函数过大,从而导致欠拟合

       当 λ 过小时,甚至为0,导致过拟合。

    2、对于神经网络,参数膨胀原因可能是因为随着网路深度的增加,同时参数也不断增加,并且增加速度、规模都很大。那么可以采取减少神经网络规模(深度)的方法。也可以用一种叫dropout的方法。dropout的思想是当一组参数经过某一层神经元的时候,去掉这一层上的一部分神经元,让参数只经过一部分神经元进行计算。注意这里的去掉并不是真正意义上的去除,只是让参数不经过一部分神经元计算而已。

    3.提前停止训练: 
    也就是减少训练的迭代次数。从上面的误差率曲线图可以看出,理论上能够找到一个训练程度,此时验证集误差率最低,视为拟合效果最好的点。

    另外增大训练样本规模同样也可以防止过拟合。

    欠拟合:

    其实个人觉得欠拟合基本上都会发生在训练刚开始的时候,经过不断训练之后欠拟合应该不怎么考虑了。。但是如果真的还是存在的话,可以通过增加网络复杂度或者在模型中增加多点特征点,这些都是很好解决欠拟合的方法。

    另外针对正则化,可以参考正则化,希望这篇文章对你用,也可以参考如下地址https://www.zhihu.com/question/20924039

    展开全文
  • 机器学习:什么是欠拟合和过拟合

    万次阅读 多人点赞 2019-07-27 11:25:32
    1. 什么是欠拟合和过拟合 先看三张图片,这三张图片是线性回归模型 拟合的函数和训练集的关系 第一张图片拟合的函数和训练集误差较大,我们称这种情况为欠拟合 第二张图片拟合的函数和训练集误差较小,我们称这种...

    1. 什么是欠拟合和过拟合

    先看三张图片,这三张图片是线性回归模型 拟合的函数和训练集的关系

    1. 第一张图片拟合的函数和训练集误差较大,我们称这种情况为 欠拟合
    2. 第二张图片拟合的函数和训练集误差较小,我们称这种情况为 合适拟合
    3. 第三张图片拟合的函数完美的匹配训练集数据,我们称这种情况为 过拟合

      

    类似的,对于逻辑回归同样也存在欠拟合和过拟合问题,如下三张图

      

    2. 如何解决欠拟合和过拟合问题

    欠拟合问题,根本的原因是特征维度过少,导致拟合的函数无法满足训练集,误差较大。

    欠拟合问题可以通过增加特征维度来解决。

    过拟合问题,根本的原因则是特征维度过多,导致拟合的函数完美的经过训练集,但是对新数据的预测结果则较差

    解决过拟合问题,则有2个途径:

    1. 减少特征维度; 可以人工选择保留的特征,或者模型选择算法
    2. 正则化; 保留所有的特征,通过降低参数θ的值,来影响模型

    3. 正则化

    回到前面过拟合例子, h(x) = θ0 + θ1x1 + θ2x2 + θ3x3 + θ4x4

     

    从图中可以看出,解决这个过拟合问题可以通过消除特征x3和x4的影响, 我们称为对参数的惩罚, 也就是使得参数θ3, θ4接近于0。

    最简单的方法是对代价函数进行改造,例如

    这样在求解最小化代价函数的时候使得参数θ3, θ4接近于0。

    正则化其实就是通过对参数θ的惩罚来影响整个模型

    4. 线性回归使用正则化

    前面几篇文章中,线性回归的代价函数J(θ)表达式如下

    正则化后,代价函数J(θ)表达式如下,注意j从1开始

    注意λ值不能设置过大,否则会导致求出的参数除了θ0,其它θ1,θ2 ... θn值约等于0,导致预测函数h(x)出现极大偏差

    我们的目标依然是求J(θ)最小值,我们还是用梯度下降算法正规方程求解最小化J(θ)

    1. 梯度下降算法(注意需要区分θ0和其它参数的更新等式)

    2. 正规方程

    对于正规方程来,需要修改等式如下

    系数λ 所乘的矩阵为 (n+1)*(n+1)维

    5. 逻辑回归使用正则化

    和线性回归模型类型,逻辑回归也可以通过正则化来解决过拟合问题。

    逻辑回归的代价函数J(θ)表达式如下

    正则化逻辑回归的代价函数,是在等式后加上一项,注意j从1开始

     

    同样的用梯度下降算法求解最小化J(θ),也需要做改变

    不同的是逻辑回归模型中的预测函数 h(x)和线性回归不同

     

    “无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。”

     

    展开全文
  • 过拟合、欠拟合

    2021-01-20 11:19:33
    过拟合和欠拟合 训练误差和泛化误差 训练误差,模型在训练集合上表现的误差。 泛化误差 ,模型在任意一个数据集上表现出来的误差的期望。 过拟合,模型训练误差远小于在测试集上的误差。 欠拟合 ,模型无法在训练集...
  • 过拟合欠拟合

    2020-12-25 23:03:53
    欠拟合 欠拟合在训练集和测试集上的性能都较差 欠拟合出现原因 模型复杂度过低 特征量过少 欠拟合的情况比较容易克服,常见解决方法有 增加新特征,可以考虑加入进特征组合、高次特征,来增大假设空间 添加...

    欠拟合

    欠拟合在训练集和测试集上的性能都较差

    欠拟合出现原因

    1. 模型复杂度过低
    2. 特征量过少

    欠拟合的情况比较容易克服,常见解决方法有

    1. 增加新特征,可以考虑加入进特征组合、高次特征,来增大假设空间
    2. 添加多项式特征,这个在机器学习算法里面用的很普遍,例如将线性模型通过添加二次项或者三次项使模型泛化能力更强
    3. 减少正则化参数,正则化的目的是用来防止过拟合的,但是模型出现了欠拟合,则需要减少正则化参数
    4. 使用非线性模型,比如核SVM 、决策树、深度学习等模型
    5. 调整模型的容量(capacity),通俗地,模型的容量是指其拟合各种函数的能力
    6. Boosting ,Boosting 往往会有较小的 Bias,比如 Gradient Boosting 等.

    过拟合

    过拟合往往能较好地学习训练集数据的性质,而在测试集上的性能较差

    过拟合出现原因

    1. 建模样本选取有误,如样本数量太少,选样方法错误,样本标签错误等,导致选取的样本数据不足以代表预定的分类规则
    2. 样本噪音干扰过大,使得机器将部分噪音认为是特征从而扰乱了预设的分类规则
    3. 假设的模型无法合理存在,或者说是假设成立的条件实际并不成立
    4. 参数太多,模型复杂度过高
    5. 对于决策树模型,如果我们对于其生长没有合理的限制,其自由生长有可能使节点只包含单纯的事件数据(event)或非事件数据(no event),使其虽然可以完美匹配(拟合)训练数据,但是无法适应其他数据集
    6. 对于神经网络模型:a)对样本数据可能存在分类决策面不唯一,随着学习的进行,,BP算法使权值可能收敛过于复杂的决策面;b)权值学习迭代次数足够多(Overtraining),拟合了训练数据中的噪声和训练样例中没有代表性的特征

    过拟合的解决方案

    1. 正则化(Regularization)(L1和L2),如果有正则项则可以考虑增大正则项参数。 
    2. 数据扩增,增加训练数据样本的全面性和数量
    3. Dropout
    4. Early stopping
    5. 权值衰减.
    6. 交叉检验,通过交叉检验得到较优的模型参数
    7. 特征降维,特征选择
    8. Bagging,将多个弱学习器Bagging一下效果会好很多,比如随机森林

    权值衰减. 主要应用在神经网络模型中
    它在每次迭代过程中以某个小因子降低每个权值,这等效于修改E的定义,加入一个与网络权值的总量相应的
    惩罚项,此方法的动机是保持权值较小,避

     

    再来说一下Boosting和Bagging区别:

    同样都是融合,为什么一个能用在过拟合一个用在欠拟合呢?

    Bagging有点类似交叉检验,不同的是,Bagging是通过采样不同的数据训练得到K个弱模型,再通过K个模型投票得到结果,理解起来也简单,想一下过拟合的图,过度拟合很多点,如果每次样本少一些,那单个的模型就会拟合一部分的点,那其它若模型拟合的是其它的点,这些点其实可以看作是异常点,而且异常点肯定是比较少的,不会每个弱模型都拟合的一样,那这样得到的多个弱分类器投票,就会把这些错误过拟合地方平滑掉。

    Boosting, AdaBoosting方式每次使用的是全部的样本,每轮训练改变样本的权重。下一轮训练的目标是找到一个函数f 来拟合上一轮的残差。当残差足够小或者达到设置的最大迭代次数则停止。Boosting会减小在上一轮训练正确的样本的权重,增大错误样本的权重。(对的残差小,错的残差大)。 那为什么Boosting用在欠拟合上呢,你想下欠拟合其实是模型学习的不够,那我就每次把模型差的那些告诉下一轮的模型,来针对性的学习,是不是就能在模型复杂性不变的情况下,学到更多的拟合能力了呢~~ 相当于是获得了调整权重特征信息。 

    Bagging是有放回选取,Boosting训练集不变,每次都是全量训练集,只是分类器中的权重发生变化。

    DNN过拟合解决办法

    1、早停策略。本质上是交叉验证策略,选择合适的训练次数,避免训练的网络过度拟合训练数据。

    2、集成学习策略。而DNN可以用Bagging的思路来正则化。首先我们要对原始的m个训练样本进行有放回随机采样,构建N组m个样本的数据集,然后分别用这N组数据集去训练我们的DNN。即采用我们的前向传播算法和反向传播算法得到N个DNN模型的W,bW,b参数组合,最后对N个DNN模型的输出用加权平均法或者投票法决定最终输出。不过用集成学习Bagging的方法有一个问题,就是我们的DNN模型本来就比较复杂,参数很多。现在又变成了N个DNN模型,这样参数又增加了N倍,从而导致训练这样的网络要花更加多的时间和空间。因此一般N的个数不能太多,比如5-10个就可以了。

    3、DropOut策略。所谓的Dropout指的是在用前向传播算法和反向传播算法训练DNN模型时,一批数据迭代时,随机的从全连接DNN网络中去掉一部分隐藏层的神经元。在对训练集中的一批数据进行训练时,我们随机去掉一部分隐藏层的神经元,并用去掉隐藏层的神经元的网络来拟合我们的一批训练数据。使用基于dropout的正则化比基于bagging的正则化简单,这显而易见,当然天下没有免费的午餐,由于dropout会将原始数据分批迭代,因此原始数据集最好较大,否则模型可能会欠拟合。

    4. loss添加正则项和增大正则项系数

     

    参考链接:

    欠拟合和过拟合出现原因及解决方案

    过拟合(原因、解决方案、原理)

    机器学习中数据量多少与模型过拟合欠拟合之间的关系

    DNN中防止过拟合的方法

    Bagging和Boosting的区别

    展开全文
  • 一类是欠拟合,另一类是过拟合. 1.欠拟合 模型无法得到较低的训练误差,将这一现象成为欠拟合. 2.过拟合 模型的训练误差远小于它在测试集上的误差,称这一现象为过拟合. 可能导致这两种拟合问题的因素有很多,比如...
  • 过拟合和欠拟合的形象解释

    万次阅读 多人点赞 2019-03-19 10:39:03
    今天突然被以前同学人问到什么是机器学习中的’过拟合‘? “过拟合就是训练的时候效果很好损失函数值可以降得很低,但是到测试数据集的时候表现就不那么好了,就是过分依赖于现有训练数据集的特征造成的,可以加大...

    今天突然被以前同学人问到机器学习中的’过拟合‘和‘欠拟合’是什么意思呢?

    “过拟合就是训练的时候效果很好,损失函数值可以降得很低,但是到测试数据集的时候表现就不那么好了,原因是过分依赖于现有训练数据集的特征造成的,解决方法是可以加大数据集来进行训练。比如在图像领域可以通过拉伸旋转变换剪裁等等方式来增加训练数据集然后通过Dropout随机清零参数来避免.......“。巴拉巴拉讲了一堆,虽然我很想解释明白,但是.......总感觉有苦说不出的憋屈,最后:

    这让我意识到我可能太过于沉浸于自己的世界了,没有考虑到别人的感受,我回来后寻思着不对,对于没有接触过机器学习这一块的人来说很多名词可能就听不太懂,我不能用太多的专业词,我要用最直白的语言解释,于是产生了这篇博客。

     

    --------------------以下进行正经的解释----------------------

    拟合(Fitting):就是说这个曲线能不能很好的描述某些样本,并且有比较好的泛化能力。

    过拟合(Overfitting):就是太过贴近于训练数据的特征了,在训练集上表现非常优秀,近乎完美的预测/区分了所有的数据,但是在新的测试集上却表现平平,不具泛化性,拿到新样本后没有办法去准确的判断。

    下面给一个代码中实际的运行结果感受一下:

    欠拟合(UnderFitting):测试样本的特性没有学到,或者是模型过于简单无法拟合或区分样本。

     

    直观解释:

     

     

    解决过拟合的方法:增大数据量,正则化(L1,L2),丢弃法Dropout(把其中的一些神经元去掉只用部分神经元去构建神经网络)

    解决欠拟合的方法:优化模型,一般是模型过于简单无法描述样本的特性。

     

    -----------------------------------正经解释完毕,以下是非正经解释----------------------------------

    就好比你喜欢一个女生,这个女生有着自己的习性,为了追到这个女生我们经常会去迎合这个女生的习性。比如喝温水有固定的温度、挂电话只能她先挂、出去逛街不能哔哔太累、看书只能用书签不能折页........,这个就是我们学到的‘经验’。但是!万一也许可能这个女生某一天觉得你没有足够关心她每天都忙于自己的事情就和你分手啦.....

     

    然后,当你再找女朋友时,你拿出这些 ‘经验’ 但是好像发现效果并不好,因为每个女生的习性和喜好都不一样,所以你就陷入过拟合。

    怎么解决过拟合呢?那就是多交几个女朋友(增大训练数据量)啦!多了解一些不同女生的习性和喜好,当你已经把全世界所有女生的习性和喜好都学过之后,还有你追不到的女朋友吗? 但是,现实很残酷的,哪有那么多女朋友来供你学习的,你还可以选择丢弃法(Dropout),就是选择性的学习女朋友的喜好和习性,这样就会有概率学不到只属于她“个人癖好”的部分,你学到的就会更加具有普适性。

     

    如何解释欠拟合...,那就简单了,就是你第一个女朋友都没追到,她的习性和喜好你还没能完全掌握。

    那么怎么解决欠拟合呢?那就只能提升你自己的人格魅力了(模型复杂度),这个我也没什么资格指点,毕竟我也是凭实力单身多年,想必在座的各位应该都比我厉害。

     

    完美拟合,当你在追第一个女朋友的时候,你自身有一定的人格魅力(模型复杂度),并且并没有完全去迎合她的习性,毕竟存在 ‘个人癖好’ 这个‘错误’习性,你学到的是有泛化性的女生习性特征,当你用这些特征再去追女生的时候,成功率就很高了!

     

    展开全文
  • task03过拟合、欠拟合

    2021-01-06 17:23:41
    过拟合、欠拟合及其解决方案 过拟合、欠拟合的概念 权重衰减 丢弃法 模型选择、过拟合和欠拟合 训练误差和泛化误差 在解释上述现象之前,我们需要区分训练误差(training error)和泛化误差(generalization error)...
  • 过拟合与欠拟合

    2021-01-06 20:09:12
    模型选择、过拟合和欠拟合 训练误差和泛化误差 在解释上述现象之前,我们需要区分训练误差(training error)和泛化误差(generalization error)。通俗来讲,前者指模型在训练数据集上表现出的误差,后者指模型在...
  • 过拟合、欠拟合及其解决方案模型选择、过拟合和欠拟合训练误差和泛化误差模型选择验证数据集K折交叉验证过拟合和欠拟合模型复杂度训练数据集大小多项式函数拟合实验初始化模型参数定义、训练和测试模型三阶多项式...
  • 对于一个机器学习或者深度学习模型而言,我们不仅希望它能在训练数据中表现较好(训练误差),同时希望它在测试集中有...通常欠拟合会在模型的训练初期产生,随着训练深入,一般都能够解决欠拟合的问题,如果欠拟合还是
  • 欠拟合 模型无法得到较低的训练误差(模型在训练数据集上表现出的误差),这一现象称作欠拟合(underfitting) 过拟合 过拟合得问题指的是模型在测试集上的结果不好,训练误差较低但是泛化误差依然较高,二者相差较...
  • 欠拟合和过拟合学习笔记   https://www.cnblogs.com/DicksonJYL/p/9620464.html   在建模的过程中会经常出现1.模型的效果,但是泛化能力弱,2.模型的结果很差的情况,即过拟合和欠拟合,一下是总结的学习笔记 ...
  • 过拟合、欠拟合及其解决方案,内容: 1. 过拟合、欠拟合的概念 2. 权重衰减 3. 丢弃法 总结 欠拟合现象:模型无法达到一个较低的误差 过拟合现象:训练误差较低但是泛化误差依然较高,二者相差较大
  • 欠拟合与过拟合

    2018-11-16 21:59:10
    欠拟合与过拟合的区别 欠拟合是指模型在训练集、验证集和测试集上均表现不佳的情况 过拟合是指模型在训练集上表现很好,到了验证和测试阶段就大不如意了,即模型的泛化能力很差 欠拟合和过拟合一直是机器学习训练...
  • Pytorch之欠拟合和过拟合 ​  首先,我们需要区分训练误差( training error)和泛化误差( generalization error)。通俗来讲,前者指模型在训练数据集上表现出的误差,后者指模型在任意⼀个测试数据样本上...
  • 欠拟合与过拟合的概念Almost every person practicing machine learning has come across overfitting and underfitting,many of us where stuck behind,trying figure out a way to have a good fit or ...
  • 过拟合欠拟合及其解决方案 模型在训练数据集上准确,测试数据集上不一定更准确 训练误差和泛化误差 训练误差:模型在训练数据集上表现出的误差。 泛化误差:模型在任意一个测试数据样本上表现出的误差的期望。常常...
  • 对抗欠拟合

    2020-03-31 21:50:46
    欠拟合 是指模型在训练集合测试集数据上的表现均不好的情况。结果就是训练出的模型表达能力不够,精度不够,还没有学习到数据的特征,还有待继续学习 如何防止欠拟合 防止欠拟合的方法有3种: 1)增加特征数; ...
  • 欠拟合和过拟合

    2021-01-27 23:13:07
    欠拟合:一个假设在训练数据上不能获得更好的拟合,并且在测试数据集上也不能很好地拟合数据,此时认为这个假设出现了欠拟合的现象。(模型过于简单) 然后思考——是什么原因导致模型复杂? 对于线

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,583
精华内容 10,233
关键字:

欠拟合