1. 程式人生 > >27-如何度量分類算法的性能好壞(Scoring metrics for classification)

27-如何度量分類算法的性能好壞(Scoring metrics for classification)

清晰 如果 hold 同時 under 實踐 能力 nfs 一個數

最近兩天擁抱了北京這個城市,感覺大氣粗獷,整個人都更有精神了。紫禁城好大,頤和園更大,不自量力的我買了聯票,結果根本沒法逛完。北京人民也熱情,坐在船上,開船大爺不停招呼:這邊可以拍十七孔橋了,視野好面積大;那邊可以拍玉帶橋了;坐著我幫你拍幾張;你手托著塔,自然點沒事。然後走在路上,問一個姑娘東宮門在哪呢,一個走路風風火火的大媽不打自招:就在前面右拐……北京人民的熱情,足以抵禦漫長的寒冬。

回來也要好好學習了,今天學習度量分類算法的性能好壞的幾個重要指標:)

首先申明下縮寫:P: Positive; N: Negative; TP: True Positive; FP: False Positive; TPR: True Positive Rate; TN, FN, FPR:你懂的。

1. 準確率(accuracy)

對於給定的測試數據集,分類器正確分類的樣本數與總樣本數之比。

A = (TP + TN)/(P+N) = (TP + TN)/(TP + FN + FP + TN); 反映了分類器統對整個樣本的判定能力——能將正的判定為正,負的判定為負。

技術分享

技術分享

2. 混淆矩陣(confusion matrix)

技術分享

技術分享

技術分享

3. 精確率(Precision), 召回率(Recall)和F1-Measure

精確率(Precision):

PRE = TP/(TP+FP) ; 反映了被分類器判定的正例中真正的正例樣本的比重。

召回率(Recall),也稱為 True Positive Rate:

REC = TP/(TP+FN) ; 反映了被正確判定的正例占總的正例的比重。

F1-Measure,可以理解為精確率和召回率的幾何平均:

F1 = 2 * PRE * REC/ (PRE+REC);

技術分享

另外一個有用的函數是classification_report,它對所有分類類別(y的所有取值)都提供了精確率, 召回率, fscore計算 。

技術分享

以上幾個metrics特別適用於實踐中經常遇到的兩種情況:

1.不平衡的類別:即某一類別比其他類別出現頻率高得多;

2.不對等的代價:即某一分類錯誤比其他分類錯誤需要付出更高的代價(如把癌癥患者判斷為非癌癥,後果不堪設想)。

4. ROC & AUC

首先理解兩個公式:

TPR = TP / (TP + FN) —— 可以理解為對正例的敏感度

FPR = FP / (FP + TN) —— 可以理解為對正例的瞎敏感度

WIKI定義:

The ROC curve is created by plotting the true positive rate (TPR) against the false positive rate (FPR) at various threshold settings.

ROC曲線畫的是當threshold變化時,FPR(x)和TPR(y)的對應關系。當測試樣本是正樣本的概率值大於某個閾值時(常用0.5),即認為它是正樣本,這裏的閾值就是threshold。

舉個例子:如果threshold很低(如0.1),那麽很容易測試樣本是正樣本的概率值>0.1,因此FPR會很高(對正例太敏感),同時TPR也很高,假設 threshold=0.1時,FPR=TPR=1,可以在坐標系中畫第一個點(1,1);同理,隨著threshold的增大,FPR和TPR都會逐漸降低,最後甚至為0。畫出的曲線形狀通常如下:

技術分享

如果分類器效果很好, 那麽曲線應該靠近左上角(TPR大,FPR小)。

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

技術分享

技術分享

技術分享

技術分享

下周學習決策樹,幹貨多多,敬請期待:)

27-如何度量分類算法的性能好壞(Scoring metrics for classification)