天天看點

機器學習分類常見評價标準1.準确率(Accuracy)2.精确率(Precision)3.召回率(Recall)4.PR曲線與F1值(F1 Score)5.ROC曲線與AUC

目錄

  • 1.準确率(Accuracy)
  • 2.精确率(Precision)
  • 3.召回率(Recall)
  • 4.PR曲線與F1值(F1 Score)
  • 5.ROC曲線與AUC

評價分類器性能的名額一般是分類準确率(accuracy),但對于二分類問題,其評價名額為精确率(precision)與召回率(recall),除此之外還有F1值(F1 Score)、PR曲線、ROC曲線、AUC等幫助了解的評估标準。

首先了解一下假陰性、假陽性這些基本概念:

TP——True Positive——真陽性——真實标簽為真,模型預測也為真

TN——True Negative——真陰性——真實标簽為假,預測結果也為假

FP——False Positive——假陽性——真實标簽為假,預測結果為真

FN——False Negative——假陰性——真實标簽為真,預測結果為假

為了便于了解,你可以把它想象中最近的核酸檢測結果,比如你本來沒有感染新冠病毒,但核酸檢測為陽性,此時就是假陽性(不是真的陽性,即真實标簽為假,但預測結果為真)

1.準确率(Accuracy)

A C C = T P + T N T P + T N + F P + F N ACC = \frac{TP+TN}{TP+TN+FP+FN} ACC=TP+TN+FP+FNTP+TN​

我們日常生活中都很常用的評價标準,即模型預測正确(包括正例和負例)的數量占所有樣本數量之比。準确率看起來非常好了解且直覺,但為什麼不能隻用準确率就判斷模型好壞?因為在面對小機率事件時,準确率高不能代表模型性能好。比如最近疫情嚴峻,如果我們設計了一個模型來預測一位患者是否感染了新冠病毒,分類結果隻有是和否。由于我們在抗擊疫情中的努力,陽性的病例在人群中肯定是非常少的,是以這個模型隻需要預測否,就能達到很高的準确率,如果拿全國的人口作為基數,那準确率高達99%,但實際上這個模型沒有任何用處,因為他和直接

print("否")

沒什麼差別。

2.精确率(Precision)

P = T P T P + F P P = \frac{TP}{TP+FP} P=TP+FPTP​

表示所有被預測為真的例子中實際也為真的機率。在準确率中的例子中,準确率很高的模型精确率卻是0,足以看出準确率的問題所在。這個評價标準的意義在于:當模型預測結果為真的時候,我們有多大的把握相信它(在沒有真實标簽參考的時候)。比如上面的例子,如果模型預測出一個人感染新冠病毒為真,那麼我們相信它的底氣自然來自與它之前預測陽性的時候對了多少,對的越多那麼我們越能相信它。

3.召回率(Recall)

r e c a l l = T P T P + F N recall = \frac{TP}{TP+FN} recall=TP+FNTP​

表示所有真實标簽為真的例子中模型預測也為真的數量之比。表示模型能從真樣本中預測出真的能力。繼續以上述例子為證,則召回率意義在于:有N個真的感染新冠病毒的患者,模型能判斷出其中的幾個,即召回了幾個(是以叫召回率)。

精确率:猜的真的樣本中,有多少樣本确實是真的

召回率:樣本是真的中,有多少也被猜是真的

4.PR曲線與F1值(F1 Score)

橫坐标為召回率,縱坐标為精确率的坐标系,設定模型預測不同的門檻值(比如0.5,大于0.5為正例,小于0.5為負例),其中得到的精确率和召回率即一個PR值,将不同門檻值的PR值在上面的坐标系中繪制出來,即為PR曲線。

以下圖即說明來源:https://zhuanlan.zhihu.com/p/64963796,講的很好

P-R曲 線上的一個點代表着,在某一門檻值下,模型将大于該門檻值的結果判定為正樣本, 小于該門檻值的結果判定為負樣本,此時傳回結果對應的召回率和精确率。整條P-R 曲線是通過将門檻值從高到低移動而生成的。

上面說的門檻值從高到低原因:門檻值高,精确率高,門檻值低,召回率高

我的了解:門檻值高的時候,比如0.9的時候,隻有模型預測>0.9的時候才分類為正例,則此時預測正例的數量變少,模型預測正例是真的正例的機率變大,因為此時模型隻有90%的把握才會預測為正例,是以精确率很高,但召回率因為真實标簽為正的數量沒有改變,而TP變少小,是以很小。相反,門檻值低的時候,預測正例變多,但預測正例是真實正例的機率變小,精确率也變小,召回率變大。

