4.2 機器學習 - 欠擬合和過擬合

模型訓練的核心挑戰是讓模型既 “學好” 訓練數據,又能 “適應” 新數據。欠擬合(Underfitting)和過擬合(Overfitting)是阻礙這一目標的兩大典型問題,其本質是 “模型復雜度” 與 “數據復雜度” 不匹配。本節從定義、成因、判斷方法到解決策略,系統解析如何平衡模型與數據,實現最優泛化性能。

一、核心概念:訓練誤差與泛化誤差

誤差類型定義作用
訓練誤差(Training Error)模型在訓練數據上的預測錯誤率(如分類任務的錯誤樣本占比)反映模型對訓練數據的 “學習程度”,訓練誤差過低可能是過擬合的信號
泛化誤差(Generalization Error)模型在未見過的新數據(測試集 / 真實場景)上的預測錯誤率反映模型的 “實際應用價值”,是評估模型性能的核心指標

理想狀態:訓練誤差與泛化誤差均較低且接近,說明模型既學好了數據規律,又能穩定遷移到新數據。

二、欠擬合與過擬合的本質與表現

問題類型核心特征訓練誤差泛化誤差典型場景
欠擬合(Underfitting)模型 “能力不足”,無法捕捉訓練數據中的規律高(訓練數據都學不好)高(新數據更學不好)用簡單模型(如線性回歸)解決復雜問題(如非線性分類)
過擬合(Overfitting)模型 “能力過強”,過度學習訓練數據中的噪聲 / 細節低(幾乎完美擬合訓練數據)高(無法適應新數據)用復雜模型(如深度神經網絡)擬合小樣本數據(如 10 個樣本訓練 100 層網絡)

欠擬合與過擬合的本質是 “模型復雜度” 與 “數據復雜度” 不匹配,可用二維矩陣直觀展示:

數據復雜度 → 模型復雜度 ↓低(如簡單線性分布數據)高(如非線性、高維度、含噪聲數據)
低(如線性模型、淺決策樹)正常(泛化誤差低)欠擬合(模型太簡單,學不會復雜數據)
高(如深度神經網絡、復雜集成樹)過擬合(模型太復雜,把簡單數據的噪聲當規律學)正常(復雜模型匹配復雜數據)

關鍵概念補充:

  • 模型復雜度:模型擬合復雜函數的能力,由 “參數量” 和 “參數自由度” 決定:
    • 參數量越多(如 100 層神經網絡比 1 層網絡參數多),復雜度越高;
    • 參數取值范圍越大(如未加正則化的權重可自由取值),復雜度越高。
      通俗理解:高復雜度模型像 “記憶力超強的學生”,能背下所有訓練題(甚至題目中的錯別字),但缺乏舉一反三的能力。
  • 數據復雜度:數據本身的 “復雜程度”,由樣本量、特征維度、結構多樣性等決定:
    • 樣本量越少、特征維度越低、分布越單一,數據復雜度越低;
    • 樣本量越大、特征維度越高、含有時空結構(如文本、視頻),數據復雜度越高。

三、誤差曲線:判斷模型最優復雜度的直觀工具

通過 “模型復雜度 - 誤差” 曲線,可清晰定位欠擬合、過擬合與最優狀態:

誤差
↑
|    泛化誤差曲線
|     \
|      \       /
|       \     /
|        \   /
|         \ /
|          *  ← 最優復雜度(泛化誤差最低)
|         / \
|        /   \
|       /     \
|      /       \
|     /  訓練誤差曲線
|    /
|___/________________________________→ 模型復雜度(從低到高)欠擬合區域       過擬合區域

曲線解讀:

  1. 欠擬合階段(左半段)
    • 模型復雜度低,訓練誤差和泛化誤差均較高且接近;
    • 隨著復雜度增加,兩者同步下降(模型開始學習數據規律)。
  2. 最優復雜度點(中間 * 點)
    • 泛化誤差達到最小值,此時模型復雜度與數據復雜度匹配;
    • 訓練誤差略低于泛化誤差(正常現象,模型對訓練數據更熟悉)。
  3. 過擬合階段(右半段)
    • 模型復雜度過高,訓練誤差持續下降(甚至接近 0),但泛化誤差開始上升;
    • 原因:模型過度學習訓練數據中的噪聲 / 個性化特征(如訓練集中的異常值),而非通用規律。

