機器學習做分類任務得到結果後,往往需要一些名額來評價模型效果,常用到的就有精準率(Precision)、召回率(Recall)和準确率(Accuracy),在不同場景需要看不同名額。
下圖表示的是一個二分類的混淆矩陣:
真實值\預測值 | Positive(1) | Negative(0) |
---|---|---|
Positive(1) | True Positive (TP) | False Positive (FP) |
Negative(0) | False Negative (FN) | True Negative (TN) |
TP,預測是正樣本(1),真實為正樣本(1),預測對了;
FN,預測是負樣本(0),真實為正樣本(1),預測錯了
FP,預測是正樣本(1),真實為負樣本(0),預測錯了;
TN:預測是負樣本(0),真實為負樣本(0),預測對了
精準率(Precision)
精準率(Precision)又稱查準率:預測為正的樣本中真實為正的樣本。
P r e c i s i o n = T P / ( T P + F P ) Precision = TP/(TP+FP) Precision=TP/(TP+FP)
召回率(Recall)
召回率(Recall)又稱查全率:真實為正的樣本中預測為正的樣本。
r e c a l l = T P / ( T P + F N ) recall = TP/(TP+FN) recall=TP/(TP+FN)
準确率(Accuracy)
準确率(Accuracy):預測某類正确的樣本比例
A c c u r a c y = ( T P + T N ) / ( T P + T N + F P + F N ) Accuracy = (TP+TN)/(TP+TN+FP+FN) Accuracy=(TP+TN)/(TP+TN+FP+FN)
舉個栗子
假設銀行有1000個信用卡客戶,其中有10名欺詐使用者。現有一個分類器檢測這1000個信用卡客戶,結果預測出20個欺詐使用者,其中有4名真正的欺詐使用者,另外16名實際上為非欺詐使用者,則混淆矩陣如下:
真實值\預測值 | Positive(1) | Negative(0) |
---|---|---|
Positive(1) | True Positive (TP=4) | False Positive (FP=16) |
Negative(0) | False Negative (FN=6) | True Negative (TN=974) |
則名額值分别為:
Accuracy = (4+974)/1000 = 0.978
Precision = 4/20 = 0.25
Recall = 4/10 = 0.4
案例中可以發現,盡管分類器的準确率達到了97.8%,但是如果建立模型目的是盡可能找出隐藏在1000名客戶中的欺詐客戶,則這個分類器并不好。預測為欺詐且真實為欺詐的比率(Precision)僅為25%,真實為欺詐預測為欺詐的比率(Recall)僅為40%,這個比例對銀行而言是不夠好的,可能因為漏判了60%的欺詐客戶,導緻銀行出現比較嚴重的違約可能,造成較大的損失。
總結
模型整體預測效果看Accuracy(準确率);在預測欺詐、違約、流失客戶時需要看Recall(召回率),召回率越高,說明模型更能夠識别欺詐、違約客戶。想要知道分類器某個分類的準确性則使用Precision(精确率)。