分类器的性能评估
分類器的性能評估
2016-04-23 22:47?597人閱讀?評論(0)?收藏?舉報 ?分類: 機器學習(2)?目錄(?)[+]
?本文轉載于http://funhacks.NET/2015/08/12/classifier-evaluation/
感謝原作者的分享
1. 背景
當我們使用一個分類器進行預測時,我們會遇到一個很重要的問題:如何評價這個分類器的預測效果?這里我構造一個場景作為例子來說明。
現在有10個人,其中1個人有感冒癥狀,9個人沒有感冒癥狀。現在讓醫生進行診斷,判斷哪些人有感冒,哪些人沒有?
醫生A的診斷結果是:原本有感冒的那個人被診斷為沒有感冒,而沒有感冒的9個人當中有8個人被正確判定,有1個人被誤診為有感冒。
在這個例子中,醫生就相當于一個分類器,我們現在要對他的診斷結果進行評估。通常情況下,我們可能會使用準確率(accuracy)對預測效果進行評估,準確率被定義為:對于給定的測試數據集,分類器正確分類的樣本數與總樣本數之比。
因此,醫生A的正確率為:8/10=80%8/10=80%。
假設另外一個醫生B,他未經思考,將所有人都判定為沒有感冒,而他的準確率為:9/10=90%9/10=90%。顯然,僅僅通過準確率來評估醫生的診斷結果是不靠譜的,這時,我們就需要使用其他指標進行評估了。在本文中,我們主要討論二分類器的性能評估。
2. 混淆矩陣
混淆矩陣(Confusion Matrix)用于把實際樣本值(true class)和模型預測值(predicted class)進行聯列表分析。在二類分類的問題中,我們一般會把樣本分為正類(或正例)和負類(負例),正類通常指我們在分類問題中所關注的類,比如在上面的例子中,感冒是我們所關注的,因此它是正類。一般我們可以用-1表示負類,+1表示正類。
| -1(預測) | True negative (TN 真負例) | False negative(FN假負例) |
| +1(預測) | False positive(FP假正例) | True positive (TP真正例) |
其中,各個數據的含義如下:
| TN | 模型將負類(實際)預測為負類的樣本數 |
| FN | 模型將正類(實際)預測為負類的樣本數 |
| FP | 模型將負類(實際)預測為正類的樣本數 |
| TP | 模型將正類(實際)預測為正類的樣本數 |
由上面的表格可以知道,實際樣本的的負類數為N=TN+FPN=TN+FP;正類數為P=FN+TPP=FN+TP;總樣本數為C=N+pC=N+p。
對于上面的例子,我們可以用如下表格展示醫生A的診斷結果:
| -1(預測沒有感冒) | 8 (TN 真負例) | 1(FN假負例) |
| +1(預測有感冒) | 1(FP假正例) | 0 (TP真正例) |
下面,我們給出一些指標的形式化定義:
- 準確率(accuracy)
accuracy=TP+TNP+Naccuracy=TP+TNP+N
準確率用于描述模型正確分類的樣本數與總樣本數之比。 - 精確率(precision)
precision=TPTP+FPprecision=TPTP+FP
精確率用于描述模型預測正確的正樣本數(TP)與模型預測的正樣本數(TP+FP)之比,可以衡量模型預測正樣本的準確性。 - 召回率(recall)
recall=TPTP+FNrecall=TPTP+FN
召回率用于描述模型預測正確的正樣本數(TP)與實際正樣本數(TP+FN)之比,可以衡量模型預測正樣本的可信性。 - F1-measure
精確率和召回率可以合并成為另一個度量,稱為F1F1度量,它是精確率和召回率的調和均值:
2F1=1precision+1recall2F1=1precision+1recall
F1=2TP2TP+FP+FNF1=2TP2TP+FP+FN
F1指標用于綜合考慮精確率和召回率。
3. ROC曲線
除了使用上面的準確率、精確率等指標,針對只關注正例的分類器指標,更常用的是ROC(Receiver Operating Characteristic,受試者特征)曲線和AUC(Area Under Curve)。
在定義ROC之前,我們先定義以下兩個指標:
- False Positive Rate(FRP,假正率)
FRP用于描述在所有實際為負例(N=TN+FP)的樣本中,被錯誤地判斷為正例(FP)的比例,即
FPR=FPFP+TNFPR=FPFP+TN - True Positive Rate(TPR,真正率)
TPR用于描述在所有實際為正例(P=TP+FN)的樣本中,被正確地判斷為正例(TP)的比例,即
TPR=TPTP+FNTPR=TPTP+FN
對于二類分類的問題,一些分類器得到的結果往往不是0,1或-1,+1這樣的標簽,比如邏輯斯諦回歸,它會得到一個概率值,通過與設定的閾值進行比較,可以0,1這樣的標簽。我們改變分類器的閾值,每改變一次,就會得到一對FPRFPR和TPRTPR的值,以FPRFPR為橫軸,TPRTPR為縱軸,就得到如下的ROC空間:
圖片來源:修改自wikipedia
我們可以看出,左上角的點(FPR=0,TPR=1),為完美分類;對角線上方的點(TPR > FPR),比如點A表示分類大體是正確的;而對角線上的點(TPR=FPR),比如點B,表示錯一半,對一半;而對角線下方的點(TPR < FPR),比如點C表示分類大體是錯誤的。ROC曲線距離左上角越近,則分類器的效果越好。使用ROC曲線來衡量所考慮的目的是:在盡量少的”誤診“(假正率FPR)基礎上,盡可能多地檢驗出正例的個體(真正率TPR)。
4. AUC
如果ROC曲線經過點(0,1),即FPR=0,TPR=1,則表示為最優的分類器,然而絕大多數的ROC曲線并非如此,此時可通過引入ROC曲線下的面積AUC(Area Under Curve)來衡量不同模型間ROC曲線的表現情況。AUC面積越大,該模型的ROC曲線表現越好,模型越可用。
- AUC=1AUC=1
完美分類器,能正確將正例和負例進行劃分 - 0.5<AUC<10.5<AUC<1
比隨機猜測好,通過設定一個好的閾值,才能得到好的分類效果 - AUC=0.5AUC=0.5
跟隨機猜測一樣,模型沒有預測價值 - AUC<0.5AUC<0.5
比隨機猜測差,在這種情況下,可以對結果取反
5. 參考資料
- 統計學習方法,李航 著
- http://alexkong.net/2013/06/introduction-to-auc-and-roc/
- https://argcv.com/articles/1036.c
- http://blog.csdn.net/ice110956/article/details/20288239
- 數據挖掘導論,Pang-Ning Tan 等著,范明 等譯
http://blog.csdn.net/genghaihua/article/details/51228859
總結
- 上一篇: matlab绘制X,Y二维散点图并标出序
- 下一篇: 简单线性分类学习机(平分最近点法)mat