最近重新學習了一下機器學習的一些基礎知識,這里對性能度量涉及到的各種值與圖像做一個總結。
西瓜書里的這一部分講的比較快,這些概念個人感覺非常繞,推敲了半天才搞清楚。
這些概念分別是:TP、FN、FP、TN,查全率和查准率,P-R曲線和ROC曲線
1、混淆矩陣中的:TP FN FP TN
其實很簡單
真實情況有兩種可能:正(T)和反(F);
預測結果有兩種可能:積極(P)和消極(N)
但是比較繞的是對於這里的P和N的理解,看到一個很好的舉例,借用一下:
(pic from http://www.360doc.com/content/19/0806/19/52645714_853362368.shtml)
也就是說
TN的意思是,預測的結果為N,即認為預測對象是F,而這個預測是正確的,所以記為T
這個時候思考:那么TN到底代表真實情況是T還是F?
這就有點繞了,有一個簡便的方法:將T記為+,F記為-,P記為+,N記為-
那么++和--的運算結果為+,真實情況為T;+-和-+的運算結果為-,真實情況為F
所以TN(+-)的真實情況是F,它的意思是,預測的結果是N,而這個預測是正確(T)的
2、查准率P和查全率R、P-R曲線
首先注意區分兩個P不同的含義,用顏色區分:預測結果P(positive),查准率P(precision)
在看表達式前先說說它們的定義,首先查准率和查全率是一對矛盾的值
查准率是指在所有預測為P的情況(包括將T預測為T的TP,和將F預測為T的FP)下,真實情況為T的比例
故查准率P=TP/P = TP/(TP+FP)
查全率是指在所有真實情況下為T的樣本(包括將T預測為T的TP,和將T預測為F的FN)中,預測正確P的比例
故查全率R=TP/T = TP/(TP+FN)
為什么說他們是一對矛盾的值,一個大另外一個就必然小?
可以這樣理解:
如果希望查准率P高,則需要盡量“保守”地預測:不能肯定地預測為P,就給出N的答案。這樣的話,勢必會導致將真實情況下的T預測為N的情況增加,即FN增加,那么查全率R就會相應地下降
這樣就能理解:
1、P-R曲線中,隨着R的增加,P會隨之下降;
2、在R相同的情況下,P更高的學習器性能更好,故若學習器A的曲線“包住”學習器B的曲線,則A的性能優於B
P-R曲線:
當我們設置一個閾值時,會得到一對P-R,而當閾值在[0,1]上取值時,就可以獲得更多的P-R,由此畫出P-R曲線
P-R曲線代表了一個學習器的性能,上文中有得出結論:
若學習器A的曲線“包住”學習器B的曲線,則A的性能優於B。
而當兩個曲線發生交叉時,則通過其他方法比較性能:
1、曲線圍成的面積,面積大者性能更優
2、尋找平衡點(BEP),即P=R時,即:
另外還有一個Fβ的式子,是F1的一般形式,可以通過參數β控制對查准或查全的偏好,這里不多做解釋了
3、ROC曲線(真正利率TPR和假正利率FPR)
有了前面的解釋,搞懂TPR和FPR就不難了
直接上表達式:
ROC曲線則是以這兩個值為橫縱坐標畫出的曲線:
由於一般情況下的樣本是離散的,所以一般來說ROC曲線的形狀是類似於右圖的”鋸齒狀“
呈現這種鋸齒狀的特征是由於ROC曲線在繪制的過程中,是一個點一個點畫的。
模擬一下這個過程:
1、將所有測試對象根據預測值(在0~1之間)按從大到小排序,記為序列L
2、認為所有樣本皆為負,則100%預測為N,故P=0,即TP=FP=0,TPR=FPR=0,第一個點為(0,0)
3、將閾值調整為L[0]的值,則L[0]將被預測為P,則必有 TP=1&FP=0 或 TP=0 FP=1,相應的會得到TPR和FPR,得到第二個點
4、重復3的過程,將閾值繼續調整為L[1],則L[0]和L[1]將被預測為P,TPR和FPR的值會再次改變,得到第三個點
5、重復上述過程,最終可以得到完整的ROC曲線
如何通過ROC曲線判斷模型的性能
真正(TP)利率反映的是預測正確的概率,假正(FP)利率反映的是預測錯誤的概率,所以在圖中能”包住“另一條曲線的性能更優