1. 程式人生 > >好記性不如爛筆頭——關於精確度、召回率、F值、準確率

好記性不如爛筆頭——關於精確度、召回率、F值、準確率

將資料探勘中這些評測指標的基本概念做一整理,忘了的時候還可以來查一查。

精確度,有時也叫正確率,是英文中的precision而不是accuracy。表示正確識別為此類的樣本數目(TP)/識別為此類的樣本總數目(TP+FP)。FP就是那些原本不是此類但被錯誤的分為此類的樣本數目。

召回率,這個名稱容易使人把它和召回缺陷產品的比率聯想到一起,完全不是一碼事。所以另外一種翻譯的名稱更合適:查全率。表示正確識別為此類的樣本數目(TP)/真實情況下的此類的樣本數目(TP+FN)。那麼真實情況包括哪些呢?一部分自然是正確分類的TP,另一部分就是那些被錯誤地分到了其他類的樣本數目(FN)

所以,公式:
P=TP/(TP+FP)
R=TP/(TP+FN)

還是舉個例子吧。網上多數介紹僅用兩個分類舉例,所以容易把FP和FN錯誤的當成一個數,其實應該是多個數的和。這裡我舉個3分類的例子。假定我們有24個樣本,真實情況是10個red類,8個yellow類,6個blue類。

用weka做了個例子,假定系統給出的結果如下:
 a b c   <-- classified as
 9 1 0 | a = red
 1 7 0 | b = yellow
 1 1 4 | c = blue

是這樣看的:橫向為真實情況,縱向為工具分類結果。即:有11個樣本被當作red類。而這11個樣本中,有9個確實是red類,還有一個其實是yellew,另一個其實是blue;有9個樣本被當作yellow類。這9個樣本當中,有7個確實是yellow,還有一個其實是red,另一個其實是blue;有4個樣本被當作blue類。而這4個樣本也確實是blue。

那麼根據前面的公式,可以對red、yellow、blue分別計算正確率和查全率了。

P(red)=9/11  R(red)=9/10
P(yellow)=7/9  R(yellow)=7/8
P(blue)=4/4  R(blue)=4/6

那麼我們從直觀上感覺一下分類的好壞,正確率雖然很關鍵,但光有正確率是不夠的。比如blue,正確率是100%,但其實只是把2/3的資料挑出來了,還有1/3搞錯了。那麼更極端的假想一下,如果某一類實際上有10000個樣本,最後只分出一個,對是對了。此時正確率還是100%,但我們能認為這個分類結果是可以接受嗎?顯然不行。所以P值和R同時要比較高才好。於是有了F指標:

F=2*P*R/(P+R)

最後再來說說accuracy,這個通常翻譯成準確率。也是一個綜合指標:
A=(TP + TN)/(P+N),表示正確分類的樣本數目/所有樣本總數目。同樣,這個分子的寫法也容易讓人誤認為是兩個數的和,其實不止。
對於上面那個例子來說,準確率應該是:
A=(9+7+4)/(10+8+6)