AI特征工程-如何缓解模型过拟合

news2024/11/27 2:45:27

一、什么是模型过拟合?

1、举个例子

        如上图第三个模型解释为出现了过拟合现象,过度的拟合了训练数据,而没有考虑到泛化能力,从而在新数据上表现不佳。

二、如何确定模型过拟合了

我们通常没有办法直观的看到过拟合。通常有以下几种办法可以帮助我们判断模型发生了过拟合。

1. 学习曲线

        学习曲线是一种常见的机器学习可视化工具,可以用于检测机器学习和深度学习模型中的过度拟合。学习曲线通过可视化训练得分和验证得分随着训练迭代次数增加的曲线。当训练集得分和验证集得分之间存在明显差距时,例如当验证误差(损失)在某个点开始增加而训练误差(损失)仍在减少时,或当验证准确率在某些点开始降低而训练准确率仍在提高时,我们可以判定模型发生了过拟合

2. 验证曲线

        学习曲线在深度学习模型中十分常见。为了检测决策树、随机森林、k最近邻等通用机器学习模型的过拟合,我们可以使用验证曲线的机器学习可视化工具。验证曲线绘制了单个超参数对训练集得分和验证集得分的影响。通常横轴表示给定超参数的值,纵轴表示训练和验证得分。

3. 使用多个评估指标进行模型评估

        综合使用多个评估指标可以更全面地评估模型的性能和是否过拟合。常用的评估指标包括准确率、精确率、召回率、F1值等分类模型指标,以及MSE、RMSE、MAE、R2等回归模型指标。通过多个指标进行比较可以更准确的判定模型是否发生过拟合。

三、过拟合产生的原因

人工智能中的过拟合问题通常由以下几个原因引起:

  1. 模型复杂度过高:当模型过于复杂时,例如神经网络层数过多或参数过多,模型可能会过度拟合训练数据中的噪声和细节,而无法泛化到新的数据上。

  2. 数据噪音:训练数据中存在大量的随机噪音或确定性噪音,这些噪音可能导致模型学习到错误的模式,从而在新数据上表现不佳。

  3. 特征过多:在某些情况下,模型可能包含过多的特征,这会导致模型对训练数据的拟合过于紧密,而忽略了数据中的普遍规律。

  4. 训练集和测试集分布不一致:如果训练集和测试集的数据分布存在显著差异,模型可能无法很好地泛化到测试集上。

  5. 训练数据量不足:如果训练数据集较小,模型可能无法捕捉到数据的真实模式,而是记住训练数据中的噪声或个别样本的特征,导致过拟合现象。

四、如何缓解模型过拟合

1、通过特征选择-降维度

        降维算法是机器学习中用于减少数据集维度的一种技术,其目的是在尽可能保留数据中有用信息的前提下,降低数据的复杂性。
      减少数据集维度是指通过数学变换或特征选择等方法,降低数据集中特征的数量或降低数据点在某个空间中的表示的维度。这一过程通常被称为降维(Dimensionality Reduction)。

1.1 降维的两大方法:

 方法一:【特征选择】

        举个栗子:房价的数据集中包含了房屋的大小(Feature A)、房屋的年龄(Feature B)、房屋的卧室数量(Feature C)和房屋的卫生间数量(Feature D),我们的目标是预测房价。

        通过相关性分析,我们计算了每个特征与房价之间的相关系数。假设我们发现Feature A(房屋的大小)与房价之间的相关系数为0.8,而Feature B(房屋的年龄)与房价之间的相关系数为0.5,卫生间数量Feature D可以忽略去除。

方法二:【特征提取】

        举个栗子:在文本数据分析中,每条帖子或评论都可以被表示为一个高维的特征向量,包括词汇频率、情感分析得分、主题模型等。

1.2 常见的降维算法

        在人工智能领域,我们常用的降维算法有主成分分析(PCA)、线性判别分析(LDA)、因子分析(Factor Analysis)、局部线性嵌入(LLE)、等距映射(Isomap)、t-SNE、自编码器(Autoencoder)等。

2、通过规范数据-Dropout 正则化解决过拟合问题

      2.1  Dropout正则化

     Dropout是一种广泛使用的技术,用于减少神经网络中的过拟合问题。它是一种随机丢弃神经元的方法,可以减少神经元之间的依赖关系,从而增加网络的鲁棒性。

   2.2 使用 L1 和 L2 正则化解决过度拟合问题

        L1和L2正则化是解决过度拟合问题的常用技术。L1正则化是指在损失函数中增加一个正则项,该正则项是权重向量中每个元素的绝对值之和。这可以促使一些权重变为零,从而使模型更加稀疏,减少过度拟合的风险。

        L2正则化是指在损失函数中增加一个正则项,该正则项是权重向量中每个元素的平方和。这可以使每个权重都变小,但不会使它们变为零。这有助于减少过度拟合的风险,同时保留更多的特征。

   2.3 噪声数据过滤 

      举个例子:计算公司员工的平均薪资收入,应该去掉或者 降低个别异常数据的权重,比如公司高管年薪500万,这些 2%的群体噪音数据应该特殊处理。

