【NLP】10. 機器學習模型性能評估指標(含多類別情況), ROC,PRC

機器學習模型性能評估指標(含多類別情況)

1. 模型評估指標簡介

在機器學習中,模型的性能評估非常重要。常用的模型評估指標有:

  • 準確率(Accuracy)
  • 精度(Precision)
  • 召回率(Recall)
  • F-Score
  • Micro Average 和 Macro Average

這些指標能夠幫助我們了解模型在預測中的表現,尤其是在不同類別不平衡的情況下,選擇適合的評估標準非常重要。

2. 常用的評估指標

2.1 準確率(Accuracy)

準確率是正確預測的樣本占所有樣本的比例,計算公式為:
Accuracy = T P + T N T P + T N + F P + F N \text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN} Accuracy=TP+TN+FP+FNTP+TN?
其中:

  • TP:真正例(True Positive)
  • TN:真反例(True Negative)
  • FP:假正例(False Positive)
  • FN:假反例(False Negative)

準確率適用于類別分布比較均衡的情況,但在類別不平衡的情況下,可能會導致誤導。

2.2 精度(Precision)

精度表示預測為正類的樣本中,實際為正類的比例,計算公式為:
Precision = T P T P + F P \text{Precision} = \frac{TP}{TP + FP} Precision=TP+FPTP?
精度可以幫助我們了解預測為正的樣本有多少是準確的。

2.3 召回率(Recall)

召回率表示實際為正類的樣本中,被正確預測為正類的比例,計算公式為:
Recall = T P T P + F N \text{Recall} = \frac{TP}{TP + FN} Recall=TP+FNTP?
召回率能夠告訴我們有多少正類被模型捕獲。

2.4 F-Score

F-Score 是精度和召回率的調和平均值,計算公式為:

F ? S c o r e = 2 × Precision × Recall Precision + Recall F-Score = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}} F?Score=2×Precision+RecallPrecision×Recall?
F-Score 綜合了精度和召回率,是常用的評估指標,尤其在不平衡分類問題中尤為重要。


3. 多類別評估

當我們面臨多類別問題時,計算方式稍微復雜一些。常用的評估方式包括 Micro AverageMacro Average

3.1 多類別混淆矩陣

在多類別分類問題中,混淆矩陣會擴展為一個矩陣,其中每一行表示真實類別,每一列表示預測類別。舉個例子,如果有四個類別(0, 1, 2, 3),混淆矩陣如下所示:

類別預測為 0預測為 1預測為 2預測為 3
實際為 050532
實際為 1154023
實際為 284605
實際為 334530

我們可以從這個混淆矩陣中計算出每個類別的 TP, FP, FN, TN

3.2 每個類別的指標

例如,類別 0 的 TP, FP, FN, TN 計算如下:

  • TP: 50(實際為 0 且預測為 0)
  • FP: 15 + 8 + 3 = 26(實際不是 0,但預測為 0)
  • FN: 5 + 3 + 2 = 10(實際為 0,但預測為其他類別)
  • TN: 所有其他未預測為 0 的項:40 + 60 + 30 + 3 + 4 + 5 = 142

類似地,我們可以計算其他類別的指標。

3.3 Precision, Recall 和 F-Score 的計算

接下來,我們根據每個類別的 TP, FP, FN 來計算 Precision, RecallF-Score

類別TPFPFNPrecisionRecallF-Score
05026100.6570.8330.740
14017200.7010.6670.684
26012140.8330.8110.822
33012100.7140.7500.731
3.4 Micro Average 和 Macro Average
  • Micro Average:先匯總所有類別的 TP, FP, FN,然后計算 Precision, RecallF-Score
  • Macro Average:對每個類別的 Precision, RecallF-Score 進行平均。

Micro AverageMacro Average 的計算可以幫助我們從整體和類別均值兩個角度評估模型。

Micro Average
  • Micro TP = 50+40+60+30=180
  • Micro FP = 26+17+12+12=67
  • Micro FN = 10+20+14+10=54

