【機器學習深度學習】 如何解決“宏平均偏低 / 小類識別差”的問題?

目錄

🧩 場景

一、先問清楚:小類差,到底差在哪?

二、對癥下藥:六大優化策略(分類任務專用)

? 1. 處理類別不平衡(最常見)

? 2. 優化數據質量

? 3. 更強的模型結構

? 4. 調參和閾值優化

? 5. 多任務學習 / 小樣本學習(進階)

? 6. 評估方式變更(只輔助,不治病)

三、實戰策略配方:你可以這樣組合使用

四、最后建議:把優化目標分階段

五、類比場景理解

?5.1?加權平均(Weighted Average)

5.2?宏平均(Macro Average)

🧠 類比總結?

?💬 所以你解決什么問題?

六、實際場景理解

6.1 場景描述

6.2 怎么解讀這個報告?

6.3??如果這是實際項目,可能會發生什么?

6.4?落地優化策略(實際操作建議)

? 一句話總結:


我們從問題成因 ? 對應策略來一條條拆解,幫你從數據、模型、訓練三方面做優化。


🧩 場景

你的宏平均(Macro F1、Recall)偏低,意味著:

“模型在小類或某些類上表現很差”,嚴重偏向大類,無法一視同仁。


一、先問清楚:小類差,到底差在哪?

分類報告中出現以下問題,你對應下:

問題類型現象舉例說明
小類 Recall 很低模型“看不見”小類 ? 漏判多提升召回能力
小類 Precision 很低模型“亂猜”小類 ? 假陽性多提升判別準確性
小類 F1 都低precision + recall 都不行模型沒學會這類

二、對癥下藥:六大優化策略(分類任務專用)

? 1. 處理類別不平衡(最常見)

