分類器的評價指標

研究機器學習都會研究分類算法,當創建了一個分類算法的模型以後,模型的好壞是須要量化的,最重要的就是分類器的評價指標。那下面主要談談分類器的指標。(在這裏,主要是介紹一下兩類的分類器的評價指標)算法

下面咱們能夠看一下兩類結果的分析:機器學習

一、accuracy(正確率)學習

它表示的預測結果正確比例。包括正例和負例。測試

accuracy=(TP + TN) /(P+N)spa

二、precision(精確度)排序

它表示的是預測是正例的結果中,實際爲正例的比例。ci

precision=TP/(TP+FP)it

三、recall(召回率)io

它表示的是實際爲正例樣本中,預測也爲正例的比例。class

recall=TP/(TP+FN)

四、F1=2(P*R)/(P+R)

它其實是precision和recall的一個綜合指標。

五、AUC

說到AUC指標,首先須要說一下的是ROC曲線,ROC曲線表示的是以橫軸爲FPR(False Position Rate 假陽率),縱軸爲TPR(True Position Rate 真陽率)的曲線,其中,FPR和TPR的計算方法以下:

由一連串(FPR,TPR)這樣的點構成了一條曲線,該曲線就是ROC曲線。而ROC曲線下的面積就是AUC(Area under the curve of ROC)。這就是AUC指標的由來。

對於一個特定的分類器和測試數據集,顯然只能獲得一個分類結果,即一組FPR和TPR結果,而要獲得一個曲線,咱們實際上須要一系列FPR和TPR的值構成的點,才能獲得這樣的曲線,這又是如何獲得的呢?

實際上,在咱們的分類器模型輸出的結果中,它是一種機率輸出,並無給出實際的類別。咱們能夠根據這個類動態調整某個預測值是否歸爲哪一類。如今,假如咱們已經獲得了全部預測樣本的機率輸出(屬於正樣本的機率),如今的問題是如何改變這個閾值(機率輸出)獲得每一個樣本的類別?咱們能夠根據每一個測試樣本屬於正樣本的機率值(Score)從大到小排序。

下圖是一個示例,圖中共有20個測試樣本,「Class」一欄表示每一個測試樣本真正的標籤(p表示正樣本,n表示負樣本),「Score」表示每一個測試樣本屬於正樣本的機率。

接下來,咱們從高到低,依次將「Score」值做爲閾值,當測試樣本屬於正樣本的機率大於或等於這個閾值時,咱們認爲它爲正樣本,不然爲負樣本。舉例來講,對於圖中的第4個樣本,其「Score」值爲0.6,那麼樣本1,2,3,4都被認爲是正樣本,由於它們的「Score」值都大於等於0.6,而其餘樣本則都認爲是負樣本。每次選取一個不一樣的閾值,咱們就能夠獲得一組FPR和TPR,即ROC曲線上的一點。這樣一來,咱們一共獲得了20組FPR和TPR的值,將它們畫在ROC曲線的結果以下圖:

當咱們將閾值設置爲1和0時,分別能夠獲得ROC曲線上的(0,0)和(1,1)兩個點。將這些(FPR,TPR)對鏈接起來,就獲得了ROC曲線。當閾值取值越多,ROC曲線越平滑。

能夠根據ROC來肯定劃定正樣本的機率邊界選擇在哪裏比較合適!

六、爲何選擇ROC、AUC做爲分類器的評價指標呢?

既然已經這麼多評價標準,爲何還要使用ROC和AUC呢?由於ROC曲線有個很好的特性:當測試集中的正負樣本的分佈變化的時候,ROC曲線可以保持不變。在實際的數據集中常常會出現類不平衡(class imbalance)現象,即負樣本比正樣本多不少(或者相反),並且測試數據中的正負樣本的分佈也可能隨着時間變化。下圖是ROC曲線和Precision-Recall曲線的對比:

在上圖中,(a)和(c)爲ROC曲線,(b)和(d)爲Precision-Recall曲線。(a)和(b)展現的是分類其在原始測試集(正負樣本分佈平衡)的結果,(c)和(d)是將測試集中負樣本的數量增長到原來的10倍後,分類器的結果。能夠明顯的看出,ROC曲線基本保持原貌,而Precision-Recall曲線則變化較大。

相關文章
相關標籤/搜索