Micro Precision =
180 180 + 67 = 0.729 \frac{180}{180 + 67} = 0.729 180+67180?=0.729
Micro Recall =
180 180 + 54 = 0.769 \frac{180}{180 + 54} = 0.769 180+54180?=0.769
Micro F-Score =
2 × 0.729 × 0.769 0.729 + 0.769 = 0.748 2 \times \frac{0.729 \times 0.769}{0.729 + 0.769} = 0.748 2×0.729+0.7690.729×0.769?=0.748

Macro Average

Macro Precision =
0.657 + 0.701 + 0.833 + 0.714 4 = 0.751 \frac{0.657 + 0.701 + 0.833 + 0.714}{4} = 0.751 40.657+0.701+0.833+0.714?=0.751

Macro Recall =
0.833 + 0.667 + 0.811 + 0.750 4 = 0.765 \frac{0.833 + 0.667 + 0.811 + 0.750}{4} = 0.765 40.833+0.667+0.811+0.750?=0.765

Macro F-Score =
0.740 + 0.684 + 0.822 + 0.731 4 = 0.744 \frac{0.740 + 0.684 + 0.822 + 0.731}{4} = 0.744 40.740+0.684+0.822+0.731?=0.744


4. 總結

指標類別 0類別 1類別 2類別 3Micro AverageMacro Average
Precision0.6570.7010.8330.7140.7290.751
Recall0.8330.6670.8110.7500.7690.765
F-Score0.7400.6840.8220.7310.7480.744
  • 準確率(Accuracy):適用于類別分布較為平衡的情況。
  • 精度(Precision):反映了模型對正類預測的準確性。
  • 召回率(Recall):反映了模型捕獲到正類的能力。
  • F-Score:綜合了精度和召回率,是綜合性評估指標。
  • Micro Average:考慮每個樣本的貢獻,適合不平衡數據集。
  • Macro Average:對各類別的表現取平均,適合類別均衡時的綜合評估。

5. 應用場景

這些評估指標廣泛應用于分類問題,尤其是當數據類別不平衡時,F-ScoreMacro Average 常常比 Accuracy 更具參考價值。

6. 任務相關性對評估指標選擇的影響

不同任務對 False Positive (FP)False Negative (FN) 的容忍度不同,因此在選擇評估指標時,必須考慮任務的目標和后果。

6.1 垃圾郵件檢測(Spam Detection)

在垃圾郵件檢測任務中:

  • False Positive (FP):將一個真實郵件誤判為垃圾郵件。這個錯誤的影響比較大,因為用戶可能會錯過重要的郵件。
  • False Negative (FN):將垃圾郵件誤判為正常郵件。這個錯誤影響較小,用戶可以手動刪除多余的垃圾郵件。

模型評估建議

  • 對于垃圾郵件檢測任務,False Positives (FP) 更為嚴重,因為用戶寧愿刪除一些額外的垃圾郵件,也不希望錯過重要郵件。
  • 因此,在這種情況下,我們應該更加關注 Precision,即我們預測為正的郵件中,有多少是真正的垃圾郵件。
6.2 法院文件提交(Providing Document in Court)

在法庭文件提交任務中:

  • False Positive (FP):錯誤地提交了不相關的文件。這個錯誤的后果較小,可能僅會導致一些額外的工作。
  • False Negative (FN):漏掉了需要提交的重要文件。這個錯誤的后果非常嚴重,可能會導致案件失敗或法律后果。

模型評估建議

  • 對于這種任務,False Negatives (FN) 更為嚴重,因為漏掉重要文件可能會對案件產生災難性的后果。
  • 因此,我們應該更加關注 Recall,即模型能識別出多少真實需要提交的文件。
6.3 任務翻轉的影響

如果任務發生翻轉,評估指標的優先級也可能發生變化。例如:

  • 如果將“垃圾郵件檢測”任務翻轉為“相關郵件檢測”任務,目標是找出所有與用戶相關的重要郵件,而不僅僅是過濾垃圾郵件,那么 Recall 變得更加重要。
  • 在這種情況下,漏掉一個重要郵件(False Negative)可能比誤將一些不重要郵件標記為重要(False Positive)更加嚴重。

7. ROC 曲線與 Precision-Recall 曲線

7.1 什么是 ROC 曲線?

7.1.1 ROC 曲線的定義