方法說明
? 上采樣小類復制/增強小類樣本,讓其“更被看到”
? 下采樣大類減少主類樣本,防止主類主導學習
? SMOTE 等合成方法用算法生成小類新樣本(數值型數據有效)
? Class weight 加權在損失函數中對小類賦更高權重(如 cross_entropy(weight=...)
? Focal Loss對難分類(通常是小類)樣本聚焦訓練(尤其適用于極端不平衡)


? 2. 優化數據質量

問題應對策略
小類樣本太少增加標注、數據增強
標簽錯誤多清洗數據,保證標簽準確
小類樣本分布太散嘗試用標簽聚類重劃分類(if 有語義重疊)


? 3. 更強的模型結構

方法說明
更復雜模型比如用 BERT 替代淺層網絡,增加模型容量
單獨訓練小類模型用 One-vs-Rest 架構,小類單獨 fine-tune 模型,后融合
Ensemble 模型多模型投票,提升魯棒性和小類學習能力


? 4. 調參和閾值優化

方法說明
分類閾值優化默認分類閾值=0.5,小類可以設得更低(比如 0.3)提高 Recall
Grid Search 搜索最佳 F1使用 precision_recall_curve 找最優平衡點


? 5. 多任務學習 / 小樣本學習(進階)

  • 多任務學習:讓模型同時學習主任務 + 小類相關輔助任務,提升泛化

  • 小樣本學習:如 prototypical networks,適用于樣本極少的小類


? 6. 評估方式變更(只輔助,不治病)

  • 如果業務允許,你可以:

    • 合并小類為一個“其它類” → 簡化難度

    • 使用 recall@K 評估多標簽任務,容忍誤判,但涵蓋目標類


三、實戰策略配方:你可以這樣組合使用

優化階段推薦組合
快速試錯上采樣 + class_weight + BERT
精調模型Focal Loss + 閾值調優
長期演進數據重標注 + 模型集成 + 小樣本學習


四、最后建議:把優化目標分階段

階段優化目標
第 1 步小類 F1 ≥ 0.5(說明模型開始學到了)
第 2 步macro F1 ≥ 0.7,weighted F1 ≥ 0.85
第 3 步小類表現逐漸追平大類,趨向均衡

五、類比場景理解

老師給 3 個學生打分(類比多分類任務)

學生:

  • 小明(班長,成績優異)

  • 小紅(中等生)

  • 小李(邊緣生,小透明)

🎯 老師要給這 3 個學生打個“班級平均成績”


?5.1?加權平均(Weighted Average)

?? 誰人多(樣本多),誰說了算!

假設:

  • 小明成績:90,出勤率高,占比 90%

  • 小紅成績:60,占比 5%

  • 小李成績:30,占比 5%

加權平均:

= 90×90% + 60×5% + 30×5%
= 81 + 3 + 1.5 = 85.5

?🎉 看起來班級表現很好!

但問題是:小李考30分幾乎沒影響分數!


5.2?宏平均(Macro Average)

?? 不管你多有名,一人一票,平均對待!

= (90 + 60 + 30) / 3 = 60

?📉 分數立馬掉下來了,因為小李的“差”暴露了整個班的問題


🧠 類比總結?

項目含義類比解釋
大類小明(樣本多、模型擅長)被模型學得最好
小類小李(樣本少、模型忽視)容易被模型“遺忘”
加權平均更關注小明分數高,但掩蓋小李問題
宏平均每人平等打分揭示小李成績差,暴露短板

?💬 所以你解決什么問題?

當你發現“宏平均很低”時,說明小李(小類)太差了。你需要:

  • 補課(數據增強)

  • 單獨輔導(小類調優、單獨建模)

  • 師資傾斜(加權損失函數、小類聚焦訓練)

加權平均是在看“你最擅長誰”,宏平均是在看“你最忽視誰”。

提升宏平均,就是在讓你“別光教學霸,小透明也要管”。?
?


六、實際場景理解

6.1 場景描述

你在開發一個模型,用于將用戶發布的內容自動分類,類別包括:

類別編號類別名稱說明
0正常內容最多的日常聊天、圖片等內容
1色情內容嚴格禁止,小概率存在
2暴力極端內容極端低頻,但必須精準識別

?模型輸出報告如下:

              precision    recall  f1-score   supportClass 0     0.98       0.99     0.985       9500Class 1     0.70       0.30     0.42         300Class 2     0.60       0.25     0.35         200accuracy                         0.97      10000macro avg     0.76       0.51     0.585     10000
weighted avg     0.96       0.97     0.964     10000

6.2 怎么解讀這個報告?

觀察項含義
? accuracy = 0.97weighted F1 = 0.964模型整體表現很好,看起來很“高精尖”
?? macro F1 = 0.585小類表現嚴重拉胯,小類樣本雖然少,但錯誤率非常高
? Class 1 / Class 2 的 recall 分別只有 0.30 和 0.25模型漏判了大部分違規內容,風險巨大

6.3??如果這是實際項目,可能會發生什么?

  • 🔥 色情和暴力內容沒有被及時識別 ? 內容審核失敗

  • 🧨 用戶舉報大量違規內容沒反應 ? 投訴飆升

  • 📉 監管部門問責 ? 平臺信任度嚴重受損


6.4?落地優化策略(實際操作建議)

問題原因對策
小類 F1 太低數據少 / 模型偏向大類? 小類上采樣? 添加 class_weight
recall 太低(漏判)模型不敏感 / 閾值不合理? 使用 Focal Loss? 降低小類判斷閾值
precision 也低(誤判多)特征不區分 / 數據質量差? 加強語義特征? 檢查樣本標注準確性

平臺能不能及時識別“違規內容”,不看你識別了多少正常帖,而看你“有沒有漏掉小類雷區”。宏平均,就是那個幫你揪出雷區的指標。


? 一句話總結:

宏平均低 ≠ 模型差,而是模型不公平。你要做的是“讓每一類都能被模型認真對待”。

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

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

相關文章

數據結構 --- 棧

棧 --- stack前言一、棧結構二、相關方法1.初始化2.入棧3.出棧4.判空5.獲取棧頂元素6.獲取棧大小7.銷毀前言 棧是一個特殊的線性表,遵循一個先進后出的特性,即操作數據(入棧,出棧)只能從棧頂操作,棧底是一…

【uniapp】---- 在 HBuilderX 中使用 tailwindcss

1. 前言 接手了一個uniapp的微信小程序項目,因為在上一個 taro 的項目中使用的 tailwindcss,感覺比較方便,又不想動項目中原來的代碼,因此就配置 tailwindcss,在新創建的子包中使用。 2. 分析 vue2 版本的 uni-app 內置的 webpack 版本為 4 , postcss 版本為 7, 所以還是…

Spring Boot + Easy Excel 自定義復雜樣式導入導出

tips&#xff1a;能用模板就用模板&#xff0c;當模板不適用的情況下&#xff0c;再選擇自定義生成 Excel。官網&#xff1a;https://easyexcel.opensource.alibaba.com安裝<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</arti…

Spark從入門到實戰:安裝與使用全攻略

目錄一、Spark 簡介1.1 Spark 的概念1.2 Spark 的優勢1.3 Spark 的應用場景二、安裝前準備2.1 硬件要求2.2 軟件要求2.3 下載 Spark三、Spark 安裝步驟3.1 解壓安裝包3.2 配置環境變量3.3 配置 spark-env.sh3.4 配置 slaves 文件&#xff08;分布式模式&#xff09;3.5 啟動 Sp…

Python 進程間的通信:原理剖析與項目實戰

在 Python 編程中,當涉及多進程編程時,進程間的通信(Inter-Process Communication,簡稱 IPC)是一個重要的課題。多個進程在運行過程中,常常需要交換數據、傳遞狀態或協同工作,這就離不開進程間通信機制。本文將深入講解 Python 進程間通信的原理,并結合實際項目案例,展…

神經網絡之BP算法

一、正向傳播正向傳播&#xff08;Forward Propagation&#xff09;是神經網絡中數據從輸入層流向輸出層的過程。輸入數據通過各層的權重和激活函數逐層計算&#xff0c;最終得到預測輸出。數學表示&#xff1a; 對于第 ( l ) 層的神經元&#xff0c;其輸出計算如下&#xff1a…

Ubuntu 版本號與別名對照表(部分精選)

Ubuntu 的別名遵循 形容詞 動物名 的命名規則&#xff0c;且兩個單詞首字母相同&#xff0c;按字母表順序循環使用&#xff08;從 Ubuntu 6.06 開始&#xff09;。 &#x1f4c5; Ubuntu 版本號與別名對照表&#xff08;部分精選&#xff09; 版本號別名 (開發代號)發布時間…

實驗03-Spark批處理開發

使用Spark Shell探索RDD 啟動并使用Scala Spark Shell 在終端窗口&#xff0c;啟動Scala Spark shell&#xff1a; spark-shell --master local查看對象&#xff1a; scala> sc scala> spark輸入spark.[TAB]然后可以看到所有可用的方法。 讀并顯示文本文件 查看文本…

【R語言】Can‘t subset elements that don‘t exist.

Error in select(): ? In argument: all_of(label_col). Caused by error in all_of(): ! Cant subset elements that dont exist. ? Element Label doesnt exist. Run rlang::last_trace() to see where the error occurred.原文中文解釋涉及關鍵詞Error in select()報錯發生…

Spring的依賴注入(xml)

引入 首先先明白&#xff0c;依賴注入描述的是在容器中建立bean與bean之間的依賴關系&#xff0c;本質就是將一個類中和別的類解耦的方式&#xff0c;就是把別的類&#xff0c;寫在成員變量位置&#xff0c;再對外提供可以給成員變量賦值的方法&#xff0c;外界就直接調用來給…

docker運行的一些常用命令

docker images 顯示可以加載的鏡像docker ps 顯示運行的docker容器 加-a顯示所有的容器docker run --name 容器名字 -d 鏡像名字docker start 容器名/ID 開啟容器docker stop 容器名/ID 關閉容器docker exec -it dock…

Django跨域

步驟 1&#xff1a;安裝 django-cors-headerspip install django-cors-headers步驟 2&#xff1a;修改 Django 配置 在 settings.py 中添加&#xff1a;INSTALLED_APPS [...,"corsheaders", # 新增 ]MIDDLEWARE [...,"corsheaders.middleware.CorsMiddleware…

20250706-10-Docker快速入門(下)-Harbor鏡像倉庫_筆記

一、Harbor鏡像倉庫搭建與使用1. Harbor概述&#xfeff;&#xfeff;定義: 由VMWare公司開源的容器鏡像倉庫系統技術基礎: 在Docker Registry基礎上進行企業級擴展核心特性:提供管理用戶界面(GUI)基于角色的訪問控制(RBAC)支持&#xfeff;AD/LDAP\mathrm{AD}/\mathrm{LDAP}AD…

JavaScript之數組方法詳解

JavaScript之數組方法詳解一、數組的創建與基礎特性1.1 數組的創建方式1.2 數組的核心特性二、修改原數組的方法2.1 添加/刪除元素2.1.1 push()&#xff1a;尾部添加元素2.1.2 pop()&#xff1a;尾部刪除元素2.1.3 unshift()&#xff1a;頭部添加元素2.1.4 shift()&#xff1a;…

品牌增長困局突圍:大模型時代,AI 如何幫我的品牌少走彎路?

AI時代對企業戰略的沖擊與機遇 在當今瞬息萬變的商業環境中&#xff0c;大模型的崛起正以前所未有的力量重塑著各行各業的競爭格局。傳統的市場營銷、品牌傳播模式正在被顛覆&#xff0c;消費者獲取信息、認知品牌的方式發生了根本性變化。如果說過去十年是“互聯網”的時代&am…

從單體到微服務:Spring Cloud 開篇與微服務設計

一、單體架構的核心痛點與微服務化目標 1. 單體架構的致命缺陷問題表現后果可維護性差百萬行代碼耦合&#xff0c;修改一處需全量測試迭代周期長&#xff0c;創新停滯擴展性受限無法按模塊獨立擴縮容&#xff08;如訂單模塊需擴容時&#xff0c;用戶模塊被迫一起擴容&#xff0…

篇二 OSI七層模型,TCP/IP四層模型,路由器與交換機原理

一 前言 本章節主要介紹OSI七層模型&#xff0c;TCP/IP四層模型劃分&#xff0c;以及日常使用的路由器&#xff0c;交換機的一些基礎知識 二 OSI 七層 OSI&#xff08;Open Systems Interconnection Model&#xff09;即開放式系統互聯模型&#xff0c;是國際標準化組織提出的&…

【JavaSE面試篇】Java集合部分高頻八股匯總

目錄 概念 1. 說說Java中的集合&#xff1f; 2. Java中的線程安全的集合有什么&#xff1f; 3. Collections和Collection的區別&#xff1f; 4. 集合遍歷的方法有哪些&#xff1f; List 5. 講一下java里面list的幾種實現&#xff0c;幾種實現有什么不同&#xff1f; 6.…

利用低空無人機影像進行樹種實例分割

在本項先導研究中,我們開發了一個基于低空無人機影像的本地樹種機器學習實例分割模型,用于生態調查。該實例分割包括單株樹冠的描繪和樹種的分類。我們利用無人機影像對20個樹種及其對應的學名進行了訓練,并收集了這些樹種的學名用于機器學習。為了評估該機器學習模型的準確…

二、Flutter基礎

目錄1. 什么是Widget&#xff1f;Flutter中的Widget分為哪幾類&#xff1f;2. StatelessWidget和StatefulWidget的區別3. StatefulWidget生命周期4. 什么是BuildContext&#xff1f;5. 如何優化Widget重建&#xff1f;6. Flutter布局機制7. Row/Column的主軸和交叉軸8. Expande…