精华内容
下载资源
问答
  • 最近一年我一直致力于深度学习领域。这段时间里,我使用很多神经网络,比如卷积神经网络、循环神经网络、自编码器等等。我遇到的最常见的一个问题就是在训练时,深度神经网络会过拟合
  • (5)设置评估分割数据是的最大特征数量,避免每次都考虑所有特征为求“最佳”,而采取随机选择的方式避免过度拟合。 2.剪枝 对每个节点或子树进行裁剪,适用算法评估裁剪前后决策树模型对数据的预测能力是否降低,...

    1.约束决策树

    约束决策树可以根据情况来选择或组合

    • (1)设置每个叶子节点的最小样本数,可以避免某个特征类别只适用于极少数的样本。
    • (2)设置每个节点的最小样本数,从根节点开始避免过度拟合。
    • (3)设置树的最大深度,避免无限往下划分。
    • (4)设置叶子节点的最大数量,避免出现无限多次划分类别。
    • (5)设置评估分割数据是的最大特征数量,避免每次都考虑所有特征为求“最佳”,而采取随机选择的方式避免过度拟合。

    2.剪枝

    对每个节点或子树进行裁剪,适用算法评估裁剪前后决策树模型对数据的预测能力是否降低,若没有降低则说明可以剪枝。

    • (1)错误率降低剪枝
      使用某种顺序遍历节点,删除以此结点为根的子树。试此节点为叶节点。将训练集中该节点调整出现概率最大的那一类赋予此节点,计算整体误判率或准确率,若比剪枝前好,则剪枝。
    • (2)悲观剪枝
      评估单个节点(非子树)是否裁剪,使用该节点下的所有叶节点的误差值和评估,当裁剪前后的误差率不超过某个标准值,裁剪。
    • (3)代价复杂度剪枝
      Cart使用代价复杂度剪枝,代价是指样本错分率,复杂度是指树t的叶节点数,定义是如下:
      cc(t)=E/N+αLeaft
      其中N为决策树训练样本数,E为决策树错分样本数,Leaft为t子树的叶子数,参数α用来衡量代价与复杂度关系,表示减值后树的复杂度降低的程度与代价间的关系。对于t子树,剪去其子树s,用t中最优叶节点代替,得到新树new_t。New_t会比t对于训练数据分错M个,但是new_t包含的叶节点数比t少Leaf_s-1个。领替换之后代价复杂度相等:
      cc(t)=cc(new_t)=>E/N+αLeaft=(E+M)/N+α
      [leaft-(leafs-1)]=>α=M/N(leafs-1)。
      M为用叶节点替换t的s子树后,增加的分错样本数,leafs是子树s的叶节点数。

    剪枝步骤:

    • 1.计算完全决策树T_max的每个非叶节点的α值
    • 2.循环减掉具有最小α值的子树,直到剩下根节点
    • 3.得到一系列剪枝(嵌套)树(T0,T1,,,Tm),T0为完全决策树Tmax。Ti+1为对Ti进行剪枝得到的结果。
    • 4.使用独立的剪枝集(非训练集)对第一步中的Ti进行评估,得到最佳剪枝树。
    • 标准错误SE公式: SE(E’)=根号下E’*(N’-E’)/N’

    N’为剪枝集的大小,Ei为树Ti对剪枝集的错分数,E’=min{Ei}
    最佳剪枝树为Tbest是满足如下条件且包含节点数最少的那颗剪枝树:Ei<=E’+SE(E’)

    决策树的优劣

    • 优势:简单易懂,可处理数值和类别两种类型的数据,只需要少量的训练集即可使用,使用白盒模型,可清洗观察每个步骤,对大数据量的处理性能较好,更贴近人类思维。
    • 劣势:准确性不如其他算法,对连续性字段难预测,特别是时间顺序的数据,需要较多预处理工作,树的稳定性不足,训练集的小变化可能引起整个树的巨变,容易过拟合,决策树处理包含不同数值类别的特征数据时,容易倾向选择取值更多的特征作为分割节点,对字段特立化严重的数据更容易出现过拟合且类别越多错误或增加更加快。
    展开全文
  • SVM如何避免过拟合

    千次阅读 2018-08-14 17:03:17
    过拟合(Overfitting)表现为在训练数据上模型的预测很准,在未知数据上预测很差。过拟合主要是因为训练数据中的异常点,这些点严重偏离正常位置。我们知道,决定SVM最优分类超平面的恰恰是那些占少数的支持向量,...

    过拟合(Overfitting)表现为在训练数据上模型的预测很准,在未知数据上预测很差。过拟合主要是因为训练数据中的异常点,这些点严重偏离正常位置。我们知道,决定SVM最优分类超平面的恰恰是那些占少数的支持向量,如果支持向量中碰巧存在异常点,那么我们傻傻地让SVM去拟合这样的数据,最后的超平面就不是最优的。

    如图1所示,深红色线表示我们希望训练得到的最优分类超平面,黑色虚线表示由于过拟合得到的较差的分类面。这是由于蓝色数据中有一个异常点,即图中的那个黑圈蓝点,使得我们的SVM去将就配合它,导致最后得到的分类面(粗黑色虚线)不尽如人意。从间隔可以看出,黑色虚线两边的间隔要比红色线两边的间隔要狭窄,也就是黑色虚线的分类效果比较差。

                                            图1 异常点导致SVM过拟合

    解决过拟合的办法是为SVM引入了松弛变量ξ(slack variable),将SVM公式的约束条件改为:

     (3)

    从图2可以看到,引入松弛变量使SVM能够容忍异常点的存在。为什么?因为引入松弛变量后,所有点到超平面的距离约束不需要大于等于1了,而是大于0.8就行了(如果ξ=0.2的话),那么异常点就可以不是支持向量了,它就作为一个普通的点存在,我们的支持向量和超平面都不会受到它的影响。

                                              图 2 松弛变量的作用

    我们知道,事物都有两面性,对异常点太容忍会导致任意超平面都可以是“最优”超平面,SVM就失去意义了。因此SVM公示中的目标函数也需要相应修改,我们加上松弛变量的平方和,并求最小值。这样就达到一个平衡:既希望松弛变量存在以解决异常点问题,又不希望松弛变量太大导致分类解决太差。

    展开全文
  • 避免过拟合的方法
  • 因此如何在训练时避免过拟合,是每一个炼丹师的必备技能。而避免过拟合主要有两类方法:1)扩充数据,2)修改网络。数据扩充内容比较简单,在文末总结了数据扩充的方案,详细的可以再自己搜一下看看。本文主要总结...

    过拟合几乎可以说是每个深度学习网络的噩梦,当模型深度较大时,若不加以处理,几乎都会碰上。出现过拟合的特点是:看起来效果很好(在训练集上),而实际上已经废了(在测试集或验证集上)。因此如何在训练时避免过拟合,是每一个炼丹师的必备技能。而避免过拟合主要有两类方法:1)扩充数据,2)修改网络。数据扩充内容比较简单,在文末总结了数据扩充的方案,详细的可以再自己搜一下看看。本文主要总结一些修改网络的方法。

    1.正则化

    正则化的目的是通过缩小权重W(忽略偏置B的影响)得到简化模型的目的,可能大家会问了,模型权重越小,为什么能简化模型呢,计算量不是一样的吗?这里的简化不是指结构或者计算量上的简化,应该是模型拟合能力的简化,可以说是模型在可以解决问题的基础上,变得更蠢了(其实就是奥卡姆剃刀原则:“如无必要,勿增实体”)。那么,为什么小的权重,可以让模型变“蠢”呢,如下图【1】:

    当权重较小时,激活函数主要工作在线性区,使得一个模型更加趋于一个线性模型(简单)。此外,异常点往往出现在偏离正确函数较远的地方,当出现过拟合时,为了适应各个异常点,必须要较大的权重造成大的跳动才行,小的权重拟合的函数波动较小,可以避免向异常点收敛。

    L1正则化

    设损失函数为L,增加L1正则项后,使用梯度下降,权重W的更新公式如下,当W>0时,带有L1正则项的权重将趋于0,而当W<0时,带有L1的权重将趋于-0

    L2正则化

    同理,带L2正则项的W在无正则项的基础上下降了a*n(阿法乘以一塔)倍的W(权值衰减)

    总的来说,L1正则化使W趋于0,L2正则化使W按W的一定比例减小。

    2.Droupout

    很简单但十分有效的操作,在训练时按一定比例随机对隐含层节点的输出置0,相当于减少隐含层节点数。且每次训练时置0的节点都是不一样的(随机),相当于每次训练的都是不同的网络,大部分情况下网络效果很好,也会出现部分效果较差的情况。但是测试时使用的是包含全节点的网络,相当于对训练时多个不同的网络进行了组合,有点类似集成学习的方式,区别在于每个子网络的参数是共享的(相关性较强,不独立,但是共享的参数可以使每个子模型都获得较好的效果)。Droupout的模型训练时可能拟合速度会相对慢些,最终的训练误差也达不到没有droupout时那么小,但是在泛化性能上会更好。

    3.Bagging

    典型的集成学习方式,可以有效减小模型预测的方差(即模型的过拟合程度),bagging的工作原理如下图所示【3】:

    对原始数据集进行L次有放回的随机采样,获得L各子训练集。分别对L个子训练集进行训练,获得L个弱分类器,L个弱分类器投票获得一个强分类器。为什么bagging方式能避免过拟合呢【4】?

    4.数据扩充

    只要你的数据相对于你的网络足够充分(包括数据量和数据分布的全面性),理论上认为不会出现过拟合问题。但是实际问题中,大量数据的成本很高,甚至难以获得。因此就要考虑人为的数据扩充方式了,总结一下大概有以下几种:

    1)翻转;2)旋转;3)缩放:放大后裁剪或缩小后填充;

    4)平移(背景为空);5)添加噪声(过拟合主要出现在拟合高频特征

    参考文献

    【1】https://blog.csdn.net/jingbo18/article/details/80609006

    【2】https://blog.csdn.net/crazy_scott/article/details/80343324

    【3】https://blog.csdn.net/u014114990/article/details/50948079

    【4】https://www.cnblogs.com/earendil/p/8872001.html

    展开全文
  • keras避免过拟合 阅读笔记

    千次阅读 2018-09-10 16:27:18
    1.每一层的神经元数量,以及有多少层可以通过validation_loss值来较为直观的查看。 **A lower validation loss signals a better model.**val_loss达到最小值时得到的这个模型通常是最好的。...深度学习-避免过拟合

    1.每一层的神经元数量,以及有多少层可以通过validation_loss值来较为直观的查看。 **A lower validation loss signals a better model.**val_loss达到最小值时得到的这个模型通常是最好的。

    import matplotlib.pyplot as plt
    val_loss = history.history['val_loss']
    
    # b is for "solid blue line"
    plt.plot(epochs, val_loss, 'b', label='Validation loss')
    plt.title('Training and validation loss')
    plt.xlabel('Epochs')
    plt.ylabel('Loss')
    plt.legend()
    plt.show()

    2.正则化
    根据奥卡姆剃刀原则,简单的模型应该比复杂的模型更不容易过拟合,应该对损失函数进行最小化的同时,也需要让对参数添加限制,这个限制也就是正则化惩罚项。 常用的正则化方式有L1,L2正则化。在keras中,

    from keras import regularizers
    #三种可用的正则化方法
    keras.regularizers.l1(0.)
    keras.regularizers.l2(0.)
    keras.regularizers.l1_l2(0.)
    
    model.add(layers.Dense(16, kernel_regularizer=regularizers.l2(0.001),
                              activation='relu', input_shape=(10000,)))

    3.Dropout
    有些中间输出,在给定的训练集上,可能发生只依赖某些神经元的情况,这就会造成对训练集的过拟合。而随机关掉一些神经元,可以让更多神经元参与到最终的输出当中。dropout可以随机的让一部分神经元失活,当我们采用了Dropout之后再训练结束之后,应当将网络的权重乘上概率p得到测试网络的权重。
    keras中实现方式:(一般取值在0.2-0.5之间)

    model.add(layers.Dropout(0.5))

    Reference:
    深度学习-避免过拟合

    展开全文
  • 为什么正则化能够解决过拟合问题一. 正则化的解释二. 拉格朗日乘数法三. 正则化是怎么解决过拟合问题的1. 引出范数1.1 L_0范数1.2 L_1范数1.3 L_2范数2. L_2范式正则项如何解决过拟合问题2.1 公式推导2.2 图像推导[^...
  • 避免过拟合的方法,正则化,dropout,Batch normalization 目录 避免过拟合的方法,正则化,dropout,Batch normalization 一、铺垫 1.奥卡姆剃刀原则 2.简单模型上的过拟合 3.深度学习过拟合 4.数据集的划分...
  • 神经网络中避免过拟合5种方法介绍.docx
  •   在深度学习和机器学习的各种模型训练过程中,在训练数据不够多时,自己常常会遇到的问题就是过拟合(overfitting),过拟合的意思就是模型过度接近训练的数据,使得模型的泛化能力降低,泛化能力降低表现为模型...
  • 决策树(Decision tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。...
  • 为什么PCA不被推荐用来避免过拟合

    千次阅读 2018-04-19 22:08:26
    作者:戴玮 ...来源:知乎 著作权归作者所有。...比如人脸识别,维度往往成千上万,但识别身份的话,每个人样本最多也就几十,过拟合现象是很严重的。 由此产生了人脸识别早期研究中影响力极大的...
  • 多元线性回归中,选用不同的筛选变量的方法可能造成不同的拟合结果,如何避免过拟合
  • 避免神经网络过拟合的5种技术

    千次阅读 2019-12-20 23:04:26
    本文介绍了5种在训练神经网络中避免过拟合的技术。 最近一年我一直致力于深度学习领域。这段时间里,我使用很多神经网络,比如卷积神经网络、循环神经网络、自编码器等等。我遇到的最常见的一个问题就是在训练时...
  • 过拟合、欠拟合避免方法

    千次阅读 2017-08-22 15:08:50
    在我们机器学习或者训练深度神经网络的时候经常会出现欠拟合过拟合这两个问题,但是,一开始我们的模型往往是欠拟合的,也正是因为如此才有了优化的空间,我们需要不断的调整算法来使得模型的表达能拿更强。...
  • 如何防止过拟合(overfitting)

    万次阅读 多人点赞 2018-09-30 10:41:32
    为了得到一致假设而使假设变得过度复杂称为过拟合(overfitting),过拟合表现在训练好的模型在训练集上效果很好,但是在测试集上效果差。也就是说模型的泛化能力弱。在很多问题中,我们费心费力收集到的数据集并不能...
  • 在XGBoost中通过Early Stop避免过拟合

    千次阅读 2018-12-15 22:10:58
    本文翻译自Avoid Overfitting By Early Stopping With XGBoost In Python,讲述如何在使用XGBoost建模时通过Early Stop手段来避免过拟合。全文系作者原创,仅供学习参考使用,转载授权请私信联系,否则将视为侵权...
  • 深度学习中的Data Augmentation方法在深度学习中,为了避免出现过拟合(Overfitting),通常我们需要输入充足的数据量。当数据量不够大时候,常常采用以下几种方法:Data Augmentation:通过平移、 翻转、加噪声等...
  • 在所有的机器学习算法的使用中,都必须避免过拟合和欠拟合现象的产生,这就是偏置/方差折中问题的主要研究对象。维基百科中给出这种问题的详细说明: 偏置是一种误差, 这种误差主要来自于学习模型或算法中的错误...
  • 过拟合以及如何防止过拟合

    千次阅读 2019-02-22 21:20:43
    什么是过拟合 过拟合即模型在训练过程中对模型参数进行拟合的过程中,由于训练数据集存在抽样误差(噪声),复杂的模型在训练的过程中会将抽样误差也一同进行拟合。这就导致训练好的模型在训练集上的表现很好,在...
  • Keras-Tutorial(四): 避免过拟合

    千次阅读 2018-08-23 16:24:49
    通俗点说法,过拟合就是在训练集下的表现过于优越,导致在验证集或在测试集上的表现不佳。 在神经网络中,有一个普遍的现象可以说明是出现了过拟合,当val_loss达到一个最低值的时候突然回升,val_loss不断升高。...
  • 在尝试了多种明智的组合后,并不是所有的42个变量都经过训练,而是一组最佳的选择特征,以获得最大的模型性能并避免过拟合。 使用了精度和召回率等指标以及准确性,并简要解释了为什么精度比召回率更重要的原因。 ...
  • 一、什么是过拟合,为什么要避免过拟合 图1.1 Overfit&Normal 上图是一张使用线性回归拟合二维样本数据的matlab输出图片,其中Normal曲线是使用使用了带参数空间限制的最小二乘法进行求解的模型,Overfit曲线...
  • 防止过拟合的方法

    2021-06-12 15:40:11
    针对现有数据集,可以将数据集进行切分,转化成训练集、测试集、验证集,针对切分的结果,可以用训练集训练深度学习网络,通过验证集来监督学习过程,在过拟合之前完成监督网络的学习过程,防止过拟合。 3.正则化...
  • 作者:Abhinav Sagar;翻译:陈超;校对:王琦本文约1700字,建议阅读8分钟。本文介绍了5种在训练神经网络中避免过拟合的技术。最近一年我一直致力于深度学习领域。这段时间里...
  • 避免过拟合方法

    2018-05-14 16:45:12
    避免过拟合方法: 1.drop-out 2.正则化(L1,L2) 3.滑动平均模型
  • 1 概述  虽说现在深度学习在文本分类上...针对这种情况,我们来看看在使用深度学习时有哪些方法也尽量地避免过拟合。 2 过拟合的处理方法 1)L1和L2正则化  对模型中的权重系数加上L1或L2正则处理,将无关的...
  • 下边几点防止模型过拟合的方法本质上都是通过减小网络规模实现的 1. 使用Dropout层 深度学习特有结构,以训练过程中一定概率丢弃某些神经元;在训练过程中使用Dropout层本质上是同时训练了多个不同模型,在预测时将...
  • 」 在机器学习中,过拟合(overfitting)会使模型的预测性能变差,通常发生在模型过于复杂的情况下,如参数过多等。本文对过拟合及其解决方法进行了归纳阐述。 在机器学习中,如果模型过于专注于特定的训练数据而...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 53,281
精华内容 21,312
关键字:

避免过拟合