「沒有測量,就沒有科學。」這是科學家門捷列夫的名言。在計算機科學中,特別是在機器學習的領域,對模型的測量和評估一樣相當重要。只有選擇與問題相匹配的評估方法,咱們纔可以快速的發如今模型選擇和訓練過程當中可能出現的問題,迭代地對模型進行優化。本文將總結機器學習最多見的模型評估指標,其中包括:html
- precision
- recall
- F1-score
- PRC
- ROC和AUC
- IOU
從混淆矩陣談起
看一看下面這個例子:假定瓜農拉來一車西瓜,咱們用訓練好的模型對這些西瓜進行判別,顯然咱們可使用錯誤率來衡量有多少比例的瓜被判別錯誤。但若是咱們關心的是「挑出的西瓜中有多少比例是好瓜」,或者「全部好瓜中有多少比例被挑出來了」,那麼錯誤率顯然就不夠用了,這時咱們須要引入新的評估指標,好比「查準率」和查全率更適合此類需求的性能度量。markdown
在引入查全率和查準率以前咱們必須先理解到什麼是混淆矩陣(Confusion matrix)。這個名字起得是真的好,初學者很容易被這個矩陣搞得暈頭轉向。下圖a就是有名的混淆矩陣,而下圖b則是由混淆矩陣推出的一些有名的評估指標。機器學習
咱們首先好好解讀一下混淆矩陣裏的一些名詞和其意思。根據混淆矩陣咱們能夠獲得TP,FN,FP,TN四個值,顯然TP+FP+TN+FN=樣本總數。這四個值中都帶兩個字母,單純記憶這四種狀況很難記得牢,咱們能夠這樣理解:第一個字母表示本次預測的正確性,T就是正確,F就是錯誤;第二個字母則表示由分類器預測的類別,P表明預測爲正例,N表明預測爲反例。好比TP咱們就能夠理解爲分類器預測爲正例(P),並且此次預測是對的(T),FN能夠理解爲分類器的預測是反例(N),並且此次預測是錯誤的(F),正確結果是正例,即一個正樣本被錯誤預測爲負樣本。咱們使用以上的理解方式來記住TP、FP、TN、FN的意思應該就再也不困難了。,下面對混淆矩陣的四個值進行總結性講解:post
- True Positive (真正,TP)被模型預測爲正的正樣本
- True Negative(真負 , TN)被模型預測爲負的負樣本
- False Positive (假正, FP)被模型預測爲正的負樣本
- False Negative(假負 , FN)被模型預測爲負的正樣本
Precision、Recall、PRC、F1-score
Precision指標在中文裏能夠稱爲查準率或者是精確率,Recall指標在中衛裏常被稱爲查全率或者是召回率,查準率 P和查全率 R分別定義爲:性能
查準率P和查全率R的具體含義以下:學習
- 查準率(Precision)是指在全部系統斷定的「真」的樣本中,確實是真的的佔比
- 查全率(Recall)是指在全部確實爲真的樣本中,被判爲的「真」的佔比
這裏想強調一點,precision和accuracy(正確率)不同的,accuracy針對全部樣本,precision針對部分樣本,即正確的預測/總的正反例:優化
查準率和查全率是一對矛盾的度量,通常而言,查準率高時,查全率每每偏低;而查全率高時,查準率每每偏低。咱們從直觀理解確實如此:咱們若是但願好瓜儘量多地選出來,則能夠經過增長選瓜的數量來實現,若是將全部瓜都選上了,那麼全部好瓜也必然被選上,可是這樣查準率就會越低;若但願選出的瓜中好瓜的比例儘量高,則只選最有把握的瓜,但這樣不免會漏掉很多好瓜,致使查全率較低。一般只有在一些簡單任務中,纔可能使查全率和查準率都很高。url
再說PRC, 其全稱就是Precision Recall Curve,它以查準率爲Y軸,、查全率爲X軸作的圖。它是綜合評價總體結果的評估指標。因此,哪總類型(正或者負)樣本多,權重就大。也就是一般說的『對樣本不均衡敏感』,『容易被多的樣品帶走』。spa
上圖就是一幅P-R圖,它能直觀地顯示出學習器在樣本整體上的查全率和查準率,顯然它是一條整體趨勢是遞減的曲線。在進行比較時,若一個學習器的PR曲線被另外一個學習器的曲線徹底包住,則可斷言後者的性能優於前者,好比上圖中A優於C。可是B和A誰更好呢?由於AB兩條曲線交叉了,因此很難比較,這時比較合理的判據就是比較PR曲線下的面積,該指標在必定程度上表徵了學習器在查準率和查全率上取得相對「雙高」的比例。由於這個值不容易估算,因此人們引入「平衡點」(BEP)來度量,他表示「查準率=查全率」時的取值,值越大代表分類器性能越好,以此比較咱們一會兒就能判斷A較B好。翻譯
BEP仍是有點簡化了,更經常使用的是F1度量:
F1-score 就是一個綜合考慮precision和recall的指標,比BEP更爲經常使用。
ROC & AUC
ROC全稱是「受試者工做特徵」(Receiver Operating Characteristic)曲線,ROC曲線以「真正例率」(TPR)爲Y軸,以「假正例率」(FPR)爲X軸,對角線對應於「隨機猜想」模型,而(0,1)則對應「理想模型」。ROC形式以下圖所示。
TPR和FPR的定義以下:
從形式上看TPR就是咱們上面提到的查全率Recall,而FPR的含義就是:全部確實爲「假」的樣本中,被誤判真的樣本。
進行學習器比較時,與PR圖類似,若一個學習器的ROC曲線被另外一個學習器的曲線包住,那麼咱們能夠斷言後者性能優於前者;若兩個學習器的ROC曲線發生交叉,則難以通常性斷言二者孰優孰劣。此時若要進行比較,那麼能夠比較ROC曲線下的面積,即AUC,面積大的曲線對應的分類器性能更好。
AUC(Area Under Curve)的值爲ROC曲線下面的面積,若分類器的性能極好,則AUC爲1。但現實生活中尤爲是工業界不會有如此完美的模型,通常AUC均在0.5到1之間,AUC越高,模型的區分能力越好,上圖AUC爲0.81。若AUC=0.5,即與上圖中紅線重合,表示模型的區分能力與隨機猜想沒有差異。若AUC真的小於0.5,請檢查一下是否是好壞標籤標反了,或者是模型真的不好。
怎麼選擇評估指標?
這種問題的答案固然是具體問題具體分析啦,單純地回答誰好誰壞是沒有意義的,咱們須要結合實際場景給出合適的回答。
考慮下面是兩個場景,由此看出不一樣場景下咱們關注的點是不同的:
- 地震的預測對於地震的預測,咱們但願的是Recall很是高,也就是說每次地震咱們都但願預測出來。這個時候咱們能夠犧牲Precision。情願發出1000次警報,把10次地震都預測正確了;也不要預測100次對了8次漏了兩次。因此咱們能夠設定在合理的precision下,最高的recall做爲最優勢,找到這個對應的threshold點。
- 嫌疑人定罪基於不錯怪一個好人的原則,對於嫌疑人的定罪咱們但願是很是準確的。及時有時候放過了一些罪犯(Recall低),但也是值得的。
ROC和PRC在模型性能評估上效果都差很少,但須要注意的是,在正負樣本分佈得極不均勻(highly skewed datasets)的狀況下,PRC比ROC能更有效地反應分類器的好壞。在數據極度不平衡的狀況下,譬如說1萬封郵件中只有1封垃圾郵件,那麼若是我挑出10封,50封,100...封垃圾郵件(假設咱們每次挑出的N封郵件中都包含真正的那封垃圾郵件),Recall都是100%,可是FPR分別是9/9999, 49/9999, 99/9999(數據都比較好看:FPR越低越好),而Precision卻只有1/10,1/50, 1/100 (數據不好:Precision越高越好)。因此在數據很是不均衡的狀況下,看ROC的AUC多是看不出太多好壞的,而PR curve就要敏感的多。
IOU
上面討論的是分類任務中的評價指標,這裏想簡單講講目標檢測任務中經常使用的評價指標:IOU(Intersection over Union),中文翻譯爲交併比。
這裏是一個實際例子:下圖綠色框是真實感興趣區域,紅色框是預測區域,這種狀況下交集確實是最大的,可是紅色框並不能準確預測物體位置。由於預測區域老是試圖覆蓋目標物體而不是正好預測物體位置。這時若是咱們能除以一個並集的大小,就能夠規避這種問題。這就是IOU要解決的問題了。
下圖表示了IOU的具體意義,即:預測框與標註框的交集與並集之比,數值越大表示該檢測器的性能越好。
使用IOU評價指標後,上面提到的問題一會兒解決了:咱們控制並集不要讓並集太大,對準確預測是有益的,這就有效抑制了「一味地追求交集最大」的狀況的發生。下圖的2,3小圖就是目標檢測效果比較好的狀況。
參考資料: