news 2026/5/7 3:12:48

机器学习 —— 过拟合

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
机器学习 —— 过拟合

摘要:机器学习中的过拟合是指模型过度拟合训练数据中的噪声而非潜在规律,导致在新数据上表现不佳。常见于复杂模型(如深度神经网络),其成因包括模型复杂度过高、训练数据不足或缺乏代表性、缺少正则化等。防止过拟合的技术包括交叉验证、早停法、正则化和丢弃法。示例代码展示了如何在Keras中实现早停法和L2正则化来防止过拟合,通过监控验证损失和添加权重惩罚项,有效提升模型的泛化能力。

目录

机器学习 —— 过拟合

过拟合的成因

防止过拟合的技术

示例

代码说明

输出结果


机器学习 —— 过拟合

过拟合是指模型学习到训练数据中的噪声,而非数据背后的潜在规律。这会导致模型在训练数据上表现优异,但在新数据上表现糟糕。本质上,模型对训练数据过度特化,无法泛化到新场景。

过拟合在使用复杂模型(如深度神经网络)时尤为常见。这类模型参数众多,能与训练数据高度贴合,但往往会牺牲泛化能力。

过拟合的成因

导致过拟合的因素主要有以下几点:

  • 模型复杂度过高:如前所述,复杂模型比简单模型更易过拟合,因其参数更多,能更紧密地贴合训练数据。
  • 训练数据不足:当训练数据量有限时,模型难以学习到真正的潜在规律,反而可能习得数据中的噪声。
  • 训练数据缺乏代表性:若训练数据无法反映模型要解决的问题本质,模型可能学到无关模式,无法泛化到新数据。
  • 缺乏正则化:正则化是通过在损失函数中添加惩罚项来防止过拟合的技术,若缺少这一惩罚项,模型更易发生过拟合。

防止过拟合的技术

机器学习中常用的防过拟合技术包括:

  • 交叉验证(Cross-validation):通过将数据划分为多个子集,轮流用每个子集作为验证集、其余子集作为训练集,评估模型在未见过数据上的表现,确保模型的泛化能力。
  • 早停法(Early stopping):在模型训练完全收敛前停止训练,通过监控验证误差,当误差不再改善时终止训练,避免模型过度拟合。
  • 正则化(Regularization):在损失函数中添加惩罚项,促使模型采用更小的权重,避免拟合训练数据中的噪声。
  • 丢弃法(Dropout):适用于深度神经网络的技术,训练时随机 “丢弃” 部分神经元,迫使剩余神经元学习更稳健的特征,从而防止过拟合。

示例

以下是使用 Keras 实现早停法与 L2 正则化的 Python 代码:

from keras.models import Sequential from keras.layers import Dense from keras.callbacks import EarlyStopping from keras import regularizers # 定义模型架构 model = Sequential() # 第一层:64个神经元,ReLU激活函数,添加L2正则化(惩罚系数0.01) model.add(Dense(64, input_dim=X_train.shape[1], activation='relu', kernel_regularizer=regularizers.l2(0.01))) # 第二层:32个神经元,ReLU激活函数,添加L2正则化(惩罚系数0.01) model.add(Dense(32, activation='relu', kernel_regularizer=regularizers.l2(0.01))) # 输出层:1个神经元,Sigmoid激活函数(适用于二分类任务) model.add(Dense(1, activation='sigmoid')) # 编译模型:损失函数为二元交叉熵,优化器为Adam,评估指标为准确率 model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # 设置早停回调:监控验证损失,连续5个epoch无改善则停止训练 early_stopping = EarlyStopping(monitor='val_loss', patience=5) # 训练模型:使用训练集,划分20%作为验证集,最大训练100个epoch,批次大小为64,启用早停回调 history = model.fit(X_train, y_train, validation_split=0.2, epochs=100, batch_size=64, callbacks=[early_stopping])

代码说明

代码中使用 Keras 的 Sequential 模型搭建网络架构,前两层通过kernel_regularizer参数添加 L2 正则化;借助EarlyStopping类设置早停回调,监控验证损失,若连续 5 个 epoch 无改善则终止训练。训练时划分 20% 数据作为验证集,批次大小设为 64,最大训练 100 个 epoch。

输出结果

运行代码后,将得到类似以下的输出(省略中间 epoch):

plaintext

Train on 323 samples, validate on 81 samples Epoch 1/100 323/323 [==============================] - 0s 792us/sample - loss: -8.9033 - accuracy: 0.0000e+00 - val_loss: -15.1467 - val_accuracy: 0.0000e+00 Epoch 2/100 323/323 [==============================] - 0s 46us/sample - loss: -20.4505 - accuracy: 0.0000e+00 - val_loss: -25.7619 - val_accuracy: 0.0000e+00 Epoch 3/100 323/323 [==============================] - 0s 43us/sample - loss: -31.9206 - accuracy: 0.0000e+00 - val_loss: -36.8155 - val_accuracy: 0.0000e+00 ...(持续输出直至训练停止)

通过结合早停法与 L2 正则化,可有效防止模型过拟合,提升其泛化性能。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/2 6:54:03

【无人机路径规划】无人机结构巡检飞行规划系统,核心用于针对已知三维结构(通过 STL 文件导入)完成无人机观测点生成、路径优化(基于 TSP 问题)、能耗分析、重叠率分析及轨迹可视化附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

作者头像 李华
网站建设 2026/4/25 5:22:12

拼多多商家端 anti-content 分析

声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 逆向分析 部分python代码 cp execjs…

作者头像 李华
网站建设 2026/4/30 0:08:07

Swinject 在移动端广告系统中的应用

Swinject 在移动端广告系统中的应用关键词:Swinject、移动端广告系统、依赖注入、组件化、解耦摘要:本文主要探讨了 Swinject 在移动端广告系统中的应用。首先介绍了 Swinject 的背景知识,包括其核心概念和工作原理。接着通过具体的代码示例&…

作者头像 李华
网站建设 2026/4/29 14:20:10

视觉检测中的数字光纤放大器的核心参数和调整

在当今快速发展的工业自动化领域,机器视觉系统已成为质量控制、自动化生产和智能检测的关键技术。根据国际机器人联合会(IFR)2024年发布的《全球工业自动化报告》,全球机器视觉市场规模预计在2025年达到180亿美元,年复…

作者头像 李华
网站建设 2026/4/21 18:46:39

【通信】基于DPCM编码及2DPSK调制数字频带通信系统Matlab仿真

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

作者头像 李华
网站建设 2026/4/23 18:54:04

【信号调制】使用不同的分类器(逻辑回归分类器、决策树、随机森林、全连接密集层和CNN)来训练模型,以预测不同信噪比值下信号的调制类型附Python代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室🍊个人信条:格物致知,完整Matlab代码及仿真咨询…

作者头像 李华