機器學習分類常見評價标準1.準确率(Accuracy)2.精确率(Precision)3.召回率(Recall)4.PR曲線與F1值(F1 Score)5.ROC曲線與AUC

由圖可見,當召回率接近于0時,模型A的精确率為0.9,模型B的精确率是1, 這說明模型B得分前幾位的樣本全部是真正的正樣本,而模型A即使得分最高的幾 個樣本也存在預測錯誤的情況(也就是說模型A在有9成把握預測為正的時候還是犯錯了)。并且,随着召回率的增加,精确率整體呈下降趨 勢。但是,當召回率為1時,模型A的精确率反而超過了模型B(這說明模型B對一些真實标簽為正例的預測把握極低,比如一個标簽為正例的樣本,模型B可能隻将其預測為0.1)。這充分說明,隻用 某個點對應的精确率和召回率是不能全面地衡量模型的性能,隻有通過P-R曲線的 整體表現,才能夠對模型進行更為全面的評估。

當一個模型的PR曲線完全蓋住了另一個模型,那麼前者肯定是更優秀的模型,因為它所有點的精确率和召回率都優于後者。那麼如果向上圖那樣兩個模型互有交叉,無法直覺判斷模型的好壞,就需要通過其他方法:比較PR曲線下的面積,或者比較平衡點(坐标系上畫一條召回率=精确率的直線,即過原點斜率為1,直線與PR曲線的交點就是平衡點)

但平衡點往往過于簡單,一般考察兩個模型的F1值,即精确率與召回率的調和平均:

F 1 = 2 1 r e c a l l + 1 p r e i s i o n = 2 × r e c a l l × p r e c i s i o n r e c a l l + p r e c i s i o n F1 = \frac{2}{\frac{1}{recall}+\frac{1}{preision}}=\frac{2\times recall\times precision}{recall+precision} F1=recall1​+preision1​2​=recall+precision2×recall×precision​

5.ROC曲線與AUC

與PR曲線不同,ROC曲線的橫坐标是真正例率(TPR,其實就是召回率,所有正例中猜對的),縱坐标為假正例率(FPR,所有負例中猜錯的)。

T P R = T P T P + F N F P R = F P T N + F P TPR = \frac{TP}{TP+FN}\\ FPR = \frac{FP}{TN+FP} TPR=TP+FNTP​FPR=TN+FPFP​

ROC曲線将模型預測得分進行排名,分别取得分為門檻值進行計算TPR和FPR,最後進行繪制,以下是舉例:

序号 1 2 3 4 5 6 7 8 9 10
預測值 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.15 0.1
真實标簽 1 1 1 1 1 1
  1. 先以第一個樣本的得分作為門檻值,即模型大于該門檻值分類為1,反之為0。此時預測為正的有1個樣本,真實标簽為1的有6個樣本,分類正确的有1個樣本,即TP = 1,FP = 0,TPR = 1/6,FPR = 0
  2. 以第二個樣本的得分作為門檻值,此時TP = 2,FP=0,TPR = 2/6,FPR = 0。以此類推:
  3. TP = 2,FP = 1,TPR = 2/6,FPR = 1/4
  4. TP = 3,FP = 1,TPR = 3/6,FPR = 1/4
  5. TP = 4,FP = 1,TPR = 4/6,FPR = 1/4
  6. TP = 5,FP = 1,TPR = 5/6,FPR = 1/4
  7. TP = 5,FP = 2,TPR = 5/6,FPR = 2/4
  8. TP = 5,FP = 3,TPR = 5/6,FPR = 3/4
  9. TP = 6,FP = 3,TPR = 6/6,FPR = 3/4
  10. TP = 6,FP = 3,TPR = 6/6,FPR = 4/4

繪制成圖:

機器學習分類常見評價标準1.準确率(Accuracy)2.精确率(Precision)3.召回率(Recall)4.PR曲線與F1值(F1 Score)5.ROC曲線與AUC

如果兩個模型PR曲線相似,一個模型的ROC曲線被另一個模型完全覆寫,則後者的性能優于前者,如果兩個模型ROC曲線交叉,則難以分辨孰優孰劣,此時可以分析ROC曲線下的面積:

AUC即(Area Under ROC Curve),是ROC曲線下各部分的面積求和而得。AUC越大,則代表模型預測能力越強。