• 过拟合与欠拟合


    1 过拟合

    1.1 过拟合的定义

    当学习器把训练样本学的太好了的时候,很可能已经把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,这样就会导致泛化性能下降,这种现象成为过拟合
    具体表现就是最终模型在训练集上效果好,在测试集上效果差。模型泛化能力弱。

    1.2 过拟合的原因

    1 训练数据中噪音干扰过大,使得学习器认为部分噪音是特征从而扰乱学习规则
    2 建模样本选择错误:例如样本太少,抽样方法错误,样本lable错误等,导致样本不能代表整体
    3 模型不合理
    4 特征维度/参数太多,导致模型的复杂度高

    1.3 过拟合的解决办法

    过拟合无法彻底解决,只能缓解
    3个角度

    • 1 数据
      1 从数据源头获取更多的数据
      2 数据增强,通过一定的规则扩充数据
    • 2模型
      1 降低模型的复杂度
      对于神经网络:减少网络层数和神经元个数。dropout
      对于决策树:限制树深,剪枝,限制叶节点的数量
      2 特征选择、特征降维
      3 early stop
      4 正则化
      5 增加噪声
    • 模型增强
      Bagging:从训练集中自助采样,训练多个相互独立的弱学习器,通过一定结合策略形成一个强学习器
      Boosting: 初始化训练一个基学习器->根据表现调整样本分布->训练下一个基学习器->多个学习器加权结合。

    2 欠拟合

    2.1 欠拟合的定义

    欠拟合是指对训练样本的一般性质尚未学好,在训练集和测试集上的表现都不好

    2.2 欠拟合的原因

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

    2.3 欠拟合的解决办法

    • 增加特征数
      当特征不足或者现有特征与样本标签的相关性不强时,模型容易出现欠拟合
    • 增加模型的复杂度
      模型简单时其表达能力较差,容易导致欠拟合,因此可以适当的增加模型的复杂度,使模型有更强的拟合能力
      例如:线性模型中增加高次项,神经网络中增加网络层数或神经元个数。
    • 减小正则化系数
      正则化是用来防止过拟合的,当出现欠拟合时,有必要针对性的减小正则化系数

    3 从bagging和正则化的角度理解Dropout

    Bagging:Bagging综合起来取平均的策略通常可以有效防止过拟合问题,dropout不同的隐藏神经元就类似在训练不同的网络,随机删掉一些隐藏神经元导致网络结构已经不同,整个dropout过程就相当于对很多个不同的神经网络取平均,而不同网络产生不同的过拟合,一些互为反向的拟合相互抵消就可以达到整体上减少过拟合
    正则化的角度:因为dropout程序导致两个神经元不一定每次都在一个dropout网络中出现,这样权值更新不再依赖于有固定关系的隐含节点的共同作用,阻止了某些特征仅仅再其他特定特征下才有效果的情况。迫使网络去学习更加鲁棒的特征。换句话说加入我饿们的神经网络是再做出某种预测,它不应该对一些特定的线索片段太过敏感,即使丢失特定的线索,它也应该可以从众多其他线索中学习一些共同的特征。从这个角度看有点像L1,L2正则,减少权重使得网络对丢失特定神经元链接的鲁棒性提高。

  • 相关阅读:
    scala基础题--面向对象2
    scala基础题--面向对象1
    scala基础题--函数可以没有返回值案例,编写一个函数,从终端输入一个整数,打印出对应的金字塔
    scala基础题--100以内的数求和,求出当和第一次大于20的当前数【for】
    scala练习题--万年历
    Java中接口和Sala中的特质的区别?
    scala学习笔记
    Java反射
    【JDBC】C3P0连接池的使用
    【JDBC】工具类的抽取
  • 原文地址:https://www.cnblogs.com/zhou-lin/p/15318627.html
Copyright © 2020-2023  润新知