机器学习分类指标:精确率、准确率、召回率详解
混淆矩陣
在介紹具體的定義之前先了解一些混淆矩陣(confusion matrix):
一種 NxN 表格,用于總結分類模型的預測效果;即標簽和模型預測的分類之間的關聯。在混淆矩陣中,一個軸表示模型預測的標簽,另一個軸表示實際標簽。N 表示類別個數。在二元分類問題中,N=2。例如,下面顯示了一個二元分類問題的混淆矩陣示例:
| - | 腫瘤(預測的標簽) | 非腫瘤(預測的標簽) |
|---|---|---|
| 腫瘤(實際標簽) | 18 | 1 |
| 非腫瘤(實際標簽) | 6 | 452 |
上面的混淆矩陣顯示,在 19 個實際有腫瘤的樣本中,該模型正確地將 18 個歸類為有腫瘤(18 個正例),錯誤地將 1 個歸類為沒有腫瘤(1 個假負例)。同樣,在 458 個實際沒有腫瘤的樣本中,模型歸類正確的有 452 個(452 個負例),歸類錯誤的有 6 個(6 個假正例)。
多類別分類問題的混淆矩陣有助于確定出錯模式。例如,某個混淆矩陣可以揭示,某個經過訓練以識別手寫數字的模型往往會將 4 錯誤地預測為 9,將 7 錯誤地預測為 1。
- True Positive(真正, TP):將正類預測為正類數.
- True Negative(真負 , TN):將負類預測為負類數.
- False Positive(假正, FP):將負類預測為正類數 → 誤報 (Type I error).
- False Negative(假負 , FN):將正類預測為負類數 → 漏報 (Type II error).
由上,顧名思義可知,假負、假正當然是不是真的,就是和真實情況相反的。真正,真負,就是和真實情況一樣的。
準確率
準確率是一個用于評估分類模型的指標。通俗來說,準確率是指我們的模型預測正確的結果所占的比例。正式點說,準確率的定義如下:
Accuracy=Number?of?correct?predictionsTotal?number?of?predictions\text{Accuracy} = \frac{\text{Number of correct predictions}}{\text{Total number of predictions}}Accuracy=Total?number?of?predictionsNumber?of?correct?predictions?
對于二元分類,也可以根據正類別和負類別按如下方式計算準確率:
Accuracy=TP+TNTP+TN+FP+FN\text{Accuracy} = \frac{TP+TN}{TP+TN+FP+FN}Accuracy=TP+TN+FP+FNTP+TN?
其中,TP = 真正例,TN = 真負例,FP = 假正例,FN = 假負例。
讓我們來試著計算一下以下模型的準確率,該模型將 100 個腫瘤分為惡性 (正類別)或良性(負類別):
Accuracy=TP+TNTP+TN+FP+FN=1+901+90+1+8=0.91\text{Accuracy} = \frac{TP+TN}{TP+TN+FP+FN} = \frac{1+90}{1+90+1+8} = 0.91Accuracy=TP+TN+FP+FNTP+TN?=1+90+1+81+90?=0.91
準確率為 0.91,即 91%(總共 100 個樣本中有 91 個預測正確)。這表示我們的腫瘤分類器在識別惡性腫瘤方面表現得非常出色,對吧?
實際上,只要我們仔細分析一下正類別和負類別,就可以更好地了解我們模型的效果。
在 100 個腫瘤樣本中,91 個為良性(90 個 TN 和 1 個 FP),9 個為惡性(1 個 TP 和 8 個 FN)。
在 91 個良性腫瘤中,該模型將 90 個正確識別為良性。這很好。不過,在 9 個惡性腫瘤中,該模型僅將 1 個正確識別為惡性。這是多么可怕的結果!9 個惡性腫瘤中有 8 個未被診斷出來!
雖然 91% 的準確率可能乍一看還不錯,但如果另一個腫瘤分類器模型總是預測良性,那么這個模型使用我們的樣本進行預測也會實現相同的準確率(100 個中有 91 個預測正確)。換言之,我們的模型與那些沒有預測能力來區分惡性腫瘤和良性腫瘤的模型差不多。
所以當使用分類不平衡的數據集(比如正類別標簽和負類別標簽的數量之間存在明顯差異)時,單單準確率一項并不能反映全面情況。
精確率
精確率指標嘗試回答以下問題:
- 在被識別為正類別的樣本中,確實為正類別的比例是多少?
精確率的定義如下:
Precision=TPTP+FP\text{Precision} = \frac{TP}{TP+FP}Precision=TP+FPTP?
如果模型的預測結果中沒有假正例,則模型的精確率為 1.0。
計算上一部分的用于分析腫瘤的機器學習模型的精確率:
| 真正例 (TP):1 | 假正例 (FP):1 |
|---|---|
| 假負例 (FN):8 | 真負例 (TN):90 |
精確率=TPTP+FP=11+1=0.5\text{精確率} = \frac{TP}{TP+FP} = \frac{1}{1+1} = 0.5精確率=TP+FPTP?=1+11?=0.5
該模型的精確率為 0.5,也就是說,該模型在預測惡性腫瘤方面的正確率是 50%。
召回率
召回率嘗試回答以下問題:
- 在所有正類別樣本中,被正確識別為正類別的比例是多少?
從數學上講,召回率的定義如下:
召回率=TPTP+FN\text{召回率} = \frac{TP}{TP+FN}召回率=TP+FNTP?
注意:如果模型的預測結果中沒有假負例,則模型的召回率為 1.0。
讓我們來計算一下腫瘤分類器的召回率:
| 真正例 (TP):1 | 假正例 (FP):1 |
|---|---|
| 假負例 (FN):8 | 真負例 (TN):90 |
召回率=TPTP+FN=11+8=0.11\text{召回率} = \frac{TP}{TP+FN} = \frac{1}{1+8} = 0.11召回率=TP+FNTP?=1+81?=0.11
該模型的召回率是 0.11,也就是說,該模型能夠正確識別出所有惡性腫瘤的百分比是 11%。
看一張形象的圖
精確率和召回率之間的博弈
要全面評估模型的有效性,必須同時檢查精確率和召回率。遺憾的是,精確率和召回率往往是此消彼長的情況。也就是說,提高精確率通常會降低召回率值,反之亦然。請觀察下圖來了解這一概念,該圖顯示了電子郵件分類模型做出的 30 項預測。分類閾值右側的被歸類為“垃圾郵件”,左側的則被歸類為“非垃圾郵件”。
圖 1. 將電子郵件歸類為垃圾郵件或非垃圾郵件。
我們根據圖 1 所示的結果來計算精確率和召回率值:
| 真正例 (TP):8 | 假正例 (FP):2 |
|---|---|
| 假負例 (FN):3 | 真負例 (TN):17 |
精確率指的是被標記為垃圾郵件的電子郵件中正確分類的電子郵件所占的百分比,即圖 1 中閾值線右側的綠點所占的百分比:
Precision=TPTP+FP=88+2=0.8\text{Precision} = \frac{TP}{TP + FP} = \frac{8}{8+2} = 0.8Precision=TP+FPTP?=8+28?=0.8
召回率指的是實際垃圾郵件中正確分類的電子郵件所占的百分比,即圖 1 中閾值線右側的綠點所占的百分比:
Recall=TPTP+FN=88+3=0.73\text{Recall} = \frac{TP}{TP + FN} = \frac{8}{8 + 3} = 0.73Recall=TP+FNTP?=8+38?=0.73
圖 2 顯示了提高分類閾值產生的效果。
假正例數量會減少,但假負例數量會相應地增加。結果,精確率有所提高,而召回率則有所降低:
| 真正例 (TP):7 | 假正例 (FP):1 |
|---|---|
| 假負例 (FN):4 | 真負例 (TN):18 |
Precision=TPTP+FP=77+1=0.88\text{Precision} = \frac{TP}{TP + FP} = \frac{7}{7+1} = 0.88Precision=TP+FPTP?=7+17?=0.88
Recall=TPTP+FN=77+4=0.64\text{Recall} = \frac{TP}{TP + FN} = \frac{7}{7 + 4} = 0.64Recall=TP+FNTP?=7+47?=0.64
圖 3 顯示了降低分類閾值(從圖 1 中的初始位置開始)產生的效果。
假正例數量會增加,而假負例數量會減少。結果這一次,精確率有所降低,而召回率則有所提高:
| 真正例 (TP):9 | 假正例 (FP):3 |
|---|---|
| 假負例 (FN):2 | 真負例 (TN):16 |
Precision=TPTP+FP=99+3=0.75\text{Precision} = \frac{TP}{TP + FP} = \frac{9}{9+3} = 0.75Precision=TP+FPTP?=9+39?=0.75
Recall=TPTP+FN=99+2=0.82\text{Recall} = \frac{TP}{TP + FN} = \frac{9}{9 + 2} = 0.82Recall=TP+FNTP?=9+29?=0.82
我們已根據精確率和召回率指標制定了各種指標
參考鏈接
google 機器學習實戰
機器學習性能評估指標
總結
以上是生活随笔為你收集整理的机器学习分类指标:精确率、准确率、召回率详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据库常见知识总结
- 下一篇: SQL与NoSQL的区别 以MySQL与