導讀
通常我們在解決某個問題的時候,會設計多種分類算法在訓練的時候我們還會調節各種超參以及使用各種trick以獲取最優的分類模型,那這時候我們應該如何來衡量這個最優呢?
分類算法的評估指標有很多種,選擇使用哪一種評估指標,應該根據實際情況來進行選擇,而不能一概而定。
混淆矩陣
我們先來了解一下混淆矩陣,后面的分類評估指標其實都是在這個基礎上發展而來,理解了這個,再去學習后面的評估指標就很簡單了。
混淆矩陣(confusion matrix):是機器學習領域和統計分類問題中常用的可視化工具,從名字上不能看出其實它就是一個矩陣,它主要由兩個維度組成實際類別和預測類別。矩陣的每一列代表一個類的實例預測,而每一行表示一個實際的類的實例。之所以如此命名,是因為通過這個矩陣可以方便地看出機器是否將兩個不同的類混淆了(比如說把一個類錯當成了另一個)。下面我們來看一個貓狗分類的實例
混淆矩陣
上面的表格很簡潔的展示了分類模型的預測結果,一共預測了8只貓和5只狗,其中5只貓和3只狗預測正確,3只貓和2只狗預測錯誤。表格中的對角線元素表示預測正確,對角線之外均表示預測錯誤,下面我們用專業的術語來描述預測結果:
- 真正例(True Positives)簡稱TP: 被正確地劃分為正例的個數,即實際為正例且被分類器劃分為正例的實例數
- 假正例(False Positives)簡稱FP:被錯誤地劃分為正例的個數,即實際為負例但被分類器劃分為正例的實例數
- 真負例(True Negatives)簡稱TN:被正確地劃分為負例的個數,即實際為負例且被分類器劃分為負例的實例數
- 假負例(False Negatives)簡稱FN:被錯誤地劃分為負例的個數,即實際為正例但被分類器劃分為負例的實例數
對上面的術語做一個說明幫助大家記憶和理解:
上面中的True和False表示的是樣本的真實標簽,Positives和Negatives表示的是模型的預測標簽。
樣本實際的正例數:P=TP+FN
樣本實際的負例數:N=TN+FP
分類算法中的評估指標
- 正確率(accuracy)
正確率是我們常用的分類指標,計算公式如下
正確率是指分類算法預測正確的樣本在總樣本中所占的比例,一般來說,正確率越大表示分類算法的效果越好
- 錯誤率(error)
錯誤率是指分類算法預測錯誤的樣本在總樣本中所占的比例,計算公式如下
對于某一個實例來說,分對和分錯是一個互斥事件,accuracy+error=1
- 召回率(recall)
召回率也被稱為靈敏度(sensitivity),指分類正確的正例在正例中所占的比例
- 精度(precision)
精度是精確性的度量,表示被分為正例中實際為正例所占的比例
- 特異性(specificity)
表示的是所有負例中被分對的比例,衡量了分類器對負例的識別能力
- F1-Score
有的時候我們需要結合多個指標來評估算法的效果,而F1-Score就是綜合考慮了recall和precision兩個指標,因此F1-score也被稱為綜合分類率。計算公式如下
- ROC曲線
ROC曲線是(Receiver Operating Characteristic Curve,受試者工作特征曲線)的簡稱,是以靈敏度(真陽性率)為縱坐標,以1減去特異性(假陽性率)為橫坐標繪制的性能評價曲線。可以將不同模型對同一數據集的ROC曲線繪制在同一笛卡爾坐標系中,ROC曲線越靠近左上角,說明其對應模型越可靠。也可以通過ROC曲線下面的面積(Area Under Curve, AUC)來評價模型,AUC越大,模型越可靠。
- PR曲線
PR曲線是Precision Recall Curve的簡稱,描述的是precision和recall之間的關系,以recall為橫坐標,precision為縱坐標繪制的曲線。該曲線的所對應的面積AUC實際上是目標檢測中常用的評價指標平均精度(Average Precision, AP)。AP越高,說明模型性能越好。
分類算法中常見的問題
- 正確率指標能很好的評估分類模型嗎?
不一定。例如我們想開發一個地震警報器,當地震要來臨時提前發送警報讓大家避險。而我們知道,實際上地震發生的次數很少,也許100次中可能只有1次地震,甚至更低,這里為了方便計算。如果此時,我們的預測器將這100次的預測結果都預測為不會發生地震,那我們的預測器的正確率有99%。
雖然,這個預測器的正確率很高,但是實際上它不會產生任何的商業價值,其實也就沒任何使用價值。實際上我們需要預測正確的正是那一次的地震。
針對這種情況我們更希望是recall指標盡可能的高,而不是正確率。所以,對于分布不平衡的數據來說并不是正確率越高越好,應該根據實際需求來選擇評估指標。
- 如何繪制ROC曲線?
在現實任務中,我們只是對有限個測試樣本進?繪制ROC圖,此時只能獲得有限個(假正例率,真正例率)坐標對,就?法獲得如(a)的光滑的ROC曲線,就會獲得如圖(b)的近似的ROC曲線。
繪圖過程如下:給定m1個正例和m2個反例,根據模型預測結果(正例的概率)對樣例進?排序,然后把分類閾值設置為最?,即把所有樣例都預測為反例,此時真正例率和假正例率都為0,在坐標(0, 0)處標記?個點,然后將分類閾值依次設置為每個樣例的預測值,即依次將每個樣例設置為正例,若前?個標記點坐標為(x, y),當前若為真正例,則對應標記點坐標為(x, y+1/m1);若當前為假正例,則對應標記點坐標為(x+1/m2, y),然后?線段連接相鄰的點。