模型評估與過擬合
性能度量
我們在進行對學習器泛化能力評估的同時,不僅需要有效的評估方法,還需要一個好的衡量模型泛化能力的評價標準。我們先來學習一下在分類算法中經常用到的模型評價指標。
準確率(Accuracy)
分類正確的樣本個數佔總樣本個數的比例。
其中就是被分類正確的樣本數,是總樣本的個數。
精確率(Precision)
分類正確的正樣本個數佔分類器判定爲正樣本的個數的比例。
其中表示分類正確的正樣本的個數,表示被分類器判定爲正樣本的個數。
召回率(Recall)
分類正確的正樣本個數佔真實正樣本的個數的比例。
其中表示分類正確的正樣本的個數,表示真實正樣本個數的比例。
F1 score
F1 score可以認爲是精確率和召回率的調和平均值。
混淆矩陣
對於二分類問題我們可以將樣例根據其真實類別與學習器預測類別的組合劃分爲真正例(True Positive)、假正例(False Positive)、真反例(True negative)、假反例(False negative),混淆矩陣如下表示:
在混淆矩陣下對精確率P和召回率R的定義如下:
對於精確率和召回率,其實是一對矛盾的度量,一般來說,精確率高時,召回率往往偏低,而召回率高時,精確率往往偏低。
ROC曲線(Receiver Operating Characteristic Curve)
關於ROC曲線中一個點的計算
ROC曲線經常作爲評估2分類的重要指標,該曲線是2維平面內的曲線,其橫座標爲假陽性率(FPR),縱座標爲真陽性率(TPR),二者的計算方式如下:
- P:真實的正樣本的數量
- N:真實的副樣本的數量
- TP:P個正樣本中被分類器預測爲正樣本的個數
- FP:N個副樣本中被分類器預測爲正樣本的個數
舉個例子:
假設有10個人疑似感冒了,其中有3人確實是感冒了(P=3),另外的7個人沒有感冒(N=7)。醫院對這10位患者做了診斷,診斷出3個感冒的人,其中有2個人確實是感冒了(TP=2)。那麼真陽性率。對於7位沒感冒的人來說,有一位被誤診爲感冒(FP=1),那麼假陽性率。
此時上述的結果就可以看作是ROC曲線中的一個點。
如何繪製ROC曲線
ROC曲線實際上是通過不斷的移動分類器的截斷點來生成曲線上的關鍵點的。
我們首先要對樣本的預測概率從高到低進行排序,在輸出最終的正例、負例之前我們需要指定一個閾值,預測概率大於該閾值的樣本會被判爲正例,小於該閾值的樣本會被判爲負例。
樣本序號 | 真實標籤 | 輸出概率 |
---|---|---|
1 | p | 0.9 |
2 | p | 0.8 |
3 | n | 0.7 |
4 | p | 0.6 |
5 | p | 0.55 |
6 | p | 0.54 |
7 | n | 0.53 |
8 | n | 0.52 |
9 | p | 0.51 |
10 | n | 0.505 |
11 | p | 0.4 |
12 | n | 0.39 |
13 | p | 0.38 |
14 | n | 0.37 |
15 | n | 0.36 |
16 | n | 0.35 |
17 | p | 0.34 |
18 | n | 0.33 |
19 | p | 0.3 |
20 | n | 0.1 |
就本例來說,當截斷點選擇爲正無窮時,模型把全部樣本預測爲負例,那麼FP和TP必然都爲0,FPR和TPR也都爲0,因此曲線的第一個點的座標就是 (0,0)。當把截斷點調整爲0.9時,模型預測1號樣本爲正樣本,並且該樣本確實 是正樣本,因此,TP=1,20個樣本中,所有正例數量爲P=10, 故;這裏沒有預測錯的正樣本,即FP=0,負樣本總數N=10, 故,對應ROC曲線上的點(0,0.1)。依次調整截斷點,直到畫出全部的關鍵點,再連接關鍵點即得到最終的ROC曲線,如下圖所示:
AUC(Area Under Curve)
說完了繪製ROC曲線,那麼如何來計算AUC呢?
根據名稱我們就可以知道,AUC就是在計算ROC曲線下方的面積,該值能夠量化的反映基於ROC曲線衡量出的模型性能。由於ROC的曲線一般都處於Y=X這條直線的上方(若果不是的化把概率反轉變成1-p即可成爲更好的分類器),所以AUC的取值一般在0.5-1之間。AUC越大,說明分類器越可能把真正的正樣本排在前面,分類性能越好。
P-R曲線(Precision-Recall)
P-R曲線的存在是爲了進行精確率和召回率的衡量,P-R曲線顧名思義P就代表精確率而R就是召回率,在P-R曲線中橫軸是召回率,縱軸是精確率。對於一個排序模型來說,其P-R曲線上的一個點代表着,在某一閾值下,模型將大於該閾值的結果判定爲正樣本, 小於該閾值的結果判定爲負樣本,此時返回結果對應的召回率和精確率,整條P-R 曲線是通過將閾值從高到低移動而生成的。下圖中,其中實線代表 模型A的P-R曲線,虛線代表模型B的P-R曲線。原點附近代表當閾值最大時模型的 精確率和召回率。
由圖可見,當召回率接近於0時,模型A的精確率爲0.9,模型B的精確率是1, 這說明模型B得分前幾位的樣本全部是真正的正樣本,而模型A即使得分最高的幾 個樣本也存在預測錯誤的情況。並且,隨着召回率的增加,精確率整體呈下降趨 勢。但是,當召回率爲1時,模型A的精確率反而超過了模型B。這充分說明,只用 某個點對應的精確率和召回率是不能全面地衡量模型的性能,只有通過P-R曲線的 整體表現,才能夠對模型進行更爲全面的評估。
偏差與方差
偏差:描述的是預測值(估計值)的期望與真實值之間的差距。偏差越大,越偏離真實數據。
方差:描述的是預測值的變化範圍,離散程度,也就是離其期望值的距離。方差越大,數據的分佈越分散。
下圖中展示高(低)偏差和高(低)方差對應的數據分佈情況。