機器學習模型度量指標(混淆矩陣、準確率、精確率、召回率、F1分數、ROC曲線、AUC、平均精度均值)

我們研究的是多分類問題,下面所有例子以多分類問題舉例

混淆矩陣(Confusion Matrix)

混淆矩陣( Confusion Matrix )是一個表格,用于可視化機器學習模型在分類問題上
的性能。混淆矩陣的行表示實際類別,列表示預測類別。矩陣中的每個單元格顯示了
實際類別與預測類別組合中的樣本數量。

定義:用于展示多分類模型預測結果與真實標簽的對應關系矩陣,直觀反映各類別的預測正確 / 錯誤情況。
維度:若有?K?個類別,則混淆矩陣為?K×K?矩陣。

1. 矩陣結構解析

以 3 分類問題(類別 A、B、C)為例,混淆矩陣格式如下:

真實\預測ABC
ATP_AFP_A→BFP_A→C
BFP_B→ATP_BFP_B→C
CFP_C→AFP_C→BTP_C
混淆矩陣的組成部分:

TP_i(True Positive_i):類別 i 的正確預測數(對角線元素)。

FP_i→j(False Positive_i→j):真實為 i 類但被誤判為 j 類的樣本數(非對角線元素)。

2. 案例說明

假設預測 100 個樣本(A 類 30 個、B 類 30 個、C 類 40 個),混淆矩陣如下:

真實\預測ABC
A2532
B2244
C3334
?

TP_A=25(A 類正確預測 25 個),FP_A→B=3(A 類誤判為 B 類 3 個),其余同理。

準確率(Accuracy)

準確率 (accuracy) :是指模型預測正確的樣本數比上總樣本數的比重(是針對模型的)


特點:整體模型的預測正確率,但對樣本不均衡問題不敏感(如某類樣本極少時,正確預測該類對準確率貢獻小)。

精確率(Precision)(分母為列求和)

