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

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

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

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

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

     

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

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

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

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

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

     

    直观解释:

     

     

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

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

     

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

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

     

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

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

     

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

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

     

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

     

    展开全文
  • 14_拟合与欠拟合,过拟合和欠拟合产生的原因以及解决办法,正则化,L1和L2.pdf
  • 机器学习算法过拟合和欠拟合。 偏差、方差。 学习曲线和复杂程度曲线。 支持向量机过拟合和欠拟合。 KNN回归过拟合和欠拟合。 欠拟合和过拟合解决方法。
    欢迎关注,敬请点赞!

    文章转载自:欠拟合、过拟合、偏差、方差

    1. 基本概念

    1. 偏差:偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了算法本身的拟合能力。 h θ ( x i ) − y i h_\theta (x_i) - y_i hθ(xi)yi
    2. 方差:方差度量了训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响。 1 m ∑ i = 1 m ( h θ ( x i ) − y i ) 2 \displaystyle \frac {1}{m} \sum^m_{i = 1} (h_\theta (x_i) - y_i)^2 m1i=1m(hθ(xi)yi)2
    3. 欠拟合:模型太简单,经验误差大,在训练的过程中基本没学到有价值的内容。
    4. 过拟合:模型学习了太多的训练样本的“个性”,经验误差小,但是对于未知的样本泛化能力差(泛化误差大)。
    5. 经验误差:模型关于训练样本集的平均误差(也称经验风险)。
    6. 结构风险:结构风险在经验风险的基础上加上表示模型复杂度的正则化项。
    7. 泛化误差:模型在新样本集(测试集)上的平均误差。
      泛化误差 = 偏差 + 方差 + 噪声
    8. 噪声:描述了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。

    1.1 偏差和方差

    返回顶部
    如果模型是低偏差和低方差,那肯定是最好的一个选择。
    但是偏差和方差在一定程度上是矛盾的:
    如果偏差降低,那方差可能会相应的升高;
    如果方差降低,那偏差可能相应升高。
    所以我们是尽量的寻求偏差和方差的一个平衡点。

    下图比较形象的表达偏差和方差的含义:
    偏差和方差
    偏差太大,说明模型欠拟合;
    方差太大,说明模型过拟合。

    2. 欠拟合和过拟合

    返回顶部

    2.1 学习曲线

    通过学习曲线来识别模型是否发生了欠拟合、过拟合:
    学习曲线
    模型过拟合【中图】的情形,随着样本的增大,可能变成模型正常【右图】。
    横轴为训练样本数量,纵轴为误差

    2.2 复杂程度曲线

    复杂程度曲线
    横轴为模型复杂程度,纵轴为误差
    上图中:模型在点A处,在训练集以及测试集上同时具有较高的误差,此时模型的偏差较大,模型欠拟合
    模型在点C处,在训练集上具有较低的误差,在测试集上具有较高的误差,此时模型的方差较大,模型过拟合
    模型复杂程度控制在点B处为最优。

    2.3 支持向量机的过拟合和欠拟合

    返回顶部
    支持向量机过拟合和欠拟合
    支持向量机采用的正则化系数 C = 1 λ C = \frac{1}{\lambda} C=λ1是常规正则化系数的导数,C越大,过拟合;C越小,欠拟合,更容易记忆。

    2.4 KNN回归的过拟合和欠拟合

    返回顶部
    n_neighbor=25
    n_neighbor=5
    邻居数(n-neighbors)越大,欠拟合(bias);越小,过拟合(vias)

    3. 如何解决欠拟合和过拟合

    返回顶部

    3.1 解决欠拟合

    1. 增加特征项;
    2. 添加多项式特征项;
    3. 减小正则化系数;
    4. 增加模型复杂度。

    3.2 解决过拟合

    过拟合问题是机器学习和深度学习里面主要需解决的一个问题。解决过拟合的办法主要有:

    1. 重新做特征工程;
    2. 增加训练样本数量;
    3. 降低模型复杂程度;
    4. 增大正则项系数;
    5. 采用dropout方法【用于神经网络】;
    6. early stoping,早停法【当模型在验证集上的误差比上一次训练结果差的时候停止训练】;
    7. 减少迭代次数;
    8. 增大学习率;
    9. 添加噪声数据;
    10. 树结构中,可以对树进行剪枝。
      以上只是举一些例子,不同的问题还是需要根据不同的情况分析

    欢迎关注,敬请点赞!
    返回顶部

    展开全文
  • 怎样处理过拟合和欠拟合?.pdf
  • 过拟合和欠拟合 从模型在不同集合上的表现来看 首先来明确一下过拟合和欠拟合的概念。 拟合(下图中最右侧的图像) 拟合指的是训练数据拟合程度高的情况,也就是说模型在训练集上表现的很好,但是在测试集...

    过拟合和欠拟合

    从模型在不同集合上的表现来看

    首先来明确一下过拟合和欠拟合的概念。

    • 过拟合(下图中最右侧的图像)

    过拟合指的是训练数据拟合程度过高的情况,也就是说模型在训练集上表现的很好,但是在测试集和新的数据集上表现的较差。

    • 欠拟合(下图中最左侧的图像)

    了解了什么是过拟合,欠拟合也显而易见,当模型在训练集和测试集表现的都不好的时候我们就称这种现象为欠拟合。

    从方差和偏差的角度来看

    • 偏差(bias)

    算法在训练集上的错误率我们可以称之为偏差。

    • 方差(variance)

    算法在测试集上的表现低于在训练集上的程度我们可以称之为方差。

    了解了偏差和方差在算法上的意义我们就可以说如果一个模型有低偏差高方差便是过拟合,有高偏差低方差便是欠拟合。

    降低过拟合和欠拟合风险的方法

    降低过拟合

    1. 增加数据量。更多的数据可以让模型学习到更多的有效特征,减小噪声的影响,从另一方面上讲,增加数据的数量也起到了减小方差的作用。
    2. 降低模型的复杂度。
    • 神经网络:减少网络的层数,减少每一层网络的神经元个数。
    • 树模型:剪枝,降低树的深度。

         3. 正则化

    • L1:绝对值之和,让一部分特征缩小到0,常用于特征选择。
    • L2:平方之和,让特征的系数都进行缩小,使求解稳定快速。

         4. 继承学习方法,多模型进行融合。

    • Boosting:该类模型中,后一个模型的输入会受到前一个模型的输出的影响。
    • Bagging:该模型中,模型之间相互独立,没有过大的影响。

    降低欠拟合

    1. 增加新的特征。
    2. 增加模型的复杂度。简单的模型学习能力较差,通过增加模型的复杂度可以使模型有更强的拟合能力。
    3. 减少正则化的系数。正则化是用来防止过拟合的,当模型欠拟合时我们需要有针对的减少他们的系数。
    展开全文
  • 过拟合和欠拟合一、什么是过拟合和欠拟合?二、过拟合和欠拟合问题1、欠拟合:2、拟合:2.1 减少拟合总结:三、产生拟合原因四、解决拟合方法4.1 正则化 一、什么是过拟合和欠拟合? 图一:欠拟合——模型...
  • 过拟合和欠拟合以及相对应的解决办法.pdf
  • 欠拟合 模型无法得到较低的训练误差(模型在训练数据集上表现出的误差),这一现象称作欠拟合(underfitting) 拟合 拟合得问题指的是模型在测试集上的结果不好,训练误差较低但是泛化误差依然较高,二者相差较...
  • TensorFlow2.0教程-过拟合和欠拟合

    千次阅读 2019-03-16 21:11:55
    TensorFlow教程-过拟合和欠拟合 1.观察数据 NUM_WORDS = 10000 (train_data, train_labels), (test_data, test_labels) = keras.datasets.imdb.load_data(num_words=NUM_WORDS) def multi_hot_sequences...
  • Day 54:过拟合和欠拟合

    2021-07-22 21:40:45
    这就要了解过拟合和欠拟合两个名词了。先看图片 上图能看出来机器学习经过简单的模型,学习到的特征很少,依靠两个特征分类,导致把很多的目标值也预测错误。不是天鹅的图片也识别为天鹅(欠拟合) 上图看出来机器...
  • 1. 在模型评估过程中,过拟合和欠拟合具体指什么现象        拟合是指模型对于训练数据拟合呈当的情况,反映到评估指标上,就是模型在训练集上的表现好,但是在测试集和新...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,339
精华内容 10,535
关键字:

过拟合和欠拟合