我們都知道機器學習要建模,但是對於模型性能的好壞我們並不知道是怎樣的,很可能這個模型就是一個差的模型,對測試集不能很好的預測。那么如何知道這個模型是好是壞呢?必須有個評判的標准,需要用某個指標來衡量,這就是性能度量的意義。有了一個指標,就可以對比不同模型了,從而知道哪個模型更好,或者通過這個指標來調參優化選用的模型。
對於分類、回歸、聚類等,分別有各自的評判標准。本篇主要介紹二分類算法(多分類可以擴展轉化成二分類)的相關指標。評估一個二分類的分類器的性能指標有:准確率、查准率、查全率、F1值、AUC/ROC。前面幾個比較直觀,AUC/ROC相對抽象一點。經常會以AUC/ROC為代表來考察對分類算法指標的認知程度:什么是AUC/ROC?橫軸縱軸都代表什么?有什么優點?為什么要使用它?不是因為它的復雜度更高,主要是它對項目場景的衡量更貼切。
背景介紹-混淆矩陣與常規定義
對於二分類模型,預測情況與實際情況會得出2*2=4種組合,形成混淆矩陣:
預測正例 | 預測反例 | |
---|---|---|
實際正例 | TP: True Positive | FN: False Negative |
實際反例 | FP: False Positive | TN: True Negative |
真正(True Positive , TP):被模型預測為正的正樣本
假正(False Positive , FP):被模型預測為正的負樣本
假負(False Negative , FN):被模型預測為負的正樣本
真負(True Negative , TN):被模型預測為負的負樣本
真正率(True Positive Rate,TPR):TPR=TP/(TP+FN),即被預測為正的正樣本數 /正樣本實際數
假正率(False Positive Rate,FPR) :FPR=FP/(FP+TN),即被預測為正的負樣本數 /負樣本實際數
假負率(False Negative Rate,FNR) :FNR=FN/(TP+FN),即被預測為負的正樣本數 /正樣本實際數
真負率(True Negative Rate,TNR) :TNR=TN/(TN+FP),即被預測為負的負樣本數 /負樣本實際數
性能指標
准確率(Accuracy): Accuracy = (TP+TN)/(TP+FN+FP+TN)
即正確預測的正反例數 /預測總數。准確率是預測正確的結果占總樣本的百分比,
是很自然就會想到的指標,但很多項目場景都不適用!最主要的原因是樣本不平衡。舉個簡單的例子,比如在一個總樣本中,正樣本占90%,負樣本占10%,樣本是嚴重不平衡的。對於這種情況,我們只需要將全部樣本預測為正樣本即可得到90%的高准確率,但實際上我們並沒有很用心的分類,只是隨便無腦一分而已。這就說明了:由於樣本不平衡的問題,導致了得到的高准確率結果含有很大的水分。
即如果樣本不平衡,准確率就會失效。
精確率(Precision): Precision = TP/(TP+FP)
即正確預測的正例數 /預測正例總數。可理解為查准率。在預測為正的記錄中,有多少實際為正?
召回率(Recall): Recall = TP/(TP+FN)
即正確預測的正例數 /實際正例總數 。可理解為查全率。在實際為正的記錄中,有多少預測為正?
F1 score : 2/F1 = 1/Precision + 1/Recall
精確率和召回率的調和值。由於Precision和Recall是一對不可調和的矛盾,很難同時提高二者,也很難綜合評價。故提出F1來試圖綜合二者,F1是P和R的調和平均。F1更接近於兩個數較小的那個,所以精確率和召回率接近時值最大。很多推薦系統會用的評測指標。
ROC曲線: 以假正率FPR為橫軸,以真正率TPR為縱軸,繪制的曲線
FPR表示模型虛報的響應程度,而TPR表示模型預測響應的覆蓋程度。我們希望:虛報的越少越好,覆蓋的越多越好。總結一下就是FPR越低TPR越高(即ROC曲線越陡),那么模型就越好。ROC曲線無視樣本不平衡。
畫曲線的用意是:用假正率與真正率的變化趨勢,來觀察模型是否能在較低的假正率下得到較高的真正率。
AUC: Area under the ROC curve
繪制ROC曲線時,橫軸縱軸都是0~1,形成一個1*1的正方形。AUC就是在這個正方形里ROC曲線圍成的面積。
如果連接正方形的對角線,它的面積正好是0.5。對角線的實際含義是:隨機判斷響應與不響應,正負樣本覆蓋率都是50%,即AUC =0.5表示隨機分類器。AUC < 0.5表示差於隨機分類器,沒有建模價值;AUC = 1表示完美分類器,不存在;0.5 < AUC < 1,優於隨機分類器,大多模型都在這個區間里。
AUC的一般判斷標准
0.5 - 0.7:效果較低,但用於預測股票已經很不錯了
0.7 - 0.85:效果一般
0.85 - 0.95:效果很好
0.95 - 1:效果非常好,但基本不太可能
場景決定指標
指標沒有單純的誰比誰好,選擇指標還是要結合具體的使用場景。比如:
嫌疑人定罪:基於不錯怪一個好人的原則,有時候放過一些嫌疑人也是值得的。寧漏,不錯。
地震的預測:情願發出100次警報10次都沒漏,也不要發出10次警報對了8次漏了2次。寧錯,不漏。
在地震場景中可以只看Recall=99.99999%(地震全中)時的Precision,其他指標就變得沒有了意義。
學習參考:
https://www.cnblogs.com/zongfa/p/9431807.html 綜合性介紹
https://www.jianshu.com/p/7b3cc8e44096 非AUC/ROC示例好理解
https://www.jianshu.com/p/f07a79dfeb1d AUC/ROC的講解更清晰