針對每一個類別,預測正確的樣本數比上預測出來的樣本數(預測為某類的樣本中實際正確的比例(在混淆矩陣里,行表示真實類別,列表示預測類別,預測正確的樣本數在對角線上)

召回率(Recall)(分母為行求和)

針對每一個類別,預測正確的樣本數比上實際存在的樣本數(實際為某類的樣本中被正確預測的比例)(在混淆矩陣里,行表示真實類別,列表示預測類別,預測正確的樣本數在對角線上)

精確率和召回率之間的關系

🌟 ?核心比喻?

想象你是一個漁夫在撈魚:

  • ?精確率?:你撈上來的魚里,?有多少是真魚?(而不是垃圾、水草)。
    → ??“撈得準不準”??(避免誤撈)。
  • ?召回率?:整個池塘里所有的魚,?你撈上來多少
    → ??“撈得全不全”??(避免漏撈)。

?兩者矛盾?:

  • 如果你用特別密的網(嚴格),撈上來的基本都是魚(高精確率),但可能漏掉很多魚(低召回率)。
  • 如果你用特別松的網(寬松),能撈到大部分魚(高召回率),但會混進很多垃圾(低精確率)。
??兩者的關系?
  1. ?此消彼長?:

    • 模型越嚴格 → ?精確率高,召回率低?(少犯錯,但會漏東西)。
    • 模型越寬松 → ?召回率高,精確率低?(多抓取,但混進錯誤)。
  2. ?平衡方法?:

    • ?F1分數?:精確率和召回率的“調和平均”(既要準,又要全)。
    • ?業務需求決定?:
      • 醫療診斷:?高召回率?(寧可誤診,不能漏診)。
      • 推薦系統:?高精確率?(寧可少推薦,不能推錯)。

F1 分數(F1-Score)

f1_Score 是精確率( Precision )和召回率( Recall )的調和平均數,用于評估分類模
型的性能。 f1_Score 0 1 之間, 1 表示完美的精確率和召回率, 0 表示兩者都很
差。

多類分類任務評級指標

精度、召回率和 F1 分數等均針對兩類分類任務。針對多類分類任務,一種方式
是將 C 分類的評價拆成 C 個兩類分類的評價,然后綜合多個兩類分類指標以得到
評價多類分類任務的指標。綜合的方式有微觀( Micro )、宏觀( Macro )、加
權( Weighted )、樣本( samples )等。
? 微觀( Micro ):對每個樣本(不分類別)計算全局的指標,每個樣本的權重
相同。多標簽任務中首選,也可用于多類分類。
? 宏觀( Macro ):計算每個類別(二分類)的指標,再求平均,每個類別的權
重相同,會放大少數類(樣本數目較少的類)的影響。
? 加權( Weighted ):計算每個類別的指標,每類的權重與該類樣本數目有
關,可處理不同類別樣本數目不均衡問題。
? 樣本( samples ):計算每個樣本的指標,然后求平均,僅適用于多標簽問

ROC曲線、AUC?

區別于二分類

  1. 一對多(One-vs-Rest, OVR)
  2. 一對一(One-vs-One, OVO)
  3. 微平均(Micro-average)與宏平均(Macro-average)

平均精度均值(mAP,mean Average Precision)

在多分類問題中,平均精度均值(mAP,mean Average Precision)?是一種綜合評估模型性能的重要指標,尤其適用于需要考慮樣本排序和類別相關性的任務(如目標檢測、信息檢索、圖像分類等)。下面從基礎概念、計算流程到多分類場景的擴展進行詳細解析。

核心概念:AP(Average Precision)

AP 是衡量單個類別分類效果的指標,其核心思想是:在所有可能的召回率水平下,計算精確率的平均值,反映模型對該類樣本的 “排序質量”。

2.?AP 的計算流程(以二分類為例,多分類需擴展)

假設模型對某類樣本的預測結果按置信度從高到低排序,依次將每個樣本視為 “正類閾值”,計算對應的精確率和召回率,最終 AP 是這些精確率的加權平均。具體步驟:

  1. 排序預測結果:按置信度從高到低排序所有樣本。
  2. 逐樣本計算 TP/FP
    • 若樣本真實類別為正類,則記為 TP,否則為 FP。
  3. 累積精確率和召回率
    • 前k個樣本的精確率:前k個中的 TP 數 /?k。
    • 前k個樣本的召回率:前k個中的 TP 數 / 總正類樣本數。
  4. 計算 AP
    • 方法 1:全點插值法(現代常用):對每個召回率點r,取所有召回率≥r時的最大精確率,再求這些精確率的平均值(本質是計算精確率 - 召回率曲線下的面積)。
    • 方法 2:11 點插值法(歷史方法):在召回率為 0, 0.1, ..., 1.0 的 11 個點上,取對應最大精確率的平均值。
多分類場景下的 mAP 計算

多分類問題中(如C個類別),mAP 是每個類別 AP 的平均值,核心是將多分類轉化為多個二分類問題處理。

對每個類別c,將其視為 “正類”,其他C?1個類別視為 “負類”,形成C個二分類任務。例如,在三分類問題(類別 A、B、C)中:

  • 計算類別 A 的 AP 時,將 A 視為正類,B 和 C 視為負類;
  • 同理處理類別 B 和 C。

以目標檢測任務(典型多分類場景)為例,假設模型輸出每個檢測框的類別、置信度和坐標,計算 mAP 的步驟如下:

步驟 1:對每個類別單獨處理

以類別c為例:

  1. 收集所有預測框:篩選出預測為類別c的所有檢測框,按置信度從高到低排序。
  2. 確定真實正類樣本:所有真實標簽為類別c的目標。
  3. 計算每個預測框的 TP/FP
    • 對于每個預測框,若與某真實正類目標的 IoU(交并比)≥閾值(如 0.5),且該真實目標未被其他更高置信度的預測框匹配過,則記為 TP;否則為 FP(包括 IoU 不足或重復匹配)。
步驟 2:計算單個類別的 AP

基于步驟 1 的 TP/FP 序列,按 AP 的計算方法(全點插值法)計算類別c的 AP:

  • 例如,假設排序后的預測框依次為p1?,p2?,...,pn?,前k個框中有tk?個 TP,則前k個框的精確率為tk?/k,召回率為tk?/T(T為類別c的總真實目標數)。
  • AP 是所有召回率點對應的最大精確率的平均值(即精確率 - 召回率曲線下的面積)。
步驟 3:計算 mAP

對所有C個類別的 AP 取算術平均值:

三、示例:mAP 計算實例

假設一個三分類問題(類別 A、B、C),每個類別有 2 個真實目標,模型對每個類別輸出 5 個預測框(按置信度排序),如下表所示:

類別 A 的 AP 計算
預測框置信度真實標簽是否為 AIoU≥0.5?TP/FP前 k 個框的 TP 數精確率(前 k 個)召回率(前 k 個)
10.9TP11/1=1.01/2=0.5
20.8-FP11/2=0.51/2=0.5
30.7TP22/3≈0.6672/2=1.0
40.6-FP22/4=0.52/2=1.0
50.5-FP22/5=0.42/2=1.0

  • 計算各召回率點的最大精確率
    • 召回率 = 0.5 時,最大精確率為 1.0(來自 k=1);
    • 召回率 = 1.0 時,最大精確率為 0.667(來自 k=3);
    • 其他召回率點無新值。
  • AP_A?= (1.0 + 0.667) / 2 ≈ 0.833。
類別 B 的 AP 計算
預測框置信度真實標簽是否為 BIoU≥0.5?TP/FP前 k 個框的 TP 數精確率召回率
10.9TP11.00.5
20.8TP21.01.0
30.7-FP20.6671.0
40.6-FP20.51.0
50.5-FP20.41.0

  • 召回率 = 0.5 時,精確率 = 1.0;召回率 = 1.0 時,最大精確率 = 1.0(來自 k=1 和 k=2)。
  • AP_B?= (1.0 + 1.0) / 2 = 1.0。
類別 C 的 AP 計算

假設模型對類別 C 的預測較差,所有預測框均為 FP,則 AP_C=0。

最終 mAP

mAP=30.833+1.0+0?≈0.611

關于ROC曲線、AUC、平均精度均值,后面復習更多再補充

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

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

相關文章

打卡day35

一、模型結構可視化 理解一個深度學習網絡最重要的2點: 了解損失如何定義的,知道損失從何而來----把抽象的任務通過損失函數量化出來了解參數總量,即知道每一層的設計才能退出—層設計決定參數總量 為了了解參數總量,我們需要知…

時序數據庫 TDengine × Superset:一鍵構建你的可視化分析系統

如果你正在用 TDengine 管理時序數據,寫 SQL 查詢沒問題,但一到展示環節就犯難——圖表太基礎,交互不夠,甚至連團隊都看不懂你辛苦分析的數據成果?別擔心,今天要介紹的這個組合,正是為你量身打造…

C# 初學者的 3 種重構模式

(Martin Fowlers Example) 1. 積極使用 Guard Clause(保護語句) "如果條件不滿足,立即返回。將核心邏輯放在最少縮進的地方。" 概念定義 Guard Clause(保護語句) 是一種在函數開頭檢查特定條件是否滿足&a…

基于51單片機和8X8點陣屏、獨立按鍵的滑動躲閃類小游戲

目錄 系列文章目錄前言一、效果展示二、原理分析三、各模塊代碼1、8X8點陣屏2、獨立按鍵3、定時器04、定時器1 四、主函數總結 系列文章目錄 前言 用的是普中A2開發板。 【單片機】STC89C52RC 【頻率】12T11.0592MHz 【外設】8X8點陣屏、獨立按鍵 效果查看/操作演示&#xff…

Java面向對象 一

系列文章目錄 Java面向對象 二-CSDN博客 Java面向對象 三-CSDN博客 目錄 系列文章目錄 前言 一、初步認識面向對象 1.類和對象的簡單理解 2.類的構成 二、類的實例化 1.對象的創建 2.對象的初始化 三、this引用的作用 四、構造方法 1.構造方法的提供 2.對象的構…

深度學習Y8周:yolov8.yaml文件解讀

🍨 本文為🔗365天深度學習訓練營中的學習記錄博客🍖 原作者:K同學啊 本周任務:根據yolov8n、yolov8s模型的結構輸出,手寫出yolov8l的模型輸出、 文件位置:./ultralytics/cfg/models/v8/yolov8.…

【RocketMQ 生產者和消費者】- 生產者啟動源碼 - MQClientInstance 定時任務(4)

文章目錄 1. 前言2. startScheduledTask 啟動定時任務2.1 fetchNameServerAddr 拉取名稱服務地址2.2 updateTopicRouteInfoFromNameServer 更新 topic 路由信息2.2.1 topic 路由信息2.2.2 updateTopicRouteInfoFromNameServer 獲取 topic2.2.3 updateTopicRouteInfoFromNameSer…

解決Docker容器內yum: not found、apt: not found、apk: command not found等命令找不到問題

Linux有很多發行版,各發行版的包管理工具不一定相同。 Alpine的包管理工具是 apk Debian/Ubuntu的包管理工具是 apt Centos/RHEL的包管理工具是 yum 在安裝軟件之前,需要先查看Docker容器內的Linux是什么發行版,可使用 cat /etc/os-rele…

每日c/c++題 備戰藍橋杯(修理牛棚 Barn Repair)

修理牛棚 Barn Repair 題解 問題背景與挑戰 在一個暴風雨交加的夜晚,Farmer John 的牛棚遭受了嚴重的破壞。屋頂被掀飛,大門也不翼而飛。幸運的是,許多牛正在度假,牛棚并未住滿。然而,為了保護那些還在牛棚里的牛&am…

鴻蒙版Flutter庫torch_light手電筒功能深度適配

鴻蒙版Flutter庫torch_light手電筒功能深度適配:跨平臺開發者的光明之路 本項目作者:kirk/堅果 適配倉庫地址 作者倉庫:https://github.com/svprdga/torch_light# 在數字化浪潮的推動下,跨平臺開發框架如 Flutter 憑借其高效、…

【信息系統項目管理師】一文掌握高項常考題型-項目進度類計算

更多內容請見: 備考信息系統項目管理師-專欄介紹和目錄 文章目錄 一、進度類計算的基本概念1.1 前導圖法1.2 箭線圖法1.3 時標網絡圖1.4 確定依賴關系1.5 提前量與滯后量1.6 關鍵路徑法1.7 總浮動時間1.8 自由浮動時間1.9 關鍵鏈法1.10 資源優化技術1.11 進度壓縮二、基本公式…

深入了解linux系統—— 操作系統的路徑緩沖與鏈接機制

前言 在之前學習當中,我們了解了被打開的文件是如何管理的;磁盤,以及ext2文件系統是如何存儲文件的。 那我們要打開一個文件,首先要先找到這個文件,操作系統又是如何去查找的呢? 理解操作系統搜索文件 …

Docker Hub倉庫介紹

Docker Hub倉庫全解析:從公共市場到私有化部署指南 一、Docker Hub公共鏡像市場 1.1 核心功能解析 全球最大容器鏡像庫:累計托管超500萬鏡像核心服務矩陣: #mermaid-svg-CAMkhmtSWKEUw7z0 {font-family:"trebuchet ms",verdana,a…

redis使用RDB文件恢復數據

設置存盤間隔為120秒且10個key改變數據自動存盤使用RDB文件恢復數據 IP地址主機名192.168.10.170redis170 [rootredis170 ~]# yum install -y redis [rootredis170 ~]# systemctl start redis步驟一:設置存盤間隔為120秒且10個key改變自動存盤 [rootredis170 ~]#…

SpringBoot多環境配置文件切換

resources下application.yml、application-dev.yml、application-prod.yml多個配置文件。 spring:profiles:active: devspring:profiles:active: prod一般都是通過修改spring.profiles.active值來修改加載不同環境的配置信息,可以把切換的dev/prod放到pom.xml文件來…

Java 并發編程高級技巧:CyclicBarrier、CountDownLatch 和 Semaphore 的高級應用

Java 并發編程高級技巧:CyclicBarrier、CountDownLatch 和 Semaphore 的高級應用 一、引言 在 Java 并發編程中,CyclicBarrier、CountDownLatch 和 Semaphore 是三個常用且強大的并發工具類。它們在多線程場景下能夠幫助我們實現復雜的線程協調與資源控…

【Java多線程】多線程狀態下如何安全使用ArrayList以及哈希表

🔍 開發者資源導航 🔍🏷? 博客主頁: 個人主頁📚 專欄訂閱: JavaEE全棧專欄 多線程安全使用ArrayList 手動加鎖 日常中最常用的方法,使用synchronized進行加鎖,把代碼打包成一份&a…

InnoDB引擎底層解析(二)之InnoDB的Buffer Pool(三)

Buffer Pool 實例 我們上邊說過,Buffer Pool 本質是 InnoDB 向操作系統申請的一塊連續的內存空間,在多線程環境下,訪問 Buffer Pool 中的各種鏈表都需要加鎖處理,在Buffer Pool特別大而且多線程并發訪問特別高的情況下&#xff0…

Netty學習專欄(三):Netty重要組件詳解(Future、ByteBuf、Bootstrap)

文章目錄 前言一、Future & Promise:異步編程的救星1.1 傳統NIO的問題1.2 Netty的解決方案1.3 代碼示例:鏈式異步操作 二、ByteBuf:重新定義數據緩沖區2.1 傳統NIO ByteBuffer的缺陷2.2 Netty ByteBuf的解決方案2.3 代碼示例:…

Vue3逐步拋棄虛擬Dom,React如何抉擇

虛擬DOM:前端界的替死鬼 這玩意兒就是個前端開發的充氣娃娃! 你以為它很牛逼?無非是給真DOM當替死鬼! 每次數據變,虛擬DOM先擱內存里自嗨一頓,diff算法跟便秘似的算半天,最后才敢碰真DOM。 說白…