項目地址:https://github.com/Daya-Jin/ML_for_learner/tree/master/metrics
原博客:https://daya-jin.github.io/2019/03/27/Evaluation_Metircs/
概述
前文已經提過評估模型的一些方法,包括偏差方差分解以及交叉驗證等。那麼在模型評估時更具體的一些指標有哪些呢?
Classification
Accuracy
準確率(accuracy)是在分類任務中最常用的一種性能度量指標,準確率逐一對比真實值與預測值是否相等,對相等的值進行計數,求出真實值與預測值相等的一個比率。計算公式如下:
Log-loss
對於二分類任務,特別是在logistic regression中,由最大似然法可以得出一個交叉熵損失函數:
當然,作爲損失函數,該值應該是越小越好。
Precision
精確率(precision)是衡量分類器性能的另一指標,但是該指標只關注模型對某一特定類別的分類性能。假設我們關注的類別爲,首先引入幾個概念:
- True Positive: 模型預測爲,正確標籤也爲,即該標籤下預測正確的樣本數
- False Positive: 模型預測爲,正確標籤不爲,即該標籤下預測錯誤的樣本數
- False Negative: 模型預測不爲,正確標籤爲,即該標籤下漏預測的樣本數
精確率的計算公式爲:
由計算公式不難得出精確率的意義:模型預測結果中某一指定類的準確率。
Recall
召回率(recall)是衡量分類器另一性能的一種指標,其計算公式爲:
由計算公式不難得出召回率的意義:針對數據中某一特定類別的樣本,模型預測出了多少,相當於模型找出了多少。
F1-score
可以看出無論是精確率還是召回率,它們都只是從不同的角度來衡量分類器的效果,前者從預測結果出發,後者從訓練數據出發。那麼如何設立指標來如何綜合評價一個分類器的好壞?F1分數(F1-score)可以實現這個目的。
由於precision與recall都是針對一個特定的類別計算的,所以F1分數有幾個變種:
- micro-F1: 對所有類別的TP,FP,FN求和,使用加和的TP,FP,FN計算得到一個F1分數
- macro-F1: 分別計算所有類別下的F1分數,然後再計算平均F1分數
- weighted-F1: 分別計算所有類別下的F1分數,然後根據類分佈概率計算加權平均F1分數
ROC
受試者工作特徵曲線(Receiver Operating Characteristic curve),可用於評估二分類模型。首先明確幾個概念:
- 假正例率(False Positive Rate):計算方式爲,意爲模型把負樣本預測爲正樣本的概率
- 真正例率(True Positive Rate):計算方式爲,意爲模型把正樣本預測爲正樣本的概率
ROC曲線即令FPR爲橫軸、TPR爲縱軸繪製出的曲線。由上述定義不難看出,完美模型應當滿足而。而實際上對於那些輸出概率的二分類模型,如logistic regression,其預測的輸出值是由設定的閾值決定的(通常情況下爲0.5)。在不同的設定閾值下,二分類模型會有不同的FPR與TPR,那麼通過不斷設定不同的閾值,就會得到一系列FPR與TPR,即可繪製出該二分類模型的ROC曲線。
有了ROC曲線之後,就可以計算一個數值指標:曲線下面積(AUC)。可以證明,AUC的實際含義爲:隨機抽出一個正負樣本對,模型對正樣本的預測概率比負樣本要大的概率:
那麼對於AUC的計算,可以通過遍歷所有樣本對,然後計算出以上概率即可。有一個利用ranking性質的簡便計算公式,假如總共有個樣本,其中個正樣本,個負樣本,首先按照模型對各樣本的預測概率做排序。那麼對於rank爲(概率最大)的正樣本,跟它組合的所有個樣本的概率都要小於它,但是這個樣本中包含了個正樣本,需要排除。
對於rank爲的正樣本,滿足條件的正負樣本對數爲;對於rank爲的正樣本,滿足條件的正負樣本對數爲;以此類推,可以得到:
其中爲逆序rank值,只是爲了書寫簡便。