分類模型評估


一直對於各種分類器評估的指標有點暈,今天決定琢磨下,並且寫下來,方便以后回憶。

一、混淆矩陣

 

來源於信息論,根據上面的混淆矩陣,有3個指標需要搞清楚,我覺得記公式真的很容易搞混,建議大家都直接記文字加上自己理解就好了。

准確率=正確預測正負的個數/總個數(這個指標在python中的交叉驗證時可以求准確率)

覆蓋率(也叫作召回率)=正確預測正的個數/實際正的個數 (當然也可以是負覆蓋率)

命中率=正確預測正的個數/預測正的個數

以上指標,在Python中提供混淆矩陣的報告

二、ROC

之所以又有ROC曲線,是因為,前面的准確率和召回率存在缺陷。從准確率來說,如果我們關心的是y=1,而恰好y=1的樣本個數又很少,此時用准確率的指標就可能不靠譜了,有個比較好的例子如下:測試樣本中有A類樣本90個,B 類樣本10個。分類器C1把所有的測試樣本都分成了A類,分類器C2把A類的90個樣本分對了70個,B類的10個樣本分對了5個。則C1的分類精度為 90%,C2的分類精度為75%。但是,顯然C2更有用些,因為它分對了我們更關心的B類。

召回率TPR(True Positive Rate) =TP/(TP+FN) = a / (a+b)

取偽率FPR(False Positive Rate) = FP/(FP+TN) = c / (c+d)

ROC空間將取偽率(FPR)定義為 X 軸,召回率(TPR)定義為 Y 軸。

召回率和取偽率是會同時提高和降低的,也就是召回率越高,取偽率肯定也就越高了,比如極端的情況下,我們把左右的樣本都認為y=1那召回率肯定是等於1,而取偽率肯定也會變成1了。

ROC是怎么畫出來的呢,例如在一個二分類模型中,對於所預測得到概率結果,假設已確定一個閾值,比如說 0.6,大於這個值的實例划歸為正類,小於這個值則划到負類中。如果減小閾值,減到0.5,固然能識別出更多的正類,也就是提高了識別出的正例占所有正例的比例,即TPR,但同時也將更多的負實例當作了正實例,即提高了FPR。為了形象化這一變化,在此引入ROC。

雖然,用ROC curve來表示分類器的performance很直觀好用。可是,人們總是希望能有一個數值來標志分類器的好壞。於是AUC就出現了,其值就是處於ROC curve下方的那部分面積的大小。通常,AUC的值介於0.5到1.0之間,較大的AUC代表了較好的模型表現。

三、提升度

  • 正例的比例Pi1 = (a+b) / (a+b+c+d) ;
  • 預測成正例的比例 Depth =  (a+c) / (a+b+c+d) ;
  • 正確預測到的正例數占預測正例總數的比例 PV_plus = a / (a+c) ;
  • 提升值 Lift = (a / (a+c) ) / ((a+b) / (a+b+c+d)) = PV_plus / Pi1

Lift衡量的是,與不利用模型相比,模型的預測能力“變好”了多少。不利用模型,我們只能利用“正例的比例是 (a+b) / (a+b+c+d) ”這個樣本信息來估計正例的比例(baseline model),而利用模型之后,我們不需要從整個樣本中來挑選正例,只需要從我們預測為正例的那個樣本的子集(a+c)中挑選正例,這時預測的准確率為a / (a+c)。

顯然,lift(提升指數)越大,模型的運行效果越好。如果a / (a+c)就等於(a+b) / (a+b+c+d)(lift等於1),這個模型就沒有任何“提升”了(套一句金融市場的話,它的業績沒有跑過市場)。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM