zoukankan      html  css  js  c++  java
  • 如何防止过拟合和欠拟合

    过拟合和欠拟合是模型训练过程中经常出现的问题,两种情况正好相反,现将两者的定义及如何防止进行简要总结。

    1 过拟合

    1.1 定义

    是指模型对于训练数据拟合呈现过当的情况,反映到评估指标上就是模型在训练集上的表现很好,但是在测试集上的表现较差。结果就是训练出的模型泛化能力差。

    1.2 如何防止过拟合

    防止过拟合的方法有4种:

    1)增加训练集数据;

    该方式是从数据入手,将更多的数据参与到模型的训练中,这是最有效的方法,这样可以让模型学习到更多更有效的特征,降低噪声对模型的影响。

    但是往往直接增加数据是困难的,因此可以通过一定的规则来扩充训练数据。列举两种方式:

    ①如图像分类问题中可以通过对图像的平移,缩放,旋转等方式来扩充;

    ②也可以使用生成式对抗网络类合成大量数据。

    2)降低模型复杂度;

    在数据量较少的情况下,模型过于复杂将会导致过拟合,因此可以通过降低模型的复杂度来防止过拟合,这样就可以一定程度上避免模型拟合过多的采样噪声。

    比如:

    ①神经网络中减少网络成熟,神经元个数等;

    ②决策树中降低树的深度和进行剪枝。

    3)增加正则化约束项;

    比如将权值的大小加入到损失函数中,避免权值过大带来的过拟合风险。

    4)通过集成学习的方式训练模型。

    集成学习是把多个模型集成到一起来作为共同的模型,可以降低单一模型的过拟合风险。如bagging方法。

    2 欠拟合

    2.1 定义

    是指模型在训练集合测试集数据上的表现均不好的情况。结果就是训练出的模型表达能力不够,精度不够。

    2.2 如何防止

    防止欠拟合的方法有3种:

    1)增加特征数;

    当特征不足或者现有特征与样本标签的相关性不强时,模型易出现欠拟合。

    可以通过挖掘上下文特征,ID类特征,组合特征等新的特征,可以取得较好的效果。这属于特征工程相关的内容,如因子分解机,梯度提升决策树,deep_crossing都可以丰富特征。

    2)增加模型复杂度;

    模型简单时其表达能力较差,容易导致欠拟合,因此可以适当地增加模型复杂度,使模型拥有更强的拟合能力。

    如线性模型中添加高次项,神经网络中增加网络层数或神经元个数。

    3)减小正则化系数。

    正则化是用于防止过拟合的,但是当出现欠拟合时,就有必要针对性地减小正则化系数。

  • 相关阅读:
    2/4 关于 Vue.js 中 this.$nextTick 的个人简单解释
    2/3 初次搭建 Vue 项目遇到的问题汇总
    前端中常见的布局
    如何判断一个变量是否为数组(isArray)
    ubuntu下安装截图工具
    正向代理、反向代理
    javascript中的基本数据类型
    css3 中的渐变
    javascript中的toString()
    ubuntu下面安装nodejs
  • 原文地址:https://www.cnblogs.com/guo-zhi-wei/p/10022346.html
Copyright © 2011-2022 走看看