「沒有測量,就沒有科學。」這是科學家門捷列夫的名言。在電腦科學中,特別是在機器學習的領域,對模型的測量和評估同樣至關重要。只有選擇與問題相匹配的評估方法,我們才能夠快速的發現在模型選擇和訓練過程中可能出現的問題,迭代地對模型進行優化。本文將總結機器學習最常見的模型評估指標,其中包括:
看一看下面這個例子:假定瓜農拉來一車西瓜,我們用訓練好的模型對這些西瓜進行判別,顯然我們可以使用錯誤率來衡量有多少比例的瓜被判別錯誤。但如果我們關心的是「挑出的西瓜中有多少比例是好瓜」,或者「所有好瓜中有多少比例被挑出來了」,那麼錯誤率顯然就不夠用了,這時我們需要引入新的評估指標,比如「查準率」和查全率更適合此類需求的效能度量。
在引入查全率和查準率之前我們必須先理解到什麼是混淆矩陣(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的意思應該就不再困難了。,下面對混淆矩陣的四個值進行總結性講解:
precision指標在中文裡可以稱為查準率或者是精確率,recall指標在中衛裡常被稱為查全率或者是召回率,查準率 p和查全率 r分別定義為:
查準率p和查全率r的具體含義如下:
這裡想強調一點,precision和accuracy(正確率)不一樣的,accuracy針對所有樣本,precision針對部分樣本,即正確的**/總的正反例:
查準率和查全率是一對矛盾的度量,一般而言,查準率高時,查全率往往偏低;而查全率高時,查準率往往偏低。我們從直觀理解確實如此:我們如果希望好瓜盡可能多地選出來,則可以通過增加選瓜的數量來實現,如果將所有瓜都選上了,那麼所有好瓜也必然被選上,但是這樣查準率就會越低;若希望選出的瓜中好瓜的比例盡可能高,則只選最有把握的瓜,但這樣難免會漏掉不少好瓜,導致查全率較低。通常只有在一些簡單任務中,才可能使查全率和查準率都很高。
再說prc, 其全稱就是precision recall curve,它以查準率為y軸,、查全率為x軸做的圖。它是綜合評價整體結果的評估指標。所以,哪總型別(正或者負)樣本多,權重就大。也就是通常說的『對樣本不均衡敏感』,『容易被多的樣品帶走』。
上圖就是一幅p-r圖,它能直觀地顯示出學習器在樣本總體上的查全率和查準率,顯然它是一條總體趨勢是遞減的曲線。在進行比較時,若乙個學習器的pr曲線被另乙個學習器的曲線完全包住,則可斷言後者的效能優於前者,比如上圖中a優於c。但是b和a誰更好呢?因為ab兩條曲線交叉了,所以很難比較,這時比較合理的判據就是比較pr曲線下的面積,該指標在一定程度上表徵了學習器在查準率和查全率上取得相對「雙高」的比例。因為這個值不容易估算,所以人們引入「平衡點」(bep)來度量,他表示「查準率=查全率」時的取值,值越大表明分類器效能越好,以此比較我們一下子就能判斷a較b好。
bep還是有點簡化了,更常用的是f1度量:
f1-score 就是乙個綜合考慮precision和recall的指標,比bep更為常用。
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(intersection over union),中文翻譯為交並比。
這裡是乙個實際例子:下圖綠色框是真實感興趣區域,紅色框是**區域,這種情況下交集確實是最大的,但是紅色框並不能準確**物體位置。因為**區域總是試圖覆蓋目標物體而不是正好**物體位置。這時如果我們能除以乙個並集的大小,就可以規避這種問題。這就是iou要解決的問題了。
下圖表示了iou的具體意義,即:**框與標註框的交集與並集之比,數值越大表示該檢測器的效能越好。
使用iou評價指標後,上面提到的問題一下子解決了:我們控制並集不要讓並集太大,對準確**是有益的,這就有效抑制了「一味地追求交集最大」的情況的發生。下圖的2,3小圖就是目標檢測效果比較好的情況。
深度學習模型評估指標
3.f1 score f1 measure值 4.混淆矩陣 5.roc曲線與auc指標 6.tar,frr,far 標籤為正樣本,分類為正樣本的數目為true positive,簡稱tp 標籤為正樣本,分類為負樣本的數目為false negative,簡稱fn 標籤為負樣本,分類為正樣本的數目為fa...
模型評估常用指標
一般情況來說,單一評分標準無法完全評估乙個機器學習模型。只用good和bad偏離真實場景去評估某個模型,都是一種欠妥的評估方式。下面介紹常用的分類模型和回歸模型評估方法。分類模型常用評估方法 指標 描述scikit learn函式 precision 精準度from sklearn.metrics ...
kmeans及模型評估指標 模型的評估指標
想必大家都知道,構建機器學習模型就是為了能夠更好的訓練我們的資料集,使得模型的準確率達到最大,那麼當我們構建好了我們的學習模型,可以通過哪些指標來評估我們模型的好壞呢?這就是我今天要給大家介紹的內容。一.精確率與召回率 1.混淆矩陣 在分類過程中,結果與正確標記之間存在四種不同的組合,構成了混淆矩陣...