四、數據復雜度對泛化誤差的影響

泛化誤差與數據復雜度的關系遵循 “邊際效益遞減” 規律:

泛化誤差
↑
|    高復雜度模型
|    ────┐
|         \
|          \
|    低復雜度模型  ────┐
|                     \
|                      \
|________________________→ 數據復雜度(從低到高)飽和點

規律解讀:

  1. 隨著數據復雜度增加(如樣本量增大、特征更豐富),泛化誤差逐漸下降并趨于穩定(達到飽和點);
  2. 數據復雜度較低時,高復雜度模型的泛化誤差高于低復雜度模型(易過擬合);
  3. 數據復雜度超過飽和點后,增加數據對泛化誤差的改善有限,此時需提升模型復雜度(如加深網絡、增加樹的深度)以進一步降低泛化誤差。

五、模型選擇:找到復雜度與數據的平衡點

模型選擇的核心目標是 “最小化泛化誤差”,同時兼顧商業指標(如訓練速度、部署成本),具體步驟與策略如下:

1. 核心原則

選擇 “與數據復雜度匹配的模型”:

  • 簡單數據(如線性分布)→ 選低復雜度模型(如線性回歸、淺決策樹);
  • 復雜數據(如圖像、文本)→ 選高復雜度模型(如神經網絡、集成樹)。

2. 模型選擇流程

步驟 1:確定模型類別

根據任務類型(分類 / 回歸 / 時序)和數據結構(表格 / 圖像 / 文本)選擇模型大類:

  • 表格數據:決策樹、隨機森林、梯度提升樹;
  • 圖像數據:卷積神經網絡(CNN);
  • 文本 / 時序數據:循環神經網絡(RNN)、Transformer。

步驟 2:優化超參數(控制模型復雜度)

在模型類別內,通過超參數調整復雜度(核心超參數示例):

模型類型關鍵超參數(控制復雜度)超參數調優方向
決策樹 / 集成樹- 樹的深度(max_depth)
- 葉子節點最小樣本數(min_samples_leaf)
- 樹的數量(n_estimators,集成模型)
深度越小、葉子節點樣本數越多 → 復雜度越低(緩解過擬合)
神經網絡- 隱藏層數量(num_layers)
- 隱藏層維度(num_hiddens)
- 正則化系數(如 L2 正則的 weight_decay)
層數越少、維度越低、正則化系數越大 → 復雜度越低(緩解過擬合)
線性模型- 正則化類型(L1/L2)
- 正則化強度(C,如 SVM 中的懲罰系數)
正則化強度越大 → 復雜度越低(權重被約束,避免過擬合)

3. 實用工具:驗證集與交叉驗證

  • 驗證集(Validation Set):從訓練集中劃分出的子集,用于在訓練過程中評估模型泛化能力,輔助超參數選擇(避免直接用測試集調參導致的過擬合);
  • 交叉驗證(Cross-Validation):將訓練集分成 k 份(如 5 折),輪流用 k-1 份訓練、1 份驗證,取平均驗證誤差作為泛化誤差估計,適合小樣本場景(減少數據浪費)。

六、解決欠擬合與過擬合的具體策略

問題類型核心原因解決策略
欠擬合模型復雜度 < 數據復雜度1. 提升模型復雜度
① 模型參數(如加深神經網絡層數、增加樹的深度);
② 引入非線性(如給線性模型添加多項式特征、使用 ReLU 激活函數);
2. 減少正則化強度(如降低 L2 正則系數);
3. 優化特征(如增加有價值的特征,避免特征維度不足)。
過擬合模型復雜度 > 數據復雜度1. 降低模型復雜度
① 減少參數(如刪減神經網絡隱藏層、限制樹的深度);
② 增加正則化(如 L1/L2 正則、Dropout、早停(Early Stopping));
2. 提升數據復雜度
① 增加樣本量(如收集更多數據);
② 數據增強(如圖像旋轉 / 裁剪、文本同義詞替換,人為增加數據多樣性);
3. 簡化特征(如特征選擇、降維,去除噪聲特征)。

七、總結

欠擬合與過擬合的本質是 “模型復雜度” 與 “數據復雜度” 的失衡:

  • 欠擬合是 “模型學不會”,需增強模型能力;
  • 過擬合是 “模型學太死”,需約束模型能力或豐富數據。

