首页 > 其他分享 >8种防止过拟合的简单技术

8种防止过拟合的简单技术

时间:2022-08-29 06:44:41浏览次数:80  
标签:训练 模型 拟合 正则 防止 简单 数据 我们

8种防止过拟合的简单技术

当模型在训练数据上表现良好但对未见数据的泛化能力较差时,就会发生过度拟合。过拟合是机器学习中一个非常常见的问题,并且有大量文献致力于研究防止过拟合的方法。在下文中,我将描述八种简单的方法来缓解过度拟合,方法是在每种方法中只对数据、模型或学习算法进行一次更改。

目录

  1. 坚持
    2. 交叉验证
    3. 数据增强
    4. 特征选择
    5. L1/L2 正则化
    6. 移除层数/每层的单元数
    7.辍学
    8. 提前停止

1. 坚持(数据)

我们可以简单地将数据集分成两组:训练和测试,而不是使用我们所有的数据进行训练。常见的拆分比率是 80% 用于训练,20% 用于测试。我们训练我们的模型,直到它不仅在训练集上而且在测试集上表现良好。这表明了良好的泛化能力,因为测试集代表了未用于训练的未见数据。然而,这种方法需要足够大的数据集才能在拆分后进行训练。

2. 交叉验证(数据)

我们可以将数据集拆分为 ķ 组(k 折交叉验证)。我们让其中一组作为测试集(请参阅保留解释),其他组作为训练集,并重复此过程,直到每个单独的组都被用作测试集(例如, ķ 重复)。与 hold-out 不同,交叉验证允许所有数据最终用于训练,但也比 hold-out 计算成本更高。

3.数据增强(数据)

更大的数据集将减少过度拟合。如果我们无法收集更多数据并且受限于当前数据集中的数据,我们可以应用数据增强来人为地增加数据集的大小。例如,如果我们正在为图像分类任务进行训练,我们可以对图像数据集执行各种图像转换(例如,翻转、旋转、重新缩放、移动)。

4. 特征选择(数据)

如果我们只有有限数量的训练样本,每个都有大量的特征,我们应该只选择最重要的特征进行训练,这样我们的模型就不需要学习这么多的特征并最终过拟合。我们可以简单地测试不同的特征,为这些特征训练单个模型,并评估泛化能力,或者使用各种广泛使用的特征选择方法之一。

5. L1/L2正则化(学习算法)

正则化是一种限制我们的网络学习过于复杂的模型的技术,这可能会导致过拟合。在 L1 或 L2 正则化中,我们可以在成本函数上添加一个惩罚项,以将估计的系数推向零(而不是取更多的极值)。 L2 正则化允许权重衰减到零但不为零,而 L1 正则化允许权重衰减到零。

6. 移除层数/每层的单元数(模型)

如 L1 或 L2 正则化中所述,过于复杂的模型可能更可能过拟合。因此,我们可以直接通过移除层来降低模型的复杂度,减小模型的大小。我们可以通过减少全连接层

7. Dropout(模型)

通过将 dropout(一种正则化形式)应用于我们的层,我们忽略了具有设定概率的网络单元的子集。使用 dropout,我们可以减少单元之间的相互依赖学习,这可能导致过度拟合。然而,由于 dropout,我们的模型需要更多的 epoch 才能收敛。

8. 早停(模型)

我们可以首先针对任意数量的 epoch 训练我们的模型并绘制验证损失图(例如,使用保留)。一旦验证损失开始下降(例如,停止减少而是开始增加),我们停止训练并保存当前模型。我们可以通过监控损失图或设置提前停止触发器来实现这一点。保存的模型将是不同训练时期值之间泛化的最佳模型。

你已经到了文章的结尾!希望您现在拥有一个对抗过度拟合的方法工具箱⚔️。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/1378/36132906

标签:训练,模型,拟合,正则,防止,简单,数据,我们
From: https://www.cnblogs.com/amboke/p/16634666.html

相关文章

  • CSS三中样式(简单的代码)
    三中的使用方法的简单实例如下:行内样式:<!doctypehtml><html><head><metacharset="UTF-8"><title>css行内样式</title></head><body><divstyle="width:100px;h......
  • leetcode 696. Count Binary Substrings 计数二进制子串(简单)
    一、题目大意给定一个字符串s,统计并返回具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1都是成组连续的。重复出现(不同位置)的子串......
  • 【.Net6】简单使用EF进行数据库迁移
    CodeFirstCodeFirst是根据代码中定义的模型,映射到数据库中,下面以一个控制台项目为例,简单描述其方法。//首先需要2个Nuget包:Microsoft.EntityFrameworkCore.SqlServer /......
  • 力扣507(java)-完美数(简单)
    题目:对于一个 正整数,如果它和除了它自身以外的所有正因子之和相等,我们称它为「完美数」。给定一个 整数 n, 如果是完美数,返回true;否则返回false。 示例1:输......
  • Angular Material实现typeahead简单示例
    前言项目中需要一个输入提示框,之前是使用ng-bootstrap实现的.但是由于系统框架完全迁移到了materialdesign.所以所有bootstrap的依赖项都要迁移到angularmateriald......
  • java反射技术的简单应用
    一.反射介绍java反射技术的应用广泛,能够对类的方法和参数进行配置,完成对象的初始化工作,增加了java的灵活性,SpringIOC也使用了反射技术,下文主要讲解对象的构建和方法的反射......
  • archlinux下安装和配置cockpit简单记录
    使用如下命令安装,pacockpit端口查找,vim/usr/lib/systemd/system/cockpit.socketinstallmoretools,yaycockpit234567等。包括Podman管理容器,管理虚拟机,管理软件包更......
  • 简单动态变量文本模板
    TemplateUtils工具类importlombok.experimental.UtilityClass;importorg.springframework.cglib.beans.BeanMap;importjava.util.*;importjava.util.regex.Matche......
  • 2022-8-26 jq简单了解
    Query是一个JavaScript函数库。jQuery是一个轻量级的"写的少,做的多"的JavaScript库。jQuery库包含以下功能:HTML元素选取HTML元素操作CSS操作HTML事件函数......
  • Kafka的简单使用
    下面目的主要是进行简单测试kafka,比如在其他网络中已提供了IP和地址,进行kafka的读取,自已不想再写代码:环境要求:存在java环境:1、下载Kafka的程序https://kafka.apache.or......