1. 程式人生 > >準確率(Accuracy), 精確率(Precision), 召回率(Recall)和F1-Measure,confusion matrix

準確率(Accuracy), 精確率(Precision), 召回率(Recall)和F1-Measure,confusion matrix

自然語言處理(ML),機器學習(NLP),資訊檢索(IR)等領域,評估(Evaluation)是一個必要的工作,而其評價指標往往有如下幾點:準確率(Accuracy),精確率(Precision),召回率(Recall)和F1-Measure。

本文將簡單介紹其中幾個概念。中文中這幾個評價指標翻譯各有不同,所以一般情況下推薦使用英文。

現在我先假定一個具體場景作為例子。

假如某個班級有男生80人,女生20人,共計100人.目標是找出所有女生.
現在某人挑選出50個人,其中20人是女生,另外還錯誤的把30個男生也當作女生挑選出來了.
作為評估者的你需要來評估(evaluation)下他的工作

首先我們可以計算準確率(accuracy)

,其定義是: 對於給定的測試資料集,分類器正確分類的樣本數與總樣本數之比。也就是損失函式是0-1損失時測試資料集上的準確率[1].

這樣說聽起來有點抽象,簡單說就是,前面的場景中,實際情況是那個班級有男的和女的兩類,某人(也就是定義中所說的分類器)他又把班級中的人分為男女兩類。accuracy需要得到的是此君分正確的人總人數的比例。很容易,我們可以得到:他把其中70(20女+50男)人判定正確了,而總人數是100人,所以它的accuracy就是70 %(70 / 100).

由準確率,我們的確可以在一些場合,從某種意義上得到一個分類器是否有效,但它並不總是能有效的評價一個分類器的工作。舉個例子,google抓取了argcv 100個頁面,而它索引中共有10,000,000個頁面,隨機抽一個頁面,分類下,這是不是argcv的頁面呢?如果以accuracy來判斷我的工作,那我會把所有的頁面都判斷為"不是argcv的頁面",因為我這樣效率非常高(return false,一句話),而accuracy已經到了99.999%(9,999,900/10,000,000),完爆其它很多分類器辛辛苦苦算的值,而我這個演算法顯然不是需求期待的,那怎麼解決呢?這就是precision,recall和f1-measure出場的時間了.

在說precision,recall和f1-measure之前,我們需要先需要定義TP,FN,FP,TN四種分類情況.
按照前面例子,我們需要從一個班級中的人中尋找所有女生,如果把這個任務當成一個分類器的話,那麼女生就是我們需要的,而男生不是,所以我們稱女生為"正類",而男生為"負類".

相關(Relevant),正類 無關(NonRelevant),負類
被檢索到(Retrieved) true positives(TP 正類判定為正類,例子中就是正確的判定"這位是女生") false positives(FP 負類判定為正類,"存偽",例子中就是分明是男生卻判斷為女生,當下偽娘橫行,這個錯常有人犯)
未被檢索到(Not Retrieved) false negatives(FN 正類判定為負類,"去真",例子中就是,分明是女生,這哥們卻判斷為男生--梁山伯同學犯的錯就是這個) true negatives(TN 負類判定為負類,也就是一個男生被判斷為男生,像我這樣的純爺們一準兒就會在此處)

通過這張表,我們可以很容易得到這幾個值:
TP=20
FP=30
FN=0
TN=50

精確率(precision)的公式是P=TPTP+FP,它計算的是所有被檢索到的item中,"應該被檢索到"的item佔的比例。

在例子中就是希望知道此君得到的所有人中,正確的人(也就是女生)佔有的比例.所以其precision也就是40%(20女生/(20女生+30誤判為女生的男生)).

召回率(recall)的公式是R=TPTP+FN,它計算的是所有檢索到的item佔所有"應該檢索到的item"的比例。

在例子中就是希望知道此君得到的女生佔本班中所有女生的比例,所以其recall也就是100%(20女生/(20女生+ 0 誤判為男生的女生))

F1值就是精確值和召回率的調和均值,也就是
1F1=1P+1R
調整下也就是
F1=2PRP+R=2TP2TP+FP+FN

例子中 F1-measure 也就是約為 57.143%(20.410.4+1).

需要說明的是,有人[2]列了這樣個公式
Fa=(a2+1)PRa2(P+R)

 將F-measure一般化。

補充個confusion matrix

混淆矩陣(Confusion Matrix):

在人工智慧中,混淆矩陣(confusion matrix)是視覺化工具,特別用於監督學習,在無監督學習一般叫做匹配矩陣。

混淆矩陣的每一列代表了預測類別,每一列的總數表示預測為該類別的資料的數目,每一行代表了資料的真實歸屬類別,每一行的資料總數表示該類別的資料例項的數目

如下圖,第一行第一列中的43表示有43個實際歸屬第一類的例項被預測為第一類,同理,第二行第一列的2表示有2個實際歸屬為第二類的例項被錯誤預測為第一類。 如有150個樣本資料,這些資料分成3類,每類50個。分類結束後得到的混淆矩陣為:
類1 類2 類3
類1 43 5 2
類2 2 45 3
類3 0 1 49
每一行之和為50,表示50個樣本, 第一行說明類1的50個樣本有43個分類正確,5個錯分為類2,2個錯分為類3

轉自:https://argcv.com/articles/1036.c