3、树模型策略解决过拟合

        基于树的模型容易过度拟合,可通过限制树深度或创建集成(如随机森林)来减少过度拟合。

       预剪枝是一种用于解决过拟合问题的方法,它在构建决策树时,在树生长的过程中提前停止某些分支的扩展,从而防止模型过度拟合训练数据。

        后剪枝是一种用于解决过拟合问题的方法,它在构建完整的决策树后,通过反向修剪来删除那些对泛化性能影响较小的子树和叶节点,从而达到减少模型复杂度、避免过拟合的目的。

4、通过噪声解决过拟合问题

        噪声正则化是一种解决过拟合问题的有效方法。该方法通过向训练数据添加随机噪声,从而使模型更加鲁棒,并减少对训练数据的过度拟合。噪声正则化可以通过多种方式实现。

     其中一种常见的方法是在输入数据中添加随机噪声。例如,在图像分类任务中,可以将输入图像进行微小的扰动,以增加数据的多样性。

      另一种方法是在模型的隐藏层中添加噪声。例如,在自编码器中,可以在隐藏层中添加高斯噪声,以强制模型学习如何重构被噪声污染的数据。使用噪声正则化的一个优点是,它可以帮助模型学习数据中的真实模式,而不是只是记住训练数据集中的具体例子。这有助于提高模型的泛化能力,并使其适用于新的数据样本。

5、数据增强解决过度拟合

        数据增强是通过对训练数据进行变换来扩展数据集的方法。例如,可以对图像进行旋转、缩放、裁剪、翻转等操作,从而生成新的训练数据。这些变换可以增加训练数据的多样性,减少模型对特定样本的依赖,从而提高模型的泛化能力。

6、通过添加更多训练数据解决过拟合

        向模型添加更多训练数据将防止过度拟合。之前提到的对数据加噪和进行数据增强也可以看作是一种增加更多训练数据的方式。

7、通过均衡训练和测试数据解决过拟合

      如果训练集和测试集的数据分布存在显著差异,模型可能无法很好地泛化到测试集上。需要通过随机打散的方式,保证数据的均匀分散。

8.通过训练策略解决过拟合

   8.1用 k 折交叉验证解决过拟合问题

        k折交叉验证是一种常用的解决过拟合问题的方法,能够充分利用数据集中的信息,评估模型的泛化能力,并且避免了训练集和测试集划分不均匀的情况。具体操作是将数据集分为k个子集,每次选取一个子集作为验证集,剩下的k-1个子集作为训练集,重复进行k次交叉验证,最后将k次验证结果求平均得到最终性能指标。通过多次交叉验证可以减小因随机性对模型性能的影响,使得评估结果更加可靠稳定。使用k折交叉验证可以有效降低模型过度拟合训练数据的风险,同时还能够提高模型的泛化能力和鲁棒性,从而获得更好的性能和预测能力。

8.2早期停止策略解决过拟合问题

        提前停止是一种解决过拟合问题的简单有效方法之一。 在每个epoch结束后计算验证集上的误差,如果验证集误差开始上升,则停止模型训练。提前停止可以避免模型过度学习训练数据的特点,降低模型复杂度,并提高模型泛化能力,从而避免过拟合问题的发生。
  

8.3集成学习与迁移学习

利用集成学习方法

进行模型融合与迁移学习

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2192847.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据分享】2000—2023年我国省市县三级逐年植被覆盖度(FVC)数据(Shp/Excel格式)

之前我们分享过2000—2023年逐月植被覆盖度(FVC)栅格数据(可查看之前的文章获悉详情)和Excel和Shp格式的省市县三级逐月FVC数据(可查看之前的文章获悉详情),原始的逐月栅格数据来源于高吉喜学者…

【Python】Python知识总结浅析

Python是一种高级编程语言,由Guido van Rossum于1991年首次发布。它以简洁的语法和强大的功能著称,适用于多种应用场景,包括Web开发、数据分析、人工智能、自动化脚本等。 易于学习和使用:Python的语法简洁明了,适合初…

信息安全工程师(36)访问控制主要产品与技术指标

前言 访问控制是确保系统资源安全的重要手段,其主要产品和技术指标对于理解和实施有效的访问控制策略至关重要。 一、访问控制主要产品 访问控制产品种类繁多,根据应用场景和需求的不同,可以分为以下几类: 防火墙: 功能…

【C语言】VS调试技巧

文章目录 什么是bug什么是调试(debug)debug和releaseVS调试快捷键监视和内存观察编程常⻅错误归类 什么是bug bug本意是昆⾍”或“⾍⼦”,现在⼀般是指在电脑系统或程序中,隐藏着的⼀些未被发现的缺陷或问题,简称程序…

Pytorch基础:网络层