ROC(Receiver Operating Characteristic)曲線用于評估分類模型在不同閾值下的表現。它描繪了模型的 True Positive Rate (TPR)False Positive Rate (FPR) 之間的關系。

  • TPR(True Positive Rate),即 Recall:表示模型在所有實際為正類的樣本中預測正確的比例。
  • FPR(False Positive Rate):表示模型在所有實際為負類的樣本中錯誤預測為正類的比例,計算公式為:

F P R = F P F P + T N FPR = \frac{FP}{FP + TN} FPR=FP+TNFP?

7.1.2 ROC 曲線的含義

  • TPR(True Positive Rate) 對應的是 Recall
  • FPR(False Positive Rate) 對應的是 1 - Specificity,其中 Specificity 是指模型在所有實際為負類的樣本中預測正確的比例。

通過繪制不同閾值下的 TPRFPR,我們可以得到 ROC 曲線。ROC 曲線的理想情況是 TPR 為 1,FPR 為 0,這意味著模型的分類能力完美。

7.1.3 AUC(Area Under Curve)

AUC 是 ROC 曲線下的面積,值越接近 1,表示模型越好。AUC 值為 0.5 表示模型沒有任何區分能力,相當于隨機猜測。


7.2 什么是 Precision-Recall 曲線?

ROC 曲線類似,Precision-Recall 曲線也是評估模型性能的一種方法,但其更加關注正類樣本的表現。當數據集是高度不平衡時,Precision-Recall 曲線往往比 ROC 曲線更能準確反映模型的性能。

7.2.1 Precision-Recall 曲線的定義

  • Precision-Recall 曲線 描繪了 PrecisionRecall 在不同閾值下的變化。我們通過調整分類閾值來計算不同閾值下的 PrecisionRecall,然后繪制出曲線。

7.2.2 Precision-Recall 曲線的作用

  • Precision-Recall 曲線 可以幫助我們理解模型在正類樣本的分類表現,尤其是當正類樣本數量較少時。
  • 如果 PrecisionRecall 都較高,則說明模型在正類預測時既準確又完整。

7.3 如何計算 Precision 和 Recall 并繪制 Precision-Recall 曲線

7.3.1 準備數據

假設我們有以下數據集,包含了每個樣本的真實標簽和模型輸出的預測概率:

樣本編號真實標簽 (y_true)模型預測概率 (y_scores)
110.9
200.7
310.8
400.4
510.85

7.3.2 選擇不同閾值并計算 Precision 和 Recall

根據預測概率排序:

樣本編號真實標簽 (y_true)模型預測概率 (y_scores)
110.9
310.8
510.85
200.7
400.4

選擇閾值:0.9, 0.8, 0.7, 0.5,分別計算 Precision 和 Recall。

閾值 = 0.9
  • 預測為正類的樣本:樣本 1
  • TP = 1, FP = 0, FN = 2, TN = 2
  • Precision = 1, Recall = 0.33
閾值 = 0.8
  • 預測為正類的樣本:樣本 1, 3, 5
  • TP = 3, FP = 1, FN = 0, TN = 1
  • Precision = 0.75, Recall = 1
閾值 = 0.7
  • 預測為正類的樣本:樣本 1, 2, 3, 5
  • TP = 3, FP = 1, FN = 0, TN = 1
  • Precision = 0.75, Recall = 1
閾值 = 0.5
  • 預測為正類的樣本:樣本 1, 2, 3, 4, 5
  • TP = 3, FP = 2, FN = 0, TN = 0
  • Precision = 0.6, Recall = 1

7.3.3 繪制 Precision-Recall 曲線

通過計算不同閾值下的 PrecisionRecall,我們可以繪制 Precision-Recall 曲線。以下是不同閾值下的 PrecisionRecall 的數據:

閾值PrecisionRecall
0.910.33
0.80.751
0.70.751
0.50.61

使用 matplotlib 繪制 Precision-Recall 曲線:

import matplotlib.pyplot as plt# Precision 和 Recall 的值
precision = [1, 0.75, 0.75, 0.6]
recall = [0.33, 1, 1, 1]
thresholds = [0.9, 0.8, 0.7, 0.5]# 繪制 Precision-Recall 曲線
plt.plot(recall, precision, marker='o', color='b')
plt.xlabel('Recall')
plt.ylabel('Precision')
plt.title('Precision-Recall Curve')
plt.grid(True)
plt.show()

