評估指標Evaluation Metrics

項目地址:https://github.com/Daya-Jin/ML_for_learner/tree/master/metrics
原博客:https://daya-jin.github.io/2019/03/27/Evaluation_Metircs/

概述

前文已經提過評估模型的一些方法,包括偏差方差分解以及交叉驗證等。那麼在模型評估時更具體的一些指標有哪些呢?

Classification

Accuracy

準確率(accuracy)是在分類任務中最常用的一種性能度量指標,準確率逐一對比真實值與預測值是否相等,對相等的值進行計數,求出真實值與預測值相等的一個比率。計算公式如下:

acc=1ni=1nI(y(i)=y^(i)) acc=\frac{1}{n}\sum\limits_{i=1}^{n}I(y^{(i)}=\hat{y}^{(i)})

代碼

Log-loss

對於二分類任務,特別是在logistic regression中,由最大似然法可以得出一個交叉熵損失函數:

loss=in[y(i)ln(y^(i))+(1y(i))ln(1y^(i))] loss=-\sum\limits_{i}^{n}[y^{(i)}\ln(\hat{y}^{(i)})+(1-y^{(i)})\ln(1-\hat{y}^{(i)})]

當然,作爲損失函數,該值應該是越小越好。

代碼

Precision

精確率(precision)是衡量分類器性能的另一指標,但是該指標只關注模型對某一特定類別的分類性能。假設我們關注的類別爲11,首先引入幾個概念:

  • True Positive: 模型預測爲11,正確標籤也爲11,即該標籤下預測正確的樣本數
  • False Positive: 模型預測爲11,正確標籤不爲11,即該標籤下預測錯誤的樣本數
  • False Negative: 模型預測不爲11,正確標籤爲11,即該標籤下漏預測的樣本數

精確率的計算公式爲:

precision=TPTP+FP precision=\frac{TP}{TP+FP}

由計算公式不難得出精確率的意義:模型預測結果中某一指定類的準確率。

Recall

召回率(recall)是衡量分類器另一性能的一種指標,其計算公式爲:

recall=TPTP+FN recall=\frac{TP}{TP+FN}

由計算公式不難得出召回率的意義:針對數據中某一特定類別的樣本,模型預測出了多少,相當於模型找出了多少。

F1-score

可以看出無論是精確率還是召回率,它們都只是從不同的角度來衡量分類器的效果,前者從預測結果出發,後者從訓練數據出發。那麼如何設立指標來如何綜合評價一個分類器的好壞?F1分數(F1-score)可以實現這個目的。

F1=precisionrecallprecision+recall F1=\frac{precision*recall}{precision + recall}

由於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):計算方式爲FPR=FPNFPR=\frac{FP}{N},意爲模型把負樣本預測爲正樣本的概率
  • 真正例率(True Positive Rate):計算方式爲TPR=TPPTPR=\frac{TP}{P},意爲模型把正樣本預測爲正樣本的概率

ROC曲線即令FPR爲橫軸、TPR爲縱軸繪製出的曲線。由上述定義不難看出,完美模型應當滿足FPR=0FPR=0TPR=1TPR=1。而實際上對於那些輸出概率的二分類模型,如logistic regression,其預測的輸出值是由設定的閾值決定的(通常情況下爲0.5)。在不同的設定閾值下,二分類模型會有不同的FPR與TPR,那麼通過不斷設定不同的閾值,就會得到一系列FPR與TPR,即可繪製出該二分類模型的ROC曲線。

有了ROC曲線之後,就可以計算一個數值指標:曲線下面積(AUC)。可以證明,AUC的實際含義爲:隨機抽出一個正負樣本對,模型對正樣本的預測概率比負樣本要大的概率:

AUC=P(Ppos>Pneg) AUC=P(P_{pos}>P_{neg})

那麼對於AUC的計算,可以通過遍歷所有樣本對,然後計算出以上概率即可。有一個利用ranking性質的簡便計算公式,假如總共有nn個樣本,其中MM個正樣本,NN個負樣本,首先按照模型對各樣本的預測概率做排序。那麼對於rank爲11(概率最大)的正樣本,跟它組合的所有n1n-1個樣本的概率都要小於它,但是這n1n-1個樣本中包含了M1M-1個正樣本,需要排除。

對於rank爲11的正樣本,滿足條件的正負樣本對數爲n1(M1)n-1-(M-1);對於rank爲22的正樣本,滿足條件的正負樣本對數爲n2(M2)n-2-(M-2);以此類推,可以得到:

AUC=P(Ppos>Pneg)=iposreversed_rankiM(M+1)2MN AUC=P(P_{pos}>P_{neg})=\frac{\sum\limits_{i{\in}pos}reversed\_rank_{i}-\frac{M(M+1)}{2}}{M*N}

其中reversed_rankireversed\_rank_{i}爲逆序rank值,只是爲了書寫簡便。

實現指導

完整代碼

Clustering

Regression

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章