實際應用中,需通過誤差曲線、驗證集等工具動態調整模型復雜度,最終找到 “泛化誤差最低” 的平衡點 ——好的模型不是越復雜越好,而是 “剛剛好” 能匹配數據的復雜度

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/921497.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/921497.shtml
英文地址,請注明出處:http://en.pswp.cn/news/921497.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LeetCode 468. 驗證IP地址 - 詳細解析

文章目錄LeetCode 468. 驗證IP地址 - 詳細解析題目描述IPv4驗證規則&#xff1a;IPv6驗證規則&#xff1a;最優Java解決方案&#xff08;注釋完整版&#xff09;關鍵變量含義及代碼技巧代碼技巧詳解1. 前導零檢查的最佳實踐2. IPv6為什么不能用Character.isDigit()3. 針對性注釋…

新能源研發,用新型實驗記錄本:ELN

新能源&#xff08;材料&#xff09;研發如火如荼&#xff0c;競爭激烈。以電池為例&#xff0c;新能源汽車的崛起、儲能技術的突破&#xff0c;讓電池成為了能源領域的“新寵”。電池研發已經成為熱門賽場&#xff0c;各研發團隊都在與時間賽跑&#xff0c;試圖維持優勢或彎道…

大語言模型領域最新進展

CSDN大禮包《人工智能大模型課程》 CSDN大禮包《人工智能平臺設計開發課程課程》

【網安干貨】--計算機網絡知識梳理總結(二)

這是計算機網絡知識梳理的第二篇&#xff0c;真正去梳理才發現內容好多好多好多好多好多啊…怕是預計要寫四篇 注意&#xff1a;如果看不清可以右鍵復制圖片鏈接到瀏覽器訪問或另存為照片并放大查看 計算機網絡2 計算機網絡協議2.1 網絡協議的定義與核心要素2.1.1 協議的定義2.…

百度前端社招面經二

社招 百度 前端開發 二面 base 北京 react 17 和 18 的差異react的響應式原理&#xff0c;js是如何驅動模塊的webpacke 4 和 5 差異webpacke 熱更新原理。Tree Shaking 是干嘛的import 和 require 區別&#xff0c;都會被Tree Shaking嗎隱藏元素的幾種方式三欄布局&#xff0c;…

結合prompt分析NodeRAG的build過程

之前介紹了NodeRAG的節點類型和安裝過程。 linux環境conda安裝NodeRAG示例-CSDN博客 這里嘗試從prompt代碼角度分析NodeRAG如何將文檔轉化為節點、關系。 1 整體處理流程 NodeRAG定義了如下所示狀態及處理流程。 # define the state to pipeline mapping self.state_pipelin…

我改寫的二分法XML轉CSV文件程序速度追上了張澤鵬先生的

以下是美團龍貓初稿&#xff0c;我改正&#xff0c;DeepSeek重新格式化的代碼。 重要改正點&#xff1a; 1.二分查找用goto控制迭代&#xff0c;返回<row的正確位置 2.在緩沖區頭填上父標簽使expat能連續解析不報錯 #include <stdio.h> #include <stdlib.h> #in…

使用Docker安裝Stirling-PDF(PDF工具)

1、官方Web端 詳見&#xff1a;https://stirlingpdf.io/?langzh_CN 2、安裝Docker 合集&#xff1a;Docker安裝與使用 3、安裝Stirling-PDF 詳見&#xff1a; https://docs.stirlingpdf.com/Installation/Docker%20Install https://hub.docker.com/r/stirlingtools/stirli…

【開題答辯全過程】以 基于微信小程序的“XIN”學生組織管理系統為例,包含答辯的問題和答案

個人簡介一名14年經驗的資深畢設內行人&#xff0c;語言擅長Java、php、微信小程序、Python、Golang、安卓Android等開發項目包括大數據、深度學習、網站、小程序、安卓、算法。平常會做一些項目定制化開發、代碼講解、答辯教學、文檔編寫、也懂一些降重方面的技巧。感謝大家的…

Iwip驅動8211FS項目——MPSOC實戰1

硬件設計采用RTL8211FS芯片&#xff0c;vitis默認的IWIP庫不支持此芯片。 網口相關知識可以翻看前期文章 以太網PHY_MDIO通信&#xff08;基于RTL8211&#xff09;--FPGA學習筆記22-CSDN博客 以太網ARP協議——FPGA學習筆記23_fpga以太網學習-CSDN博客 以太網ICMP協議(ping…

