yuCode22 Comments♤ Hide Sidebar Tuesday, January 15th, 2013html
機器學習(ML),天然語言處理(NLP),信息檢索(IR)等領域,評估(Evaluation)是一個必要的工做,而其評價指標每每有以下幾點:準確率(Accuracy),精確率(Precision),召回率(Recall)和F1-Measure。(注:相對來講,IR 的 ground truth 不少時候是一個 Ordered List, 而不是一個 Bool 類型的 Unordered Collection,在都找到的狀況下,排在第三名仍是第四名損失並非很大,而排在第一名和第一百名,雖然都是「找到了」,可是意義是不同的,所以更多可能適用於 MAP 之類評估指標。)git
本文將簡單介紹其中幾個概念。中文中這幾個評價指標翻譯各有不一樣,因此通常狀況下推薦使用英文。github
如今我先假定一個具體場景做爲例子。算法
假如某個班級有男生 80人,女生 20人,共計 100人.目標是找出全部女生. 如今某人挑選出 50我的,其中 20人是女生,另外還錯誤的把30個男生也看成女生挑選出來了. 做爲評估者的你須要來評估( evaluation)下他的工做
首先咱們能夠計算準確率(accuracy),其定義是: 對於給定的測試數據集,分類器正確分類的樣本數與總樣本數之比。也就是損失函數是0-1損失時測試數據集上的準確率[1].c#
這樣說聽起來有點抽象,簡單說就是,前面的場景中,實際狀況是那個班級有男的和女的兩類,某人(也就是定義中所說的分類器)他又把班級中的人分爲男女兩類。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出場的時間了.ide
在說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)的公式是,它計算的是全部"正確被檢索的item(TP)"佔全部"實際被檢索到的(TP+FP)"的比例.測試
在例子中就是但願知道此君獲得的全部人中,正確的人(也就是女生)佔有的比例.因此其precision也就是40%(20女生/(20女生+30誤判爲女生的男生)).
召回率(recall)的公式是,它計算的是全部"正確被檢索的item(TP)"佔全部"應該檢索到的item(TP+FN)"的比例。
在例子中就是但願知道此君獲得的女生佔本班中全部女生的比例,因此其recall也就是100%(20女生/(20女生+ 0 誤判爲男生的女生))
F1值就是精確值和召回率的調和均值,也就是 調整下也就是
例子中 F1-measure 也就是約爲 57.143%().
須要說明的是,有人[2]列了這樣個公式 將F-measure通常化.
F1-measure認爲精確率和召回率的權重是同樣的,但有些場景下,咱們可能認爲精確率會更加劇要,調整參數a,使用Fa-measure能夠幫助咱們更好的evaluate結果.
話雖然不少,其實實現很是輕鬆,點擊此處能夠看到個人一個簡單的實現.