導(dǎo)讀
通常我們?cè)诮鉀Q某個(gè)問(wèn)題的時(shí)候,會(huì)設(shè)計(jì)多種分類算法在訓(xùn)練的時(shí)候我們還會(huì)調(diào)節(jié)各種超參以及使用各種trick以獲取最優(yōu)的分類模型,那這時(shí)候我們應(yīng)該如何來(lái)衡量這個(gè)最優(yōu)呢?
分類算法的評(píng)估指標(biāo)有很多種,選擇使用哪一種評(píng)估指標(biāo),應(yīng)該根據(jù)實(shí)際情況來(lái)進(jìn)行選擇,而不能一概而定。
混淆矩陣
我們先來(lái)了解一下混淆矩陣,后面的分類評(píng)估指標(biāo)其實(shí)都是在這個(gè)基礎(chǔ)上發(fā)展而來(lái),理解了這個(gè),再去學(xué)習(xí)后面的評(píng)估指標(biāo)就很簡(jiǎn)單了。
混淆矩陣(confusion matrix):是機(jī)器學(xué)習(xí)領(lǐng)域和統(tǒng)計(jì)分類問(wèn)題中常用的可視化工具,從名字上不能看出其實(shí)它就是一個(gè)矩陣,它主要由兩個(gè)維度組成實(shí)際類別和預(yù)測(cè)類別。矩陣的每一列代表一個(gè)類的實(shí)例預(yù)測(cè),而每一行表示一個(gè)實(shí)際的類的實(shí)例。之所以如此命名,是因?yàn)橥ㄟ^(guò)這個(gè)矩陣可以方便地看出機(jī)器是否將兩個(gè)不同的類混淆了(比如說(shuō)把一個(gè)類錯(cuò)當(dāng)成了另一個(gè))。下面我們來(lái)看一個(gè)貓狗分類的實(shí)例

混淆矩陣
上面的表格很簡(jiǎn)潔的展示了分類模型的預(yù)測(cè)結(jié)果,一共預(yù)測(cè)了8只貓和5只狗,其中5只貓和3只狗預(yù)測(cè)正確,3只貓和2只狗預(yù)測(cè)錯(cuò)誤。表格中的對(duì)角線元素表示預(yù)測(cè)正確,對(duì)角線之外均表示預(yù)測(cè)錯(cuò)誤,下面我們用專業(yè)的術(shù)語(yǔ)來(lái)描述預(yù)測(cè)結(jié)果:
- 真正例(True Positives)簡(jiǎn)稱TP: 被正確地劃分為正例的個(gè)數(shù),即實(shí)際為正例且被分類器劃分為正例的實(shí)例數(shù)
- 假正例(False Positives)簡(jiǎn)稱FP:被錯(cuò)誤地劃分為正例的個(gè)數(shù),即實(shí)際為負(fù)例但被分類器劃分為正例的實(shí)例數(shù)
- 真負(fù)例(True Negatives)簡(jiǎn)稱TN:被正確地劃分為負(fù)例的個(gè)數(shù),即實(shí)際為負(fù)例且被分類器劃分為負(fù)例的實(shí)例數(shù)
- 假負(fù)例(False Negatives)簡(jiǎn)稱FN:被錯(cuò)誤地劃分為負(fù)例的個(gè)數(shù),即實(shí)際為正例但被分類器劃分為負(fù)例的實(shí)例數(shù)
對(duì)上面的術(shù)語(yǔ)做一個(gè)說(shuō)明幫助大家記憶和理解:
上面中的True和False表示的是樣本的真實(shí)標(biāo)簽,Positives和Negatives表示的是模型的預(yù)測(cè)標(biāo)簽。
樣本實(shí)際的正例數(shù):P=TP+FN
樣本實(shí)際的負(fù)例數(shù):N=TN+FP
分類算法中的評(píng)估指標(biāo)
- 正確率(accuracy)
正確率是我們常用的分類指標(biāo),計(jì)算公式如下

正確率是指分類算法預(yù)測(cè)正確的樣本在總樣本中所占的比例,一般來(lái)說(shuō),正確率越大表示分類算法的效果越好
- 錯(cuò)誤率(error)
錯(cuò)誤率是指分類算法預(yù)測(cè)錯(cuò)誤的樣本在總樣本中所占的比例,計(jì)算公式如下

對(duì)于某一個(gè)實(shí)例來(lái)說(shuō),分對(duì)和分錯(cuò)是一個(gè)互斥事件,accuracy+error=1
- 召回率(recall)
召回率也被稱為靈敏度(sensitivity),指分類正確的正例在正例中所占的比例

