機器學習分類模型效果評估指標

2021-09-29 13:09:42 字數 3450 閱讀 8647

機器學習分類模型效果評估指標:準確率、精確率、召回率、f1​-score

1、準確率、精確率、召回率、f1​-score

我們以分類演算法為例,假設班裡有50個同學,其中男生30個,女生20個,我們根據身高、體重、頭髮長度、聲音分貝等等特徵,想找到所有女生,比如已經有這樣乙個分類器了,得到結果如下:

這裡我們是要找到所有女同學,故把女同學作為正樣本(positive),男同學作為負樣本(negative),**結果正確為true,**結果錯誤為false。基於此,我們結合上面的資料給出如下定義和值:

tp(true positive): 真實是女生,**結果也是女生的數量(18個)fn(false negative): 真實是女生,**結果是男生的數量(2個)tn(true negative): 真實是男生,**結果也是男生(25個)fp(false postive): 真實是男生,**結果是女生(5個)

有了這幾個值,我們就可以計算準確率、精確率、召回率、f1​-score這幾個值了

準確率(accuracy): 衡量所有樣本被分類準確的比例​

accuracy=(tp+tn)/(tp+fp+tn+fn)​

精確率(precision): 也叫查準率,衡量正樣本的分類準確率,就是說倍**為正樣本的樣本有多少是真的正樣本。

precision=tp/(tp+fp)​

召回率(recall): 表示分類正確的正樣本佔總的分類正確樣本的比例recall=tp/(tp+fn)​

f1​-score: 精確率和召回率的調和平均2f/1=1/p+1/r⟹f1=2pr/(p+r)=2tp/(2tp+fp+tn)

​可以看到,在上式裡我們認為精確率和召回率是一樣重要的(他們的權重一樣),當我們的評估更加注重精確率或者召回率的時候,該怎麼處理呢?

我們引入 fβ ,對於任意的非負值 β,我們定義

fβ=(β2+1)⋅pr/(β2⋅p+r )

​可以看到,我們可以通過調整 β來幫助我們更好地評估結果。

最好的分類器當然是準確率、精確率,召回率都為1,但實際場景中幾乎是不可能的,而且精確率和召回率往往會相互影響,乙個高了另乙個會有所下降,因此在實際應用中要根據具體需求做適當平衡。

2、roc、auc

roc(receiver operating characteristic)曲線和auc常被用來評價乙個二值分類器(binary classifier)的優劣,下圖就是roc曲線的乙個示意圖

fpr=fp(fp+tn),tpr=tp/(tp+fn)​

接下來我們考慮roc曲線圖中的四個點和一條線。第乙個點,(0,1),即fpr=0, tpr=1,這意味著fn(false negative)=0,並且fp(false positive)=0。wow,這是乙個完美的分類器,它將所有的樣本都正確分類。第二個點,(1,0),即fpr=1,tpr=0,類似地分析可以發現這是乙個最糟糕的分類器,因為它成功避開了所有的正確答案。第三個點,(0,0),即fpr=tpr=0,即fp(false positive)=tp(true positive)=0,可以發現該分類器**所有的樣本都為負樣本(negative)。類似的,第四個點(1,1),分類器實際上**所有的樣本都為正樣本。經過以上的分析,我們可以斷言,roc曲線越接近左上角,該分類器的效能越好。

2.1 如何畫roc曲線

對於乙個特定的分類器和測試資料集,顯然只能得到一組fpr和tpr結果,而要得到乙個曲線,我們實際上需要一系列fpr和tpr的值,這又是如何得到的呢?我們先來看一下wikipedia上對roc曲線的定義

roc曲線是由一系列因區分閾值變化產生的點,用於描述二分類模型的判斷能力

這裡的關鍵在於 「its discrimination threshold is varied」 ,因為對於乙個二分類模型,它的輸出結果其實是判斷這個樣本屬於正樣本的概率值,假如我們已經得到了所有樣本的概率輸出(屬於正樣本的概率),現在的問題是如何改變「discrimination threashold」?我們根據每個測試樣本屬於正樣本的概率值從大到小排序。下圖是乙個示例,圖中共有20個測試樣本,「class」一欄表示每個測試樣本真正的標籤(p表示正樣本,n表示負樣本),「score」表示每個測試樣本屬於正樣本的概率

然後我們按照樣本的score值,從大到小依次作為閾值,當樣本score值大於等於閾值時則判定為正樣本,否則為負樣本。

例如第乙個閾值取0.9,這時只有id=1的樣本被**為正樣本,其餘都是負樣本,此時tpr=1/1+9=0.1, fpr=0/0+10=0,

當我們將threshold設定為1和0時,分別可以得到roc曲線上的(0,0)和(1,1)兩個點。將這些(fpr,tpr)對連線起來,就得到了roc曲線。當threshold取值越多,roc曲線越平滑。

2.2 計算auc值

auc(area under curve)被定義為roc曲線下的面積,顯然這個面積的數值不會大於1。又由於roc曲線一般都處於y=x這條直線的上方,所以auc的取值範圍在0.5和1之間。使用auc值作為評價標準是因為很多時候roc曲線並不能清晰的說明哪個分類器的效果更好,而作為乙個數值,對應auc更大的分類器效果更好.

可以看到auc應該理解為對隨機取出乙個正樣本和乙個負樣本,模型**正樣本為正樣本的概率大於**負樣本為正樣本的概率的概率值。

可能不太好理解這句話,那我們還是用上面的例子來說明,假設二分類模型a要找到所有正樣本,對20個樣本的**概率根據概率值大小得到乙個排序,我們希望有盡可能多的正樣本排在負樣本前面,最好的模型當然是所有的正樣本都排在負樣本前,但這種分類器要不就是過擬合要不就不存在,當有越多正樣本排在負樣本前的時候,我們得到的roc曲線上的點的分布會越靠近y軸(fpr=0)和y=1(tpr=1)這兩條線,顯然這時候曲線下的面積值(auc) 會越接近於1,這個時候我們再看上面對auc的理解這句話,隨機取出乙個正樣本和乙個負樣本,

如果auc值大,當然會有更多的正樣本被更大概率**準確,負樣本被**為正樣本的概率也會越小。

2.3 為什麼要用roc曲線

既然已經這麼多評價標準,為什麼還要使用roc和auc呢?因為roc曲線有個很好的特性:當測試集中的正負樣本的分布變化的時候,roc曲線能夠保持不變。在實際的資料集中經常會出現類不平衡(class imbalance)現象,即負樣本比正樣本多很多(或者相反),而且測試資料中的正負樣本的分布也可能隨著時間變化。下圖是roc曲線和precision-recall曲線的對比:

分類模型效果評估指標

1 準確率 精確率 召回率 f1 score 我們以分類演算法為例,假設班裡有50個同學,其中男生30個,女生20個,我們根據身高 體重 頭髮長度 聲音分貝等等特徵,想找到所有女生,比如已經有這樣乙個分類器了,得到結果如下 這裡我們是要找到所有女同學,故把女同學作為正樣本 positive 男同學作...

機器學習 模型評估指標

from sklearn.metrics import accuracy score print 準確率 accuracy score y true,y pred,normalize true print 正確分類的數量 accuracy score y true,y pred,normalize ...

機器學習 分類模型的評估

estimator.score 混淆矩陣 在分類任務下,結果與正確標記之間存在四種不同的組合,構成混淆矩陣 適用於多分類 貓 混淆矩陣 狗 混淆矩陣 評估標準 準確率 精確率和召回率。精確率 結果為正例樣本中真實為正例的比例 查的準 召回率 真實為正例的樣本中 結果為正例的比例 查的對,對正樣本的區...