機器學習中各種度量很容易搞暈學習者的頭腦。但是如果把他們和混淆矩陣一起來看的話,會容易理解很多。
我也是經常接觸,所以有一些自己的感悟,記錄下來。
我理解上的混淆矩陣就是乙個分類器對於正反例(假設是二分類,多分類也類似)的混淆程度。
我有見過兩種不同混淆矩陣,主要區別是對於真實的類別和猜測的類別的位置互換。其實本質上沒有大區別的,看每乙個人的習慣。這裡採用wikipedia的格式。
初學者一般看到這個矩陣的描述就暈了。怎麼那麼多字母?tp,fp,fn,tn是什麼?就算告訴你tp=true positive的意思,你也要暈半天,更別說之後的各種度量公式。如ppv, npv,recall, f1,roc等等。
假設測試資料中我有5個貓和8個非貓的例子。首先在貓(p)的地方的p填寫5, 非貓(n)的地方的n填寫8。說明測試資料中真實的類別貓有5例,非貓有8例。
在tp,fp,fn,tn的地方都填上0。
接下去從13例測試例子中一例一例的問分類器(也就是我),比如拿一例貓問我,我回答是貓,那麼在tp的地方就加1。如果我回答了非貓,那麼在fn的地方就加1。再比如拿一例非貓的問我,我回答是非貓,那麼在tn的地方加1,如果我回答了貓,那麼在fp的地方加1。
等13例都問完之後,那麼整個混淆矩陣也就完成了。如下圖:
condition positive (p) = 測試資料中正例的數量。此處是貓=5。
condition negatives (n) = 測試資料中反例的數量。此處是非貓=8。
true positive (tp) = 是正例,且很幸運我也猜它是正例的數量。此處4表示有4張是貓,且我也猜它是貓。tp越大越好,因為表示我猜對了。這個時候如果你質問我貓不是5張嗎?那麼別急,重新看看tp的定義。然後再看看fn的定義。
false negtive (fn) = 明明是正例,但很不幸,我猜它是反例的數量。此處1表示有1張明明是貓,但我猜它非貓。fn越小越好,因為fn說明我猜錯了。現在來看5張貓是不是全了。其中4張貓我猜是貓,1張貓我猜非貓。
true negative (tn) = 是反例,且很幸運我也猜它是反例的數量。此處5表示有5張是非貓,且我也猜它是非貓。tn越大越好,因為表示我猜對了。
false positive (fp) = 明明是反例,但很不幸我猜它是正例的數量。此處3表示有3張是非貓,但我猜它是貓。fp越小越好,因為fp說明我猜錯了。
小總結:
補充:gp的意思就是i guess positive,注意gp是我自己定的,不是官方標準。gn就是i guess negtive。
這裡開始才是重點,可能要配合一定的實踐,才能更加深刻的領悟其中的奧妙。
sensitivity, recall, hit rate, or true positive rate (tpr)
以上的幾種說法都是乙個意思。硬翻譯的話是靈敏度,召回度,命中率或者是正例中猜對的比例。
* 理解1:範圍是0-1, 貓的例子中sensitivity=4/5=0.8
* 理解2: 分母是真實正例的總數,和你的猜測值無關
* 理解3: 分子是你猜正例且猜對的次數,和其他都無關。反例你猜對的再多和分子沒有關係。
* 理解4: 如果對於所有的測試資料,你都猜是正例,則該值肯定是1。假設貓的例子,你如果13張都猜是貓,那麼你的trp = 5/5 = 1。由於測試資料中存在非貓,所以你對於貓過於靈敏,這大概也是為什麼sensitivity的命名原因。recall(召回)的原因是總共有5只貓,你把5只貓都找對了,所以叫做召回了所有的貓。
* 理解5: 該值越大,表示分類器對正例越靈敏,越能找全所有的正例。
* 理解6: 好的分類器該值要大,僅該值大的分類器不一定就好。單獨該值無法判斷分類器的優劣。因為好的分類器不但要對正例靈敏,還要對反例專一。
specificity or true negative rate (tnr)
以上兩種說法也是乙個意思。specificity翻譯過來是特異度,專一度。我理解是靈敏度的反義詞。就是不要看到任何例子都猜是正例,要有自己的見解和專一。
* 理解1:範圍是0-1, 貓的例子中specificity=5/8=0.625
* 理解2: 分母是真實反例的總數,和你的猜測值無關
* 理解3: 分子是你猜反例且猜對的次數,和其他都無關。正例你猜對的再多和分子沒有關係。
* 理解4: 如果對於所有的測試資料,你都猜是反例,則該值肯定是1。假設貓的例子,你如果13張都猜是非貓,那麼你的tnr = 8/8 = 1。由於測試資料中存在貓,所以你對於非貓過於專一,這大概也是為什麼specificity的命名原因。
* 理解5: 該值越大,表示分類器對反例越專一。
* 理解6: 好的分類器該值要大,僅該值大的分類器不一定就好。單獨該值無法判斷分類器的優劣。因為好的分類器不但要對反例專一,還要對正例靈敏。
precision or positive predictive value (ppv)
ppv也就是正例的precision。
大家經常會看到precision和recall經常出現,因為precision和recall的綜合表現,可以基本揭示分類器對於正例的好壞程度。
negative predictive value (npv)
npv完全就是和ppv相對的東西了。ppv是分類器猜正例的正確率,npv是分類器猜反例的正確率。
accuracy (acc)
整體的正確率。即猜對的次數(無論是正例還是反例)除以總測試資料的總數。
完美的分類器
sensitivity = 5/5 = 1 # 正例找的夠全或者說我不會看漏正例
specificity = 8/8 = 1 # 反例找的也夠全或者說我不會看漏反例
ppv = 5/5 = 1 # 猜正例的時候一猜乙個準或者說我猜它正例,它就不會是反例
npv = 8/8 = 1 # 猜反例的時候一猜乙個準或者說我猜它反例,他就不會是正例
acc = 13/13 = 1 # 全部猜對
激進的分類器
sensitivity = 5/5 = 1 # 正例找的夠全或者說我不會看漏正例
specificity = 3/8 # 反例找的不夠全
ppv = 5/10 = 0.5 # 猜正例的時候有一半機率猜對
npv = 3/3 = 1 # 猜反例的時候一猜乙個準或者說我猜它反例,他就不會是正例
acc = 8/13 # 總共猜對8例,猜錯5例,比隨機猜好一點點
關於混淆矩陣還有其他很多度量。這些最基本的度量如果不搞清楚的話,那麼roc曲線之類的就更加迷糊了。有機會另外再寫。
本文公式部分引用於wikipedia的confusion matrix頁面
面試常見之混淆矩陣各種率
混淆矩陣簡潔版 召回率 針對原來樣本的,表示樣本中正例有多少被 正確的。tp tp fn 精確率 針對 結果的,為正的樣本中有多少是真正的正樣本 tp tp fp 通過率 模型判斷為好樣本的數量佔總樣本數的比例,tp fp tp fn fp fn 壞賬率 模型為好樣本中真正壞樣本的比例 fp tp ...
二分類混淆矩陣結構 從混淆矩陣到樣本不平衡分類指標
confusing matrix 也譯作混淆矩陣,是一項古老經典的統計技術,見下圖。classification代表分類器判斷的結果,positive 是 陽性 真等 negative 非 陰性 假等 condition代表事實情況,true 事實為真 false 事實是假 把classificat...
二分類混淆矩陣結構 從混淆矩陣到樣本不平衡分類指標
混淆矩陣 confusing matrix 也譯作混淆矩陣,是一項古老經典的統計技術,見下圖。classification代表分類器判斷的結果,positive 是 陽性 真等 negative 非 陰性 假等 condition代表事實情況,true 事實為真 false 事實是假 把classi...