- 精度(precision)
精度是精確性的度量,表示被分為正例中實(shí)際為正例所占的比例

- 特異性(specificity)
表示的是所有負(fù)例中被分對(duì)的比例,衡量了分類器對(duì)負(fù)例的識(shí)別能力

- F1-Score
有的時(shí)候我們需要結(jié)合多個(gè)指標(biāo)來(lái)評(píng)估算法的效果,而F1-Score就是綜合考慮了recall和precision兩個(gè)指標(biāo),因此F1-score也被稱為綜合分類率。計(jì)算公式如下

- ROC曲線
ROC曲線是(Receiver Operating Characteristic Curve,受試者工作特征曲線)的簡(jiǎn)稱,是以靈敏度(真陽(yáng)性率)為縱坐標(biāo),以1減去特異性(假陽(yáng)性率)為橫坐標(biāo)繪制的性能評(píng)價(jià)曲線。可以將不同模型對(duì)同一數(shù)據(jù)集的ROC曲線繪制在同一笛卡爾坐標(biāo)系中,ROC曲線越靠近左上角,說(shuō)明其對(duì)應(yīng)模型越可靠。也可以通過(guò)ROC曲線下面的面積(Area Under Curve, AUC)來(lái)評(píng)價(jià)模型,AUC越大,模型越可靠。

- PR曲線
PR曲線是Precision Recall Curve的簡(jiǎn)稱,描述的是precision和recall之間的關(guān)系,以recall為橫坐標(biāo),precision為縱坐標(biāo)繪制的曲線。該曲線的所對(duì)應(yīng)的面積AUC實(shí)際上是目標(biāo)檢測(cè)中常用的評(píng)價(jià)指標(biāo)平均精度(Average Precision, AP)。AP越高,說(shuō)明模型性能越好。
分類算法中常見(jiàn)的問(wèn)題
- 正確率指標(biāo)能很好的評(píng)估分類模型嗎?
不一定。例如我們想開(kāi)發(fā)一個(gè)地震警報(bào)器,當(dāng)?shù)卣鹨獊?lái)臨時(shí)提前發(fā)送警報(bào)讓大家避險(xiǎn)。而我們知道,實(shí)際上地震發(fā)生的次數(shù)很少,也許100次中可能只有1次地震,甚至更低,這里為了方便計(jì)算。如果此時(shí),我們的預(yù)測(cè)器將這100次的預(yù)測(cè)結(jié)果都預(yù)測(cè)為不會(huì)發(fā)生地震,那我們的預(yù)測(cè)器的正確率有99%。
雖然,這個(gè)預(yù)測(cè)器的正確率很高,但是實(shí)際上它不會(huì)產(chǎn)生任何的商業(yè)價(jià)值,其實(shí)也就沒(méi)任何使用價(jià)值。實(shí)際上我們需要預(yù)測(cè)正確的正是那一次的地震。
針對(duì)這種情況我們更希望是recall指標(biāo)盡可能的高,而不是正確率。所以,對(duì)于分布不平衡的數(shù)據(jù)來(lái)說(shuō)并不是正確率越高越好,應(yīng)該根據(jù)實(shí)際需求來(lái)選擇評(píng)估指標(biāo)。
- 如何繪制ROC曲線?

在現(xiàn)實(shí)任務(wù)中,我們只是對(duì)有限個(gè)測(cè)試樣本進(jìn)?繪制ROC圖,此時(shí)只能獲得有限個(gè)(假正例率,真正例率)坐標(biāo)對(duì),就?法獲得如(a)的光滑的ROC曲線,就會(huì)獲得如圖(b)的近似的ROC曲線。
繪圖過(guò)程如下:給定m1個(gè)正例和m2個(gè)反例,根據(jù)模型預(yù)測(cè)結(jié)果(正例的概率)對(duì)樣例進(jìn)?排序,然后把分類閾值設(shè)置為最?,即把所有樣例都預(yù)測(cè)為反例,此時(shí)真正例率和假正例率都為0,在坐標(biāo)(0, 0)處標(biāo)記?個(gè)點(diǎn),然后將分類閾值依次設(shè)置為每個(gè)樣例的預(yù)測(cè)值,即依次將每個(gè)樣例設(shè)置為正例,若前?個(gè)標(biāo)記點(diǎn)坐標(biāo)為(x, y),當(dāng)前若為真正例,則對(duì)應(yīng)標(biāo)記點(diǎn)坐標(biāo)為(x, y+1/m1);若當(dāng)前為假正例,則對(duì)應(yīng)標(biāo)記點(diǎn)坐標(biāo)為(x+1/m2, y),然后?線段連接相鄰的點(diǎn)。