機器學習中的評價指標
??當一個機器學習模型建立好了之后,即模型訓練已經完成,我們就可以利用這個模型進行分類識別。?
正例,所關注的識別目標就是正例。
負例,正例以外就是負例。
?? TP、FN、TN、FP的各自含義(其中T代表True,F(xiàn)代表False,P即Positives,N即Negatives):
? 混淆矩陣
?真實正例真實負例
檢測正例TPFP
檢測反例FNTN
模型性能指標:
1.正確率(Accuracy):也即準確率,識別對了正例和負例占總識別樣本的比例。
通常而言,準確率越高,模型也越好。
S = (TP
+ FP + FN + TN)
A=(TP+TN)/S
2.錯誤率(Error-rate):識別錯了的正例與負例占總識別樣本的比例。
E=(FP+FN)/S
可見,正確率與錯誤率是分別從正反兩個方面進行評估的指標,兩者數(shù)值相加等于1。正確率高,錯誤率就低;正確率低,錯誤率就高。
3.精確度(Precision):識別對了正例占識別出正例的比例,其中識別出的正例等于識別對了正例加上識別錯了的正例。
P=TP/(TP+FP)
精度即為識別目標正確的比例,也稱為查準率。
4.召回率(Recall)
召回率,識別對了正例占實際總正例的比例。其中實際總正例等于識別對了的正例加上識別錯了的負例。(真正例+偽負例)
R=TP/(TP+FN)
在一定意義上來說,召回率也可以說是“找回率”,也就是在實際的60個目標中,找回了40個,找回的比例即為:40/60。同時,召回率也即查全率,即在實際的60個目標中,有沒有查找完全,查找到的比率是多少。
從公式可以看出,精度與召回率都與TP值緊密相關,TP值越大,精度、召回率就越高。理想情況下,我們希望精度、召回率越高越好。但單獨的高精度或高召回率,都不足以體現(xiàn)模型的高性能。
5.精度-召回率曲線(PR曲線)
實際中,精度與召回率是相互影響的,通常,精度高時,召回率就會往往偏低,而召回率高時,精度則會偏低。
精度即查準率,召回率即查全率,要想查得精準(一查一個準),即模型給出的目標都正確,那就得提高閾值門檻,閾值一提高,符合要求的目標就會減少,那必然會導致漏網之魚增多,召回率降低。
相反,若想召回率高,沒有漏網之魚(目標都找到),就要降低閾值門檻,才能把所有目標收入囊中,與此同時會攬入一些偽目標,從而導致精度降低。PR曲線即是以召回率R為橫軸,精度P為縱軸畫出的曲線。
算法對樣本進行分類時,都會有置信度,即表示該樣本是正樣本的概率,比如99%的概率認為樣本是A正例,1%的概率認為樣本B是正例。通過選擇合適的閾值,比如50%,對樣本進行劃分,概率大于50%的就認為是正例,小于50%的就是負例。
通過置信度就可以對所有樣本進行排序,再逐個樣本的選擇閾值,在該樣本之前都屬于正例,該樣本之后就是負例。
曲線出現(xiàn)的一些規(guī)律和一些問題。
根據逐個樣本作為閾值劃分點的方法,可以推敲出,recall值是遞增的(但并非嚴格遞增),隨著劃分點左移,正例被判別為正例的越來越多,不會減少。而精確率precision并非遞減,二是有可能振蕩的,雖然正例被判為正例的變多,但負例被判為正例的也變多了,因此precision會振蕩,但整體趨勢是下降。
另外P-R曲線肯定會經過(0,0)點,比如講所有的樣本全部判為負例,則TP=0,那么P=R=0,因此會經過(0,0)點,但隨著閾值點左移,precision初始很接近1,recall很接近0,因此有可能從(0,0)上升的線和坐標重合,不易區(qū)分。如果最前面幾個點都是負例,那么曲線會從(0,0)點開始逐漸上升。
曲線最終不會到(1,0)點。很多P-R曲線的終點看著都是(1,0)點,這可能是因為負例遠遠多于正例。
最后一個點表示所有的樣本都被判為正例,因此FN=0,所以recall = TP/(TP + FN) = 1, 而FP = 所有的負例樣本數(shù),因此precision = TP/(TP+FP) = 正例的占所有樣本的比例,故除非負例數(shù)很多,否則precision不會為0. 總之,P-R曲線應該是從(0,0)開始畫的一條曲線,切割1*1的正方形,得到一塊區(qū)域。
因此,較合理的P-R曲線應該是(曲線一開始被從(0,0)拉升到(0,1),并且前面的都預測對了,全是正例,因此precision一直是1,)另外,如果有個劃分點可以把正負樣本完全區(qū)分開,那么P-R曲線就是整個1*1的面積。
6.
AP (average precision)值
PR曲線下的面積稱為AP,表示召回率從0-1的平均精度值。PR曲線下的面積越大,模型性能則越好。性能優(yōu)的模型應是在召回率(R)增長的同時保持精度(P)值都在一個較高的水平,而性能較低的模型往往需要犧牲很多P值才能換來R值的提高。
7.
mAP (Mean Average Precison) 值
AP是衡量模型在單個類別上平均精度的好壞,mAP則是衡量模型在所有類別上平均精度的好壞,每一個類別對應有一個AP,假設有n個類別,則有n個AP,分別為:AP1,AP2,…,APn,
mAP就是取所有類別 AP 的平均值
綜合評價指標F-Measure F-Measure又稱F-Score,是召回率R和精度P的加權調和平均,顧名思義即是為了調和召回率R和精度P之間增減反向的矛盾
8.
ROC曲線與AUC曲線
ROC(Receiver Operating
Characteristic)曲線與AUC(Area Under the Curver),ROC曲線,也稱受試者工作特征。ROC曲線與真正率(TPR,True
Positive Rate)和假正率(FPR, False Positive Rate)密切相關。在不平衡數(shù)據中,常用的一種評價指標。
真正率(TPR): 識別對了的正例(TP)占實際總正例的比例,實際計算值跟召回率相同。即:
TPR =TP/(TP+ FN)
假正率(FPR): 識別錯了的正例(FP)占實際總負例的比例。也可以說,誤判的負例(實際是負例,沒有判對)占實際總負例的比例。計算式如下:
FPR =FP/(FP+ TN)
以FPR為橫軸,TPR為縱軸,繪制得到的曲線就是ROC曲線,繪制方法與PR曲線類似。一般來說,ROC曲線越靠近左上方越好。
ROC曲線下的面積即為AUC。面積越大代表模型的分類性能越好。ROC曲線有個很好的特性:當測試集中的正負樣本的分布變化的時候,ROC曲線能夠保持不變。ROC以及AUC可以很好的消除樣本類別不平衡對指標結果產生的影響。
通常,AUC的值介于0.5到1.0之間,較大的AUC代表了較好的Performance。如果模型是完美的,那么它的AUC = 1,證明所有正例排在了負例的前面,如果模型是個簡單的二類隨機猜測模型,那么它的AUC = 0.5,如果一個模型好于另一個,則它的曲線下方面積相對較大,對應的AUC值也會較大。
9.
IoU 指標
IoU簡稱交并比,顧名思義數(shù)學中交集與并集的比例。假設有兩個集合A與B,
IoU即等于A與B的交集除以A與B的并集,表達式如下:
IoU=A∩B/A∪B
在目標檢測中,IoU為預測框(Prediction)和真實框(Ground truth)的交并比
10.Top1 & Topk
Top1:對一張圖片,模型給出的識別概率中(即置信度分數(shù)),分數(shù)最高的為正確目標,則認為正確。這里的目標也就是我們說的正例。
TopK:對一張圖片,模型給出的識別概率中(即置信度分數(shù)),分數(shù)排名前K位中包含有正確目標(正確的正例),則認為正確。
K的取值一般可在100以內的量級,當然越小越實用。比如較常見的,K取值為5,則表示為Top5,代表置信度分數(shù)排名前5當中有一個是正確目標即可;如果K取值100,則表示為Top100,代表置信度分數(shù)排名前100當中有一個是正確目標(正確的正例)即可??梢?,隨著K增大,難度下降。
目標檢測常用的指標是:mAP
圖像分割的指標:F-score值
PR曲線使用了Precision,因此PR曲線的兩個指標都聚焦于正例。類別不平衡問題中由于主要關心正例,所以在此情況下PR曲線被廣泛認為優(yōu)于ROC曲線。
適用場合:
1. ROC曲線由于兼顧正例與負例,所以適用于評估分類器的整體性能,相比而言PR曲線完全聚焦于正例。
2. 如果有多份數(shù)據且存在不同的類別分布,比如信用卡欺詐問題中每個月正例和負例的比例可能都不相同,這時候如果只想單純地比較分類器的性能且剔除類別分布改變的影響,則ROC曲線比較適合,因為類別分布改變可能使得PR曲線發(fā)生變化時好時壞,這種時候難以進行模型比較;反之,如果想測試不同類別分布下對分類器的性能的影響,則PR曲線比較適合。
3. 如果想要評估在相同的類別分布下正例的預測情況,則宜選PR曲線。
4. 類別不平衡問題中,ROC曲線通常會給出一個樂觀的效果估計,所以大部分時候還是PR曲線更好。
最后可以根據具體的應用,在曲線上找到最優(yōu)的點,得到相對應的precision,recall,f1 score等指標,去調整模型的閾值,從而得到一個符合具體應用的模型。
靈敏度(sensitivity)和特異度(specificity),也叫做真正率(TPR)和假正率(FPR),具體公式如下。
真正率(True Positive Rate , TPR),又稱靈敏度:
TPR=正樣本預測正確數(shù)正樣本總數(shù)=TP/TP+FN? 其實我們可以發(fā)現(xiàn)靈敏度和召回率是一模一樣的,
假負率(False Negative Rate , FNR) :
FNR=正樣本預測錯誤數(shù)正樣本總數(shù)=FN/TP+FN
假正率(False Positive Rate , FPR) :
FPR=負樣本預測錯誤數(shù)負樣本總數(shù)=FP/TN+FP
真負率(True Negative Rate , TNR),又稱特異度:
TNR=負樣本預測正確數(shù)負樣本總數(shù)=TN/TN+FP
四個量都是針對單一類別的預測結果而言的,所以對整體樣本是否均衡并不敏感。