《Science》神經炎癥綜述思路套用:從機制到跨領域研究范式

2025 年 6 月首都醫科大學團隊在《Science》發表的綜述《Immunological dimensions of neurological disease: from mechanisms to therapeutics》(神經疾病的免疫維度:從機制到療法),系統性解析了神經炎癥的動態演變規律與雙面性,提出階段化、精準化治療新范式。本文基于…

嵌入式學習筆記--Linux系統編程階段--DAY07進程間通信--存儲映射和共享內存

1.存儲映射存儲映射 I/O (Memory-mapped I/O) 使一個磁盤文件與存儲空間中的一個緩沖區相映射。于是當從緩沖區中取數據&#xff0c;就相當于讀文件中的相應字節。于此類似&#xff0c;將數據存入緩沖區&#xff0c;則相應的字節就自動寫入文件。這樣&#xff0c;就可在不適用 …

.Net程序員就業現狀以及學習路線圖(四)

一、.Net程序員就業現狀分析 1. 市場需求與崗位分布 2025年數據顯示&#xff0c;.Net開發崗位在全國IT崗位中占比約0.009%&#xff0c;主要集中在一線城市如深圳、上海等地 2 4。行業分布呈現以下特點&#xff1a;?軟件行業?&#xff1a;占比43.3% ?研發領域?&#xff1a;占…

Monorepo 是什么?如何使用并寫自己的第三方庫

1. 什么是 Monorepo&#xff1f; Monorepo&#xff08;單倉庫&#xff09;指的是把多個項目/包放在一個代碼倉庫里統一管理。常見結構&#xff1a; /repo-root/packages/ui-lib/utils/apps/web-apppackage.jsonpnpm-workspace.yaml好處&#xff1a; 內部庫能直接共享&#xff0…

使用CI/CD部署后端項目(gin)

寫在前面&#xff1a;使用CI/CD部署gin項目到服務器中 前端可以參考&#xff1a;使用CI/CD部署nextjs項目 使用 GitHub Actions 配置后端 CI/CD&#xff08;含部署到服務器&#xff09; 本文檔介紹如何在 GitHub 倉庫中配置 CI/CD&#xff0c;將 PROJECT_NAME 項目自動構建并…

Coze添加知識庫解析的Embedding和PaddleOCR模型配置

1. Embedding模型配置 使用ollama模型&#xff0c;導入qwen3的embedding-8B模型&#xff0c;導入流程參考&#xff1a; Ollama離線部署模型 qwen3-Embedding模型文件可從魔塔社區下載&#xff1a; Qwen3-Embedding-8B 1.2 Coze配置 在coze_studio/docker目錄下輸入: vim .en…

02-Media-6-rtsp_server.py 使用RTSP服務器流式傳輸H264和H265編碼視頻和音頻的示例程序

rtsp_server.py 是使用k230的板載攝像頭和WIFI聯網功能,使用RTSP服務器流式傳輸視頻和音頻的程序示例。程序核心是創建了一個RtspServer類,該類用于初始化、啟動、停止RTSP服務器,并進行視頻和音頻的流傳輸。 一、首先,程序導入必要的模塊,包括視頻編碼、傳感器、媒體處理…

13-Java-面向對象-封裝和this關鍵字

文章目錄封裝this關鍵字封裝 告訴我們&#xff0c;如何正確設計對象的屬性和方法。原則&#xff1a;對象代表什么&#xff0c;就得封裝對應的數據&#xff0c;并提供數據對應的行為 package common;/*** Author: 大海* Date: 2025-09-06*/public class GirlFriend {/*private…

三高項目-緩存設計

三高項目-緩存設計 分流、并發 導流&#xff1a;將原本復雜操作的請求&#xff0c;引導到簡單的操作上。以后再來查&#xff0c;不需要經過復雜的計算。 成本&#xff1a;空間&#xff0c;收益&#xff1a;節省了時間。 不要以為僅僅是 redis&#xff0c;map等。 對應。kv…

happen-before原則

什么是 happen-before 原則&#xff1f; happen-before 是一個邏輯關系&#xff0c;用于描述兩個操作之間的 “先后順序”—— 如果操作 A happen-before 操作 B&#xff0c;那么 A 的執行結果必須對 B 可見&#xff0c;且 A 的執行順序在邏輯上先于 B。也就是保證指令有序性和…