一文详尽混淆矩阵、准确率、精确率、召回率、F1值、P-R 曲线、ROC 曲线、AUC 值、Micro-F1 和 Macro-F1
文章目錄
- 二分類的評價指標
- 一、混淆矩陣與 TP、TN、FP、FN
- 二、準確率、精確率、召回率、F1值
- 三、P-R 曲線
- 四、ROC 曲線、AUC 值
- 五、P-R曲線和ROC曲線有什么區別,如何選擇?
- 多分類的評價指標
- References
二分類的評價指標
對于二分類問題,機器預測的和實際的還是會有所偏差,所以我們引入以下幾個概念來評價分類器的優良。
一、混淆矩陣與 TP、TN、FP、FN
混淆矩陣
| ? | ? | 預測的類 | ? | |
| ? | ? | 正類 | 負類 | 合計 |
| 實際的類 | 正樣本 | TP | FN | P |
| 負樣本 | FP | TN | N | |
| ? | 合計 | P’ | N’ | P+N |
T,True;F,False;P,Positive;N,Negative
TP:真陽,將正樣本判斷為正類。注:陽,意動用法,認為…是陽性。真陽,即判斷樣本為陽性是正確的。
TN:真陰,將負樣本判斷為負類。
FP:假陽,將負樣本判斷為正類。
FN:假陰,將正樣本判斷為負類。
P:正樣本個數 = TP + FN
N:負樣本個數
P’:被分類器分為正元組的樣本數。
N’:被分類器分為負元組的樣本數。
S:總預測樣本個數 = P + N = P‘ + N’
二、準確率、精確率、召回率、F1值
首先介紹三個指標。
A c c u r a c y = T P + T N S Accuracy = \frac{TP+TN}{S} Accuracy=STP+TN?
P r e c i s i o n = T P P ′ Precision = \frac{TP}{P'} Precision=P′TP?
R e c a l l = T P P Recall = \frac{TP}{P} Recall=PTP?
深入理解:召回率與精確率用于衡量分類器的漏報(棄真)和虛警(取偽)比例。精確率越低,則虛警的可能性越大。一般在生活中,棄真的后果比取偽嚴重得多,例如醫生診斷病人是否患有肺炎(COVID-19),取偽,也就是虛驚一場,棄真這可就嚴重了。也就是說,要盡量降低棄真的可能,也就是提高召回率。換而言之,一般情況下,召回率比精確率重要。但只是一般情況,召回率、精確率哪個更重要還是取決于具體應用場景。
查準率(精確率)可以認為是”寧缺毋濫”,適合對準確率要求高的應用,例如商品推薦,網頁檢索等。查全率(召回率)可以認為是”寧錯殺一百,不放過1個”,適合類似于檢查走私、逃犯信息等。
人們通常使用準確率和召回率這兩個指標,來評價二分類模型的分析效果。
但是當這兩個指標發生沖突時,如何權衡?例如以下,A、B 兩個模型哪個的綜合性能更優?
| A 模型 | 80% | 90% |
| B 模型 | 90% | 80% |
為了解決這個問題,人們提出了 F β F_\beta Fβ? 分數。
F β F_\beta Fβ? 的物理意義就是將準確率和召回率這兩個分值合并為一個分值,在合并的過程中,召回率的權重是準確率的 β \beta β倍。即 W R = β ? W P W_R = \beta\cdot W_P WR?=β?WP? . 則
F β = ( 1 + β 2 ) ? precision? ? recall ( β 2 ? precision? ) + recall F_{\beta}=\left(1+\beta^{2}\right) \cdot \frac{\text { precision } \cdot \text {recall}}{\left(\beta^{2} \cdot \text { precision }\right)+\text {recall}} Fβ?=(1+β2)?(β2??precision?)+recall?precision??recall?
F 1 F_1 F1? 分數( F 1 S c o r e F_1\ Score F1??Score )認為召回率和準確率同等重要, F 2 F_2 F2? 分數認為召回率的重要程度是準確率的2倍,而 F 0.5 F_{0.5} F0.5? 分數認為召回率的重要程度是準確率的一半。
當 β = 1 \beta=1 β=1 時,
F 1 = precision? ? recall 0.5 ? ( precision? + recall) F_{1}= \frac{\text { precision } \cdot \text {recall}}{ 0.5 \cdot(\text { precision }+\text {recall)}} F1?=0.5?(?precision?+recall)?precision??recall?
2 F 1 = 1 P r e c i s i o n + 1 R e c a l l \frac{2}{F_1}=\frac{1}{Precision}+\frac{1}{Recall} F1?2?=Precision1?+Recall1?
F1 值是P、R的調和平均數,為算數平均數除以幾何平均數,且越大越好。
三、P-R 曲線
如果有個劃分點可以把正負樣本完全區分開,那么P-R曲線就是整個1*1的面積。此時的二分類模型是最完美的。
總之,P-R曲線應該是從(0,0)開始畫的一條曲線,切割1*1的正方形,得到一塊區域。
在進行比較時,若一個學習器A的P-R曲線被另一個學習器B的P-R曲線完全“包住”,則B的性能優于A。但是兩個學習器的P-R曲線往往會發生交叉。這時候如何根據P-R曲線比較兩個學習器的性能?(其實就是 Precision 和 Recall 率的權衡)
1、平衡點(BEP):我們認為平衡點越靠近(1,1)則性能越好。
2、 F 1 F_1 F1? 度量
3、 F β F_β Fβ? 度量
不再贅述。
四、ROC 曲線、AUC 值
首先引入兩個指標,靈敏度和 1-特異度。
靈敏度(True Positive Rate,TPR)其實就是召回率,公式如下
TPR? = T P T P + F N {\text { TPR }=\frac{T P}{T P+F N}} \\ ?TPR?=TP+FNTP?
1-特異度(False Positive Rate,FPR)是錯判負樣本為正類占所有負樣本的比例,公式如下:
FPR = F P F P + T N {\text {FPR}=\frac{F P}{F P+T N}} FPR=FP+TNFP?
以 TPR 為縱軸,以 FPR 為橫軸,畫出 ROC 曲線,ROC 曲線下的面積就是 AUC(Area under Curve)。從 FPR 和 TPR 的定義可以理解,TPR 越高,FPR 越小,我們的模型的性能也就越好。也就是說,ROC 曲線越靠近左上角 (1, 1) 模型越好。
AUC 是一個模型評價指標,用于二分類模型的評價。
為什么要用AUC作為二分類模型的評價指標呢?為什么不直接通過計算準確率來對模型進行評價呢?答案是這樣的:機器學習中的很多模型對于分類問題的預測結果大多是概率,即屬于某個類別的概率,如果計算準確率的話,就要把概率轉化為類別,這就需要設定一個閾值,概率大于某個閾值的屬于一類,概率小于某個閾值的屬于另一類,而**閾值的設定直接影響了準確率的計算。**見下圖(b)
AUC值。AUC (Area Under Curve) 被定義為ROC曲線下的面積。
顯然這個面積的數值不會大于1。又由于ROC曲線一般都處于y=x這條直線的上方,所以AUC的取值范圍一般在0.5和1之間。
使用AUC值作為評價標準是因為很多時候ROC曲線并不能清晰的說明哪個分類器的效果更好,而作為一個數值,對應AUC更大的分類器效果更好。
從AUC判斷分類器(預測模型)優劣的標準:
AUC = 1,是完美分類器,采用這個預測模型時,存在至少一個閾值能得出完美預測。絕大多數預測的場合,不存在完美分類器。
0.5 < AUC < 1,優于隨機猜測。這個分類器(模型)妥善設定閾值的話,能有預測價值。
AUC = 0.5,跟隨機猜測一樣(例:丟銅板),模型沒有預測價值。
AUC < 0.5,比隨機猜測還差;但只要總是反預測而行,就優于隨機猜測。
一句話來說,AUC值越大的分類器,正確率越高。
五、P-R曲線和ROC曲線有什么區別,如何選擇?
圖 a) 和 b) 是原始樣本的 ROC曲線和 PR曲線,
圖 c) 和 d) 則是將負樣本增加10倍后的 ROC曲線和 PR曲線。
1)從 a 和 c 可以看出,負樣本增加10倍后,ROC曲線變化不大。分析一下為什么變化不大,其Y軸是TPR,x軸是FPR,當固定一個threshold來計算TPR和FPR的時候,雖然負樣本增加了10倍,也就是FPR的分母雖然變大了,但是正常概率來講,這個時候超過threshold的負樣本量也會隨之增加,也就是分子也會隨之增加,所以總體FPR變化不大,從這個角度來看的話正負樣本稍微不均衡的話,對KS影響也不大,因為KS=max(TPR-FPR),這個前提是正負樣本的量都比較大的情況下,因為只有樣本量比較大的情況下,根據大數定律,計算出來的頻率才非常接近于真實的概率值,有資料顯示正負樣本都超過6000的量,計算的頻率就比較接近概率。所以在樣本量都不是很大的情況下,如果樣本還極端不均衡的話,就會有一些影響。由此可見,ROC曲線能夠盡量降低不同測試集帶來的干擾,更加客觀地衡量模型本身的性能。
2)從 b 和 d 圖可以看出,負樣本增加10倍后,PR 曲線變化比較大。也分析一下為什們變化大,其 Y 軸是precision,x 軸是 recall,當負樣本增加10倍后,在 racall 不變的情況下,必然召回了更多的負樣本,所以精確度會大幅下降,b和d圖示也非常明顯的反映了這一狀況,所以PR曲線變化很大,所以PR曲線對正負樣本分布比較敏感。
如何選擇呢?
-
在很多實際問題中,正負樣本數量往往很不均衡。比如,計算廣告領域經常涉及轉化率模型,正樣本的數量往往是負樣本數量的1/1000,甚至1/10000。若選擇不同的測試集,P-R曲線的變化就會非常大,而ROC曲線則能夠更加穩定地反映模型本身的好壞。所以,ROC曲線的適用場景更多,被廣泛用于排序、推薦、廣告等領域。
-
但需要注意的是,選擇P-R曲線還是ROC曲線是因實際問題而異的,如果研究者希望更多地看到模型在特定數據集上的表現,P-R曲線則能夠更直觀地反映其性能。
-
PR曲線比ROC曲線更加關注正樣本,而ROC則兼顧了兩者。
-
AUC越大,反映出正樣本的預測結果更加靠前。(推薦的樣本更能符合用戶的喜好)
-
當正負樣本比例失調時,比如正樣本1個,負樣本100個,則ROC曲線變化不大,此時用PR曲線更加能反映出分類器性能的好壞。這個時候指的是兩個分類器,因為只有一個正樣本,所以在畫auc的時候變化可能不太大;但是在畫PR曲線的時候,因為要召回這一個正樣本,看哪個分類器同時召回了更少的負樣本,差的分類器就會召回更多的負樣本,這樣precision必然大幅下降,這樣分類器性能對比就出來了。
多分類的評價指標
其實多分類的評價指標的計算方式與二分類完全一樣,只不過我們計算的是針對于每一類來說的召回率、精確度、準確率和 F1分數。
對于某一個確定的類別來講,P 其實就是實際屬于這一類中的樣本,N 其實就是實際屬于其他類的所有樣本,P’ 其實就是被分類器分類這一類的所有樣本,N’ 就是被分類器分類為其他類的所有樣本數。
Micro-F1 和 Macro-F1
最后看Micro-F1和Macro-F1。在第一個多標簽分類任務中,可以對每個“類”,計算F1,顯然我們需要把所有類的F1合并起來考慮。
這里有兩種合并方式:
第一種計算出所有類別總的 Precision和 Recall,然后計算F1。這種方式被稱為Micro-F1微平均。
microP ? = 1 n ∑ 1 n P i microR ? = 1 n ∑ 1 n R i mircoF ? 1 = 2 × macroP ? × macroR ? macroP ? + macroR ? \begin{aligned} &\operatorname{microP}=\frac{1}{n} \sum_{1}^{n} P_{i}\\\\ &\operatorname{microR}=\frac{1}{n} \sum_{1}^{n} R_{i}\\\\ &\operatorname{mircoF} 1=\frac{2 \times \operatorname{macroP} \times \operatorname{macroR}}{\operatorname{macroP}+\operatorname{macroR}} \end{aligned} ?microP=n1?1∑n?Pi?microR=n1?1∑n?Ri?mircoF1=macroP+macroR2×macroP×macroR??
第二種方式是計算出每一個類的 Precison 和Recall 后計算F1,最后將F1平均。這種方式叫做Macro-F1宏平均。
microP ? = T P  ̄ T P  ̄ × F P  ̄ microR ? = T P  ̄ T P  ̄ × F N  ̄ mircoF ? 1 = 2 × microP ? × microR ? microP ? + microR ? \begin{aligned} &\operatorname{microP}=\frac{\overline{T P}}{\overline{T P} \times \overline{F P}}\\\\ &\operatorname{microR}=\frac{\overline{T P}}{\overline{T P} \times \overline{F N}}\\\\ &\operatorname{mircoF} 1=\frac{2 \times \operatorname{microP} \times \operatorname{microR}}{\operatorname{microP}+\operatorname{microR}} \end{aligned} ?microP=TP×FPTP?microR=TP×FNTP?mircoF1=microP+microR2×microP×microR??
References
[1] https://blog.csdn.net/liuningjie1119/article/details/72855114
[2] P-R曲線及與ROC曲線區別
[3] https://blog.csdn.net/CatCherry/article/details/100576677
[4] https://blog.csdn.net/zhihua_oba/article/details/78677469
[5] https://blog.csdn.net/u013063099/article/details/80964865
[6] https://blog.csdn.net/CatCherry/article/details/100576677
[7] 精確率與召回率,RoC 曲線與 PR 曲線
總結
以上是生活随笔為你收集整理的一文详尽混淆矩阵、准确率、精确率、召回率、F1值、P-R 曲线、ROC 曲线、AUC 值、Micro-F1 和 Macro-F1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《嵌入式 – GD32开发实战指南》第1
- 下一篇: 修复IE默认主页——注册表篇