7.4 總結

7.4.1 ROC 曲線與 AUC

  • ROC 曲線 提供了模型的 TPRFPR 之間的關系,通過不同閾值下的分類性能展示模型的表現。
  • AUC(Area Under Curve)表示 ROC 曲線下的面積,AUC 值越高,模型的性能越好。

7.4.2 Precision-Recall 曲線(PRC)

  • Precision-Recall 曲線 聚焦于正類的分類表現,尤其在數據集不平衡時,提供了對模型性能的更好評估。
  • 精度(Precision)和召回率(Recall)是關鍵的評估指標,二者可以通過調整閾值來平衡。

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

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

相關文章

開源通義萬相本地部署方案,文生視頻、圖生視頻、視頻生成大模型,支持消費級顯卡!

開源通義萬相本地部署方案,文生視頻、圖生視頻、視頻生成大模型,支持消費級顯卡! 萬相2.1開源 近日,大模型萬相2.1(Wan)重磅開源,此次開源采用Apache2.0協議,14B和1.3B兩個參數規格…

機器學習與深度學習中模型訓練時常用的四種正則化技術L1,L2,L21,ElasticNet

L1正則化和L2正則化是機器學習中常用的兩種正則化方法,用于防止模型過擬合。它們的區別主要體現在數學形式、作用機制和應用效果上。以下是詳細對比: 1. 數學定義 L1正則化(也叫Lasso正則化): 在損失函數中加入權重參…

qt+opengl 播放yuv視頻

一、實現效果 二、pro文件 Qt widgets opengl 三、主要代碼 #include "glwidget.h"GLWidget::GLWidget(QWidget *parent) : QOpenGLWidget(parent) {connect(&m_timer, &QTimer::timeout, this,[&](){this->update();});m_timer.start(1000/33); }v…

Android開源庫——RxJava和RxAndroid

RxJava和RxAndroid是什么? RxJava是基于JVM的響應式擴展,用于編寫異步代碼 RxAndroid是關于Android的RxJava綁定 RxJava和RxAndroid使用 依賴 implementation io.reactivex.rxjava3:rxjava:3.1.0 implementation io.reactivex.rxjava3:rxandroid:3.…

并發基礎—三大問題:可見性、原子性、有序性

文章目錄 可見性原子性有序性(指令重排)經典的指令重排案例:單例模式的雙重檢查鎖volatile和synchronize都可以保證有序性并發壓測工具Jcstress證明指令重排會在多線程下出現問題(了解)CPU緩存分為三個級別&#xff1a…

PyTorch 入門學習

目錄 PyTorch 定義 核心作用 應用場景 Pytorch 基本語法 1. 張量的創建 2. 張量的類型轉換 3. 張量數值計算 4. 張量運算函數 5. 張量索引操作 6. 張量形狀操作 7. 張量拼接操作 8. 自動微分模塊 9. 案例-線性回歸案例 PyTorch 定義 PyTorch 是一個基于 Python 深…

Hive SQL 精進系列:REGEXP_REPLACE 函數的用法

目錄 一、引言二、REGEXP_REPLACE 函數基礎2.1 基本語法參數詳解2.2 簡單示例 三、REGEXP_REPLACE 函數的應用場景3.1 去除特殊字符3.2 統一字符串格式 四、REGEXP_REPLACE 與 REPLACE 函數的對比4.1 功能差異4.2 適用場景 五、REGEXP_REPLACE 與 REGEXP 函數的對比5.1 功能差異…

從0開始搭建微服務架構特別篇SpringCloud網關聚合knife4j

前言:總所周知項目開發接口測試需要knife4j,但是,微服務架構中微服務很多,模塊地址很多,需要統一管理api測試,就需要聚合在網關統一調用,本章,就說明如何通過網關聚合使用knife4j。 …

Spring Cloud 中的服務注冊與發現: Eureka詳解

1. 背景 1.1 問題描述 我們如果通過 RestTamplate 進行遠程調用時,URL 是寫死的,例如: String url "http://127.0.0.1:9090/product/" orderInfo.getProductId(); 當機器更換或者新增機器時,這個 URL 就需要相應地變…