文章目录 1.卷积层-Convolution Layers1.1 1d/2d/3d卷积1.2卷积--nn.Conv2d1.3转置卷积(实现上采样) 2.池化层3.线性层—Linear Layer4.激活函数层—Activate Layer 1.卷积层-Convolution Layers 卷积运算:卷积运算在输入信号(图像)上滑动,相应位置上进行乘加. 卷积核:又称过滤…

java版鸿鹄电子招投标系统功能架构设计 核心功能设计 鸿鹄电子招投标采购系统源码

java版鸿鹄电子招投标系统功能架构设计 核心功能设计 鸿鹄电子招投标采购系统源码

Linux高级编程_30_管道

文章目录 管道作用:分类: 前置知识:复制文件描述符dupdup2 【推荐使用】 无名管道概述: pipe函数实现: ps -A | grep bash 有名管道:实现有名管道的聊天无名管道与有名管道的区别? 管道 作用:…

小红书算法岗面试,竞争太激烈了

最近已有不少大厂都在秋招宣讲了,也有一些在 Offer 发放阶段。 节前,我们邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对新手如何入门算法岗、该如何准备面试攻略、面试常考点、大模型技术趋势、算法项目落地经验分享等热门话题进行了…

排版套料系统设计说明

先上效果图 项目地址 1.产品介绍 产品名称:StreamFit 智能排版套料系统 主要功能: 智能排版优化 功能描述:StreamFit 利用先进的算法技术,自动对各类材料(如布料、金属板材、纸张等)进行高效排版布局&am…

一次Mysql数据库活跃连接数高告警的排查方法

基础相关知识 在现代应用中,数据库的性能和稳定性直接影响到整个系统的运行情况。活跃连接数高的告警往往意味着数据库负载过重,可能会导致性能下降甚至服务不可用。 活跃连接数指的是当前与数据库建立连接并且处于活动状态的连接数量。 高活跃连接数…

阿里云百炼通义大模型接入流程,手把手教程

阿里云百炼通义大模型接入流程,即体验大模型、创建Agent应用和创建自训练大模型,阿里云百科aliyunbaike.com分享阿里云官网关于阿里云百炼通义大模型的接入流程: 阿里云百炼通义大模型接入流程 快速接入阿里云百炼通义大模型共分为三大步骤&a…

大模型客服的未来发展趋势

在当今数字化时代,大模型客服正以惊人的速度改变着客户服务的格局。随着技术的不断进步,大模型客服的未来发展趋势充满了无限可能。随着人工智能技术的快速发展,智能客服领域正迎来一场前所未有的变革。大模型客服作为其中的重要分支&#xf…

为什么营业执照显示经营异常

经营异常是怎么回事?是什么意思?1、年报未依照正常的时间公示或者某些要素没有公示;2、营业执照的地址与实际的地址不符,该地址联络不到人。经营异常不处理有什么后果?有什么影响?企业被列入工商异常一般会对公司的经营…

Maven的生命周期与依赖作用域介绍

说明:本文介绍Maven的生命周期,以及在pom.xml文件中每个依赖(dependency标签内)scope标签的内容。 Maven生命周期 在IDEA项目中,右侧边栏,点Maven,可以看到以下生命周期。 其中, c…

【AI知识点】偏差-方差权衡(Bias-Variance Tradeoff)

偏差-方差权衡(Bias-Variance Tradeoff) 是机器学习和统计学中的一个核心概念,描述了模型在训练数据和测试数据上的表现与模型复杂度之间的关系。它解释了为什么我们需要在模型复杂度和模型泛化能力之间做权衡,以避免模型出现欠拟…

数字化转型:企业竞争力提升的关键

在当今时代,数字化转型已成为企业发展的必然趋势。它不仅仅是技术的应用,更是一种战略思维的转变。 数字化转型的主要内容 1.业务流程数字化:通过引入信息技术,实现业务流程的自动化、智能化,提高业务流程的效率和准确…

科普篇 --- 什么是汽车中的API?

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不…

第四节——从深层剖析指针(让你不再害怕指针)

文章目录 1. 字符指针变量剑指offer例题 2. 数组指针变量2.1 数组指针变量是什么?2.2 数组指针变量怎么初始化 3. ⼆维数组传参的本质代码实现 4. 函数指针变量4.1 函数指针变量的创建4.3 两段有趣的代码4.3.1 typedef 关键字 5. 函数指针数组的定义 1. 字符指针变量…

Stable Diffusion绘画 | AI 图片智能扩充,超越PS扩图的AI扩图功能(附安装包)

来到「文生图」页面,输入固定的起手式提示词。 第1步,开启 ControlNet,将需要扩充的图片加载进来: 控制类型选择「Inpaint」,预处理器选择「inpaint_onlylama」,缩放模式选择「缩放后填充空白」&#xff1…

【C++差分数组】3224. 使差值相等的最少数组改动次数|1996

本文涉及知识点 C差分数组 LeetCode3224. 使差值相等的最少数组改动次数 给你一个长度为 n 的整数数组 nums ,n 是 偶数 ,同时给你一个整数 k 。 你可以对数组进行一些操作。每次操作中,你可以将数组中 任一 元素替换为 0 到 k 之间的 任一…