Binary classification - 聊聊评价指标的那些事儿【实战篇】
分類問(wèn)題就像披著羊皮的狼,看起來(lái)天真無(wú)害用起來(lái)天雷滾滾。比如在建模前你思考過(guò)下面的問(wèn)題么?
- 你的分類模型輸出的概率只是用來(lái)做樣本間的相對(duì)排序,還是概率本身?
- 你的訓(xùn)練數(shù)據(jù)本身分布如何是否存在Imbalanced Sample?
要是您都想到了拜拜?。要是有1各您感興趣的問(wèn)題,那就接著往下看吧。本來(lái)是想先回顧一下各個(gè)分類問(wèn)題中可能用到的metric,但是又覺(jué)得讀的人可能覺(jué)得無(wú)聊,就分成了兩章。要是有的指標(biāo)斷片了就來(lái)這里回憶一下: 回憶篇
問(wèn)題1 Rank or Probability?
分類問(wèn)題可以根據(jù)對(duì)輸出形式的要求分成兩類
有人會(huì)問(wèn),上述兩種需求究竟對(duì)解決一個(gè)二分類問(wèn)題有什么影響? 答案是損失函數(shù)/評(píng)價(jià)指標(biāo)
讓我們來(lái)看一個(gè)直觀的例子,下圖我們嘗試用LightGBM解決一個(gè)二分類問(wèn)題,我們選擇的擬合指標(biāo)是最大化AUC。
X軸是預(yù)測(cè)概率,Y軸是真實(shí)概率,藍(lán)線是LGB的預(yù)測(cè)結(jié)果,綠線對(duì)應(yīng)真實(shí)概率=預(yù)測(cè)概率。為什么模型的AUC高達(dá)98.93%(這里還有ImbalancedSample的影響,讓我們先忽略這一點(diǎn)),但是預(yù)測(cè)概率和真實(shí)概率卻差到了姥姥家。
讓我們對(duì)預(yù)測(cè)概率再做一層處理,黃線可以簡(jiǎn)單理解為我們對(duì)LGB的預(yù)測(cè)結(jié)果做了一層映射 \(\hat{p} \to f(\hat{p})\),這時(shí)校準(zhǔn)后的預(yù)測(cè)概率和真實(shí)概率基本一致了。但是有趣的是校準(zhǔn)后的預(yù)測(cè)概率AUC = 98.94%和原始預(yù)測(cè)基本沒(méi)差別?!
Duang Duang Duang!敲黑板!AUC是對(duì)相對(duì)概率排序的檢驗(yàn)!其實(shí)只要用心(我學(xué)AUC的時(shí)候一定沒(méi)用心>_<)看一下AUC的計(jì)算方式就會(huì)發(fā)現(xiàn),AUC只關(guān)心給定各個(gè)閾值,把樣本按照預(yù)測(cè)概率分成0/1,并計(jì)算正負(fù)樣本預(yù)測(cè)的準(zhǔn)確率。
舉個(gè)最夏天的例子,兩個(gè)瓜一個(gè)甜一個(gè)不甜,我們訓(xùn)練一個(gè)西瓜模型來(lái)預(yù)測(cè)它們甜(1)/不甜(0)。
模型1: 甜的瓜預(yù)測(cè)概率是0.8,不甜的瓜預(yù)測(cè)概率是0.1,
模型2: 甜的瓜預(yù)測(cè)概率是0.51,不甜的瓜預(yù)測(cè)概率是0.49
兩個(gè)模型的AUC是相同的,因?yàn)樗鼈兌纪昝缹?duì)兩個(gè)瓜進(jìn)行了分類。
所以當(dāng)使用最大化AUC作為損失函數(shù)時(shí),當(dāng)正負(fù)樣本的預(yù)測(cè)準(zhǔn)確率不再提高,模型就會(huì)停止學(xué)習(xí)。這時(shí)模型的預(yù)測(cè)概率并不是對(duì)真實(shí)概率的擬合。那如何才能得到對(duì)真實(shí)概率的預(yù)測(cè)? 答案是logloss/cros-entropy
\[ \begin{align} L &= \sum_{i=1}^N y_i * log(p_i) + (1-y_i) *log(1-p_i)\\ \end{align} \]
我們可以從兩個(gè)角度來(lái)理解為什么logloss是對(duì)真實(shí)概率的估計(jì)
從極大似然估計(jì)的角度
logloss可以由極大似然函數(shù)取對(duì)數(shù)得到,最小化logloss對(duì)應(yīng)的最大化似然函數(shù)。\(p_i\)是對(duì)\(p(y_i=1)\)的估計(jì)
\[ argmax_p \prod_{i=1}^N {p_i}^{y_i} * {(1-p_i)}^{1-y_i} \]
從信息論的角度
不熟悉信息論的同學(xué)看這里 Intro to Information Theory
logloss也叫cross-entropy(交叉熵),用來(lái)衡量?jī)蓚€(gè)分布的相似程度。
交叉熵本身可以分解為P本身的信息熵+分布P和分布q之間的距離。這里P是樣本的真實(shí)分布信息,信息熵一定。所以最小化交叉熵就變成了最小化分布p和q之間的距離,也就是樣本分布和模型估計(jì)間的距離,如下
\[ \begin{align} crossentropy &= H(p,q)\\ &= -\sum_{c=1}^C p(c) * log(q(c))\\ & = - \sum_{c=1}^C p(c) * log(p(c)) + \sum_{c=1}^C p(c)[log(p(c) - log(q(c)))] \\ &= H(p) + KL(p||q)\\ \end{align} \]
乍一看會(huì)覺(jué)得交叉熵和logloss長(zhǎng)的不像一家人。因?yàn)樵谟?xùn)練模型時(shí)分布p是從訓(xùn)練樣本的分布中抽象得到的。二分類問(wèn)題中C=2, 讓我們把上述交叉熵再推一步
\[ \begin{align} H(p,q) &= p *log(q) + (1-p) *log(1-q) \\ p& = \sum_{i=1}^N I(y_i=1)/N \\ H(p,q) &= \frac{1}{N} \sum_i I(y_i=1) *log(q)+ I(y_i=0) *log(1-q) \\ \end{align} \]
所以下次解決分類問(wèn)題,如果你的目標(biāo)是計(jì)算對(duì)真實(shí)概率的估計(jì)的話,別選錯(cuò)指標(biāo)喲�
興趣卡片- 預(yù)測(cè)概率校準(zhǔn)
其實(shí)黃線用了Isotonic Regression來(lái)校準(zhǔn)預(yù)測(cè)概率。是一種事后將預(yù)測(cè)概率根據(jù)真實(shí)概率進(jìn)行校準(zhǔn)的方法。感興趣的可以看一下Reference里面的材料1,2。原理并不復(fù)雜,但在分析特定算法,尤其是boosting,bagging類的集合算法為什么使用loggloss對(duì)概率估計(jì)依舊會(huì)有偏的部分蠻有趣的
問(wèn)題2 Imbalanced Sample ?
正負(fù)樣本分布不均大概是分類問(wèn)題中最常遇到的問(wèn)題。正確解決Imbalane問(wèn)題需要注意的并不只是評(píng)價(jià)指標(biāo),往往還要注意采樣和訓(xùn)練集測(cè)試集的劃分。但這里我們只討論在解決樣本分布不均的問(wèn)題時(shí),我們應(yīng)該選擇什么指標(biāo)來(lái)評(píng)價(jià)模型表現(xiàn)。讓我們挨個(gè)來(lái)剔除不好用的指標(biāo)。
舉個(gè)極端的例子,100個(gè)樣本里只有1個(gè)正樣本
Accuracy
這種情況下即便我們?nèi)款A(yù)測(cè)為負(fù),我們的準(zhǔn)確率依舊高達(dá)99%。所以Accuracy只適用于正負(fù)樣本均勻分布的情況,因?yàn)樗颜?fù)樣本的預(yù)測(cè)準(zhǔn)確率柔和在一起看了。
AUC
AUC是fpr和tpr(recall)組成的ROC的曲線下面積。還記得我們?cè)凇净貞浧坷锩嬲f(shuō)過(guò)fpr,tpr是分別衡量在正負(fù)樣本上的準(zhǔn)確率的。
而fpr和tpr之間的trade-off,在正樣本占比很小的情況下,這種trad-off會(huì)被樣本量更大的一方主導(dǎo)。所以當(dāng)正樣本占比很小的時(shí)候,AUC往往會(huì)看起來(lái)過(guò)于優(yōu)秀。
但就像硬幣的正反面一樣,從另一個(gè)角度看這也是AUC的優(yōu)點(diǎn),就是AUC本身不會(huì)很大的受到樣本實(shí)際分布的影響,相同的模型相同的樣本,你把正樣本downsample /upsample 1倍,AUC不會(huì)有很大的改變。
下圖來(lái)自An introduction to ROC analysis, 上面的AUC和PR是正負(fù)樣本1:1的預(yù)測(cè)表現(xiàn),下面是1:10的表現(xiàn)。我們會(huì)發(fā)現(xiàn)AUC基本沒(méi)有變化,但是precision-recall發(fā)生了劇烈變化。
AP/AUCPR
AP是recall和precision組成的PR的曲線下面積。這里recall和precision分別從真實(shí)分布和預(yù)測(cè)分布兩個(gè)角度衡量了對(duì)正樣本的預(yù)測(cè)準(zhǔn)確率。說(shuō)到這里已經(jīng)有人反應(yīng)過(guò)來(lái)了。是的這一對(duì)trade-off指標(biāo)都是針對(duì)正樣本的,在計(jì)算中沒(méi)有用到True negative.所以當(dāng)你的數(shù)據(jù)集存在Imbalance的時(shí)候,AP一般會(huì)是更好的選擇。
...你還遇到過(guò)啥問(wèn)題嘞?歡迎留言
Reference
轉(zhuǎn)載于:https://www.cnblogs.com/gogoSandy/p/11123688.html
總結(jié)
以上是生活随笔為你收集整理的Binary classification - 聊聊评价指标的那些事儿【实战篇】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: oracle函数 trunc(x[,y
- 下一篇: oracle自动选择索引