網頁制作15-Javascipt時間特效の記錄網頁停留時間

01效果圖: 02運用: window.setTimeout()刷新function()函數document.forms():表單if條件語句window.alert()窗口警示 03、操作代碼:…

【Rust基礎】排序和分組

排序 簡單排序 整數排序 #[test] fn test_sort(){let mut list vec![1, 5, 3, 2, 4];list.sort(); //?assert_eq!(list, vec![1, 2, 3, 4, 5]); }小數排序 #[test] fn test_sort(){let mut list vec![1, 5, 3, 2, 4];//? 不能直接使用sort,因為f32和f64未實現O…

C++ std::list超詳細指南:基礎實踐(手搓list)

目錄 一.核心特性 1.雙向循環鏈表結構 2.頭文件:#include 3.時間復雜度 4.內存特性 二.構造函數 三.list iterator的使用 1.學習list iterator之前我們要知道iterator的區分 ?編輯 2.begin()end() 3.rbegin()rend() 四.list關鍵接口 1.empty() 2. size…

996引擎 - 紅點系統

996引擎 - 紅點系統 總結NPC 紅點(TXT紅點)Lua 紅點1. Red_Point.lua2. UI_Ex.lua參考資料以下內容是在三端 lua 環境下測試的 總結 紅點系統分幾個部分組成。 M2中設置變量推送。 配置紅點表。 Envir\Data\cfg_redpoint.xls 2.1. UI元素中找到ID填寫 ids 列。 主界面掛載…

C語言——變量與常量

C語言中的變量與常量:簡潔易懂的指南 在C語言編程中,變量和常量是最基本的概念之一。理解它們的區別和使用方法對于編寫高效、可維護的代碼至關重要。本文將詳細介紹C語言中的變量和常量,并通過圖表和代碼示例幫助你更好地理解。 目錄 什么…

PySide(PyQt),使用types.MethodType動態定義事件

以PySide(PyQt)的圖片項為例,比如一個視窗的場景底圖是一個QGraphicsPixmapItem,需要修改它的鼠標滾輪事件,以實現鼠標滾輪縮放顯示的功能。為了達到這個目的,可以重新定義一個QGraphicsPixmapItem類,并重寫它的wheelE…

K8S學習之基礎三十一:k8s中RBAC 的核心概念

Kubernetes (k8s) 中的 RBAC(Role-Based Access Control,基于角色的訪問控制)是一種用于管理用戶和服務賬戶對集群資源訪問權限的機制。RBAC 允許管理員通過定義角色(Role)和角色綁定(RoleBinding&#xff…

【eNSP實戰】三層交換機使用ACL實現網絡安全

拓圖 要求: vlan1可以訪問Internetvlan2和vlan3不能訪問Internet和vlan1vlan2和vlan3之間可以互相訪問PC配置如圖所示,這里不展示 LSW1接口vlan配置 vlan batch 10 20 30 # interface Vlanif1ip address 192.168.40.2 255.255.255.0 # interface Vla…

軟考系統架構師 — 1 考點分析

目錄 1 考點總結 1 考點總結 章節 內容 真題考察 緒論 1. 緒論 不考 計算機相關知識 2. 計算機系統基礎知識,新增計算機硬件、嵌入式、計算機語言、系統工程 對應計算機組成結構、操作系統、數據庫、計算機網絡、多媒體等知識點,整體分值在 10 …

在Eclipse 中使用 MyBatis 進行開發,通常需要以下步驟:

在Eclipse 中使用 MyBatis 進行開發,通常需要以下步驟: 1. 創建 Maven 項目 首先,在 Eclipse 中創建一個 Maven 項目。如果你還沒有安裝 Maven 插件,可以通過 Eclipse Marketplace 安裝 Maven 插件。 打開 Eclipse,選…

錯誤記錄: git 無法連接到github

錯誤記錄: git 無法連接到github 今天, 新建了一個github倉庫, 但從本地怎么都push不上去.并報錯 gitgithub.com: Permission denied (publickey). fatal: Could not read from remote repository.Please make sure you have the correct access rights and the repository e…