1. 程式人生 > 其它 >分類問題中評價指標

分類問題中評價指標

基本概念

TP、True Positive 真陽性:預測為正,實際為正

FP、False Positive 假陽性:預測為正,實際為負

FN、False Negative 假陰性:預測與負、實際為正

TN、True Negative 真陰性:預測為負、實際為負。

以分類問題為例:

  $\text { 實際情況: }\left\{\begin{array}{c}\text { 數字: } 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 \\ \text { 類別: } A & A & A & A & B & B & B & C & C\end{array}\right.$

  $\text { 預測情況: }\left\{\begin{array}{lllllllll}\text { 數字: } 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 \\\text { 類別: } A & A & B & C & B & B & C & B & C\end{array}\right.$

真陽性:真陽性的定義是“預測為正,實際也是正”,這個最好理解,就是指預測正確,是哪個類就被分到哪個類

  類A,TP的個數為2;類B,TP的個數為2;類C,TP的個數為1。

假陽性的定義是“預測為正,實際為負”,就是預測為某個類,但是實際不是。

  類A,FP個數為0,我們預測之後,把1和2分給了A,這兩個都是正確的,並不存在把不是A類的值分給A的情況。類B的FP是2,"3"和"8"都不是B類,但卻分給了B,所以為假陽性。類C的假陽性個數為2。

假陰性,假陰性的定義是“預測為負,實際為正”,

  對類A而言,FN為2,"3"和"4"分別預測為B和C,但是實際是A,也就是預測為負,實際為正。對類B而言,FN為1,對類C而言,FN為1。

具體情況看如下表格:

    $\begin{array}{|l|l|l|l|l|}\hline & \text { A } & \text { B } & \text { C } & \text { 總計 } \\\hline \text { TP } & 2 & 2 & 1 & 5 \\\hline \text { FP } & 0 & 2 & 2 & 4 \\\hline \text { FN } & 2 & 1 & 1 & 4 \\\hline\end{array}$

精確率和召回率

    $\text { 精確率 } \mathrm{P}=\frac{\text { TP真陽性 }}{T P \text { 真陽性 }+F P \text { 假陽性 }}$

  計算我們預測出來的某類樣本中,有多少是被正確預測的。針對預測樣本而言。

    $\text { 召回率 } \mathrm{R}=\frac{T P \text { 真陽性 }}{T P \text { 真陽性 }+F N \text { 假陰性 }}$

  針對原先實際樣本而言,有多少樣本被正確的預測出來了。

套用網上的一個例子:

  某池塘有1400條鯉魚,300只蝦,300只鱉。現在以捕鯉魚為目的。撒一大網,逮著了700條鯉魚,200只蝦,100只鱉。那麼,這些指標分別如下:

  精確率 = 700 / (700 +200 + 100) = 70%

  召回率 = 700 / 1400 =50%

  可以吧上述的例子看成分類預測問題,對於“鯉魚來說”,TP真陽性為700,FP假陽性為300,FN假陰性為700。

  Precison=TP/(TP+FP)=700(700+300)=70%

  Recall=TP/(TP+FN)=700/(700+700)=50%

  將上述例子,改變一下:把池子裡的所有的鯉魚、蝦和鱉都一網打盡,觀察這些指標的變化。

  精確率 = 1400 / (1400 +300 + 300) = 70%

  召回率 = 1400 / 1400 =100%

  TP為1400:有1400條鯉魚被預測出來;FP為600:有600個生物不是鯉魚類,卻被歸類到鯉魚;FN為0,鯉魚都被歸類到鯉魚類去了,並沒有歸到其他類。

  Precision=TP/(TP+FP)=1400/(1400+600)=70%

  Recall=TP/(TP+FN)=1400/(1400)=100%

  其實就是分母不同,一個分母是預測為正的樣本數,另一個是原來樣本中所有的正樣本數

  作為預測者,我們當然是希望,Precision和Recall都保持一個較高的水準,但事實上這兩者在某些情況下有矛盾的。比如極端情況下,我們只搜尋出了一個結果,且是正確的,那麼Precision就是100%,但是Recall就很低;而如果我們把所有結果都返回,那麼比如Recall是100%,但是Precision就會很低。因此在不同的場合中需要自己判斷希望Precision比較高或是Recall比較高,此時我們可以引出另一個評價指標—F1-Score(F-Measure)。

F1-Score

  F1分數(F1 Score),是統計學中用來衡量二分類模型精確度的一種指標,用於測量不均衡資料的精度。它同時兼顧了分類模型的精確率和召回率。F1分數可以看作是模型精確率和召回率的一種加權平均,它的最大值是1,最小值是0。

數學定義:F1分數(F1-Score),又稱為平衡F分數(BalancedScore),它被定義為精確率和召回率的調和平均數。

    $F_{1}=2 \cdot \frac{\text { precision } \cdot \text { recall }}{\text { precison }+\text { recall }}$

更一般的,我們定義Fβ分數為:

    $F_{\beta}=\left(1+\beta^{2}\right) \cdot \frac{\text { preciosn } \cdot \text { recall }}{\left(\beta^{2} \cdot \text { precision }\right)+\text { recall }}$

除了F1分數之外,F0.5分數和F2分數,在統計學中也得到了大量應用,其中,F2分數中,召回率的權重高於精確率,而F0.5分數中,精確率的權重高於召回率。

Micro-F1和Macro-F1

  最後看Micro-F1和Macro-F1。在第一個多標籤分類任務中,可以對每個“類”,計算F1,顯然我們需要把所有類的F1合併起來考慮。

  這裡有兩種合併方式:

  第一種計算出所有類別總的Precision和Recall,然後計算F1。

  例如依照最上面的表格來計算:Precison=5/(5+4)=0.556,Recall=5/(5+4)=0.556,然後帶入F1的公式求出F1,這種方式被稱為Micro-F1微平均。

  第二種方式是計算出每一個類的Precison和Recall後計算F1,最後將F1平均。

  例如上式A類:P=2/(2+0)=1.0,R=2/(2+2)=0.5,F1=(2*1*0.5)/1+0.5=0.667。同理求出B類C類的F1,最後求平均值,這種正規化叫做Macro-F1巨集平均。

因上求緣,果上努力~~~~ 作者:希望每天漲粉,轉載請註明原文連結:https://www.cnblogs.com/BlairGrowing/p/15487250.html