機器學習效能衡量指標

CYH_job發表於2017-05-02

評價演算法優秀程式的時候,常用一系列指標來衡量,主要包括:Precision,Recall,F-1 Score,為什麼要設計這些值?單單用Precision不行嗎?

第一種解釋:

1, 什麼是Precision ?

Precison,準確度,主要表示檢測出的Alert中有多少是正確的判斷(True Positive,TP)。

實際使用中,由於樣本中正常資料和異常資料的比例不同,準確性可能不能體現真實的演算法效能,舉個例子:

癌症檢測:假定99.5%的人是健康的,0.5%的人患有癌症。

錯誤檢測演算法:簡單所有患者都判斷為健康的。

準確性:上述演算法準確性為99.5% !!只有0.5%的不健康的人被誤判為健康。

 

2, 為什麼用Recall ?

上例中一種明顯錯誤的檢測演算法可以輕鬆達到99.5%的準確度,所以準確性不能全面衡量演算法優秀程度,為此設立了Recall值來衡量。

Recall,召喚率,異常資料被檢測出來的比例。Recall = TP/(TP+FN)

在上例中,Recall就是0,沒有異常值能夠被檢測出來。

 

3, 為什麼用F-1 Score ?

將Precision和Recall結合起來就可以更綜合衡量演算法的優秀程度,F-1就是這樣一個指標:

F-1 Score = 2*Precision*Recall /(Precision+Recall)

注:不能簡單對Precision和Recall求均值(Average),上面那個明顯錯誤的例子,Precision = 0.995, Recall = 0, 均值有0.5,明顯不合理。

而採用F-1Score,F1依然是0,更合理。

第二種解釋:

1. 四個概念定義:TP、FP、TN、FN

先看四個概念定義: 
- TP,True Positive 
- FP,False Positive 
- TN,True Negative 
- FN,False Negative

如何理解記憶這四個概念定義呢?

舉個簡單的二元分類問題 例子:

假設,我們要對某一封郵件做出一個判定,判定這封郵件是垃圾郵件、還是這封郵件不是垃圾郵件?

如果判定是垃圾郵件,那就是做出(Positive)的判定; 
如果判定不是垃圾郵件,那就做出(Negative)的判定。

True Positive(TP)意思表示做出Positive的判定,而且判定是正確的。因此,TP的數值表示正確的Positive判定的個數。 
同理,False Positive(TP)數值表示錯誤的Positive判定的個數。 
依此,True Negative(TN)數值表示正確的Negative判定個數。 
False Negative(FN)數值表示錯誤的Negative判定個數。

2. Precision、Recall、Accuracy、F1 Score(F Score)

四個概念定義:

precision = TP / (TP + FP)
recall = TP / (TP + FN)
accuracy = (TP + TN) / (TP + FP + TN + FN)
F1 Score = P*R/2(P+R),其中P和R分別為 precision 和 recall
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

如果某個二元分類問題,訓練擬合得到了幾個模型假設,那麼通常我們選擇在驗證集上,F1 Score 數值最大的那個模型假設。


相關文章