二分類評(píng)估,從混淆矩陣說起

《理解交叉驗(yàn)證》一文中竹观,我們談到了使用 AUC 來對(duì)比不同模型的好壞,那么 AUC 是什么?它是如何衡量一個(gè)模型的好壞的呢岛琼?除了 AUC 以外掖看,還有其他評(píng)估手段嗎芹枷?本文我們就來探討下這幾個(gè)問題弟孟。

混淆矩陣

要了解 AUC,我們需要從另外一個(gè)概念——混淆矩陣(Confusion Matrix)說起亚斋,混淆矩陣是一個(gè) 2 維方陣作媚,它主要用于評(píng)估二分類問題(例如:預(yù)測患或未患心臟病、股票漲或跌等這種只有兩類情況的問題)的好壞帅刊。你可能會(huì)問多分類問題怎么辦纸泡?實(shí)際上,多分類問題依然可以轉(zhuǎn)換為二分類問題進(jìn)行處理赖瞒。下圖是一個(gè)用于評(píng)判是否患有心臟病的混淆矩陣:

縱向看混淆矩陣女揭,它體現(xiàn)了真實(shí)情況下,患病和未患病的人數(shù)栏饮,上圖中吧兔,真實(shí)患心臟病的人數(shù)為 True Positive + False Negative,未患心臟病的人數(shù)為 False Positive + True Negative袍嬉;類似的境蔼,橫向看混淆矩陣灶平,它體現(xiàn)了模型預(yù)測出來患心臟病的人數(shù)為 True Positive + False Positive,而預(yù)測未患心臟病的人數(shù)為 False Negative + True Negative箍土。

兩個(gè)方向一起看逢享,預(yù)測患病且實(shí)際也患病,我們稱它為真陽性 (True Positive)涮帘,預(yù)測未患病且實(shí)際也未患病拼苍,被稱為真陰性 (True Negative),這兩個(gè)區(qū)域是模型預(yù)測正確的部分调缨;模型預(yù)測錯(cuò)誤也分兩種情況,假陽性 (False Positive) 表示預(yù)測患病吆你,但實(shí)際卻未患病弦叶,假陰性 (False Negative) 表示預(yù)測未患病,但實(shí)際卻患了病的情況妇多。

概念有點(diǎn)多伤哺,但并不難記,可以看到者祖,這些名詞都是圍繞著預(yù)測來命名的——預(yù)測患病時(shí)被稱為「True/False Positive」立莉,預(yù)測未患病時(shí)被稱為 「True/False Negative」。

上圖中七问,模型預(yù)測正確的部分用綠色填充蜓耻,它所占的比例又被稱為準(zhǔn)確率 (Accuracy):
Accuracy = \frac {TP + TN} {TP + TN + FP + FN}
單靠準(zhǔn)確率這一項(xiàng),并不足以評(píng)估模型的好壞械巡,例如下面這種情況刹淌,雖然準(zhǔn)確率可以達(dá)到 80%,但在實(shí)際患病的人群中讥耗,該模型的預(yù)測成功率只有 50%有勾,很明顯它不是一個(gè)好模型。

患心臟病 未患心臟病
患心臟病 10 10
未患心臟病 10 70

Sensitivity 和 Specificity

所以古程,我們需要引入更多的衡量指標(biāo)蔼卡,Sensitivity (或 Recall) 表示實(shí)際患者中,預(yù)測患病成功的概率挣磨,同時(shí) Sensitivity 這個(gè)詞也有"過敏"的意思雇逞,和患病對(duì)應(yīng),這樣關(guān)聯(lián)起來比較好記:
Sensitivity = \frac{TP}{TP+FN}
既然有衡量患睬骷薄(正樣例)的指標(biāo)喝峦,那肯定也有衡量未患病(負(fù)樣例)的指標(biāo)呜达,Specificity 就是用來表示實(shí)際未患病的人群中谣蠢,預(yù)測未患病成功的概率,即
Specificity = \frac{TN}{TN+FP}
Specificity 這個(gè)詞有"免疫"的意思,能和未患病相關(guān)聯(lián)眉踱,所以也很好記挤忙。

這兩個(gè)指標(biāo)的出現(xiàn),能更好的幫你比較模型間的差異谈喳,并在其中做出取舍册烈。例如當(dāng)兩個(gè)模型的 Accuracy 相近時(shí),如果你更看重于預(yù)測患病的效果婿禽,你應(yīng)該選 Sensitivity 值較高的赏僧;相反,如果你更看重于預(yù)測未患病的效果扭倾,你就應(yīng)該選擇 Specificity 較高的淀零。

ROC 曲線、AUC 和 F1 Score

更進(jìn)一步膛壹,我們還可以通過將這些指標(biāo)圖形化驾中,以獲得更直觀的評(píng)估結(jié)果,ROC (Receiver Operating Characteristic) 曲線就是其中常用的一種模聋。

我們知道肩民,分類模型(例如"邏輯回歸”)的結(jié)果是一個(gè)大于 0 且小于 1 的概率,此時(shí)我們還需要一個(gè)閾值链方,才能界定是否患病持痰,通常我們把閾值設(shè)為 0.5,這樣當(dāng)結(jié)果大于 0.5 時(shí)可判定為患病侄柔,否則判定為未患病共啃。

而閾值可以取 0 到 1 之間的任意一個(gè)值,對(duì)每一個(gè)閾值暂题,都有一個(gè)混淆矩陣與之對(duì)應(yīng)移剪,有了混淆矩陣,我們就可以求出一對(duì) Sensitivity 和 Specificity薪者,通過這兩個(gè)數(shù)纵苛,我們就可以在一個(gè)以 1-Specificity 為橫坐標(biāo),Sensitivity 為縱坐標(biāo)的坐標(biāo)系上畫一個(gè)點(diǎn)言津,把所有可能的閾值所產(chǎn)出的點(diǎn)連起來攻人,就是 ROC 曲線。

下面我們來看一個(gè)具體的例子悬槽,假設(shè)我們對(duì)老鼠做研究怀吻,希望通過老鼠的體重來預(yù)測其患心臟病的概率,我們采用邏輯回歸算法來建模初婆,下圖是預(yù)測結(jié)果蓬坡,圖中有 10 個(gè)老鼠樣本點(diǎn)猿棉,其中紅色點(diǎn)代表實(shí)際健康的老鼠,藍(lán)色點(diǎn)代表實(shí)際患病的老鼠屑咳,這些點(diǎn)用一條邏輯回歸曲線擬合萨赁,圖中還有一條 P=0.5 的直線用來表示閾值為 0.5,可以看出兆龙,高于 P=0.5 的 5 只老鼠被預(yù)測為患病杖爽,而其他 5 只老鼠被預(yù)測為健康,預(yù)測成功率(Accuracy)為 80%:

下面我們通過以上數(shù)據(jù)紫皇,來畫一條 ROC 曲線慰安。首先取閾值為 1,此時(shí)所有的老鼠都被預(yù)測為未患病坝橡,根據(jù)樣本真實(shí)患病情況泻帮,我們可以得到如下混淆矩陣

根據(jù)上述混淆矩陣,我們就可以算出一組 Sensitivity 和 Specificity 的值计寇。接著我們不斷調(diào)整閾值,以獲得所有的 Sensitivity 和 Specificity 對(duì)脂倦,因?yàn)檫@里我們的樣本點(diǎn)較少番宁,所以讓閾值根據(jù)樣本點(diǎn)來采樣即可,依然用橫線表示閾值赖阻,則所有閾值的采樣情況如下:

我們把這些閾值對(duì)應(yīng)的混淆矩陣都列出來:

然后蝶押,計(jì)算這些混淆矩陣對(duì)應(yīng)的 Sensitivity 和 1-Specificity:

Threshold Sensitivity 1- Specificity
1 0 0
0.99 0.2 0
0.97 0.4 0
0.94 0.4 0.2
0.90 0.6 0.2
0.71 0.8 0.2
0.09 0.8 0.4
0.043 1.0 0.4
0.0061 1.0 0.6
0.0003 1.0 0.8
0 1.0 1.0

根據(jù)該表格,以 1-Specificity 為橫軸火欧,Sensitivity 為縱軸作圖棋电,通常,在畫 ROC 曲線時(shí)苇侵,我們把 1-Specificity 對(duì)應(yīng)的坐標(biāo)軸記為 FPR (False Positive Rate)赶盔,把 Sensitivity 對(duì)應(yīng)的坐標(biāo)軸記為 TPR (True Positive Rate),如下:

ROC 曲線有以下特點(diǎn):

  1. 從 (0, 0) 點(diǎn)到 (1,1) 點(diǎn)的對(duì)角線上的每個(gè)點(diǎn)榆浓,意味著在患者中于未,預(yù)測患病成功的概率(TPR),與未患病者中陡鹃,預(yù)測未患病失敗的概率(FPR)相等烘浦,對(duì)于模型來說,TPR 越大越好萍鲸,F(xiàn)PR 越小越好闷叉,所以我們需要盡可能的使 ROC 曲線沿左上角方向遠(yuǎn)離該對(duì)角線。
  2. ROC 曲線還可以幫助我們選擇合適的閾值脊阴,即 TPR 相同的情況下握侧,ROC 上的點(diǎn)越靠左蚯瞧,效果越好,因?yàn)樵娇孔笈河剑馕吨?FPR 越小状知。

根據(jù) ROC 曲線的第 1 個(gè)特點(diǎn):「曲線越靠近左上角,模型的效果越好」孽查,意味著一個(gè)更好模型饥悴,其曲線下方的面積更大,我們把 ROC 曲線下方的面積稱為 AUC (Area Under Curve)盲再,有了這個(gè)概念后西设,只需一個(gè)數(shù)值就可以衡量模型的好壞了,上面示例模型的 AUC 如下:

通常情況下我們都使用 AUC 來評(píng)估模型答朋,既然是”通炒浚”,那肯定就有例外:當(dāng)患病率 (或正樣本占比) 非常小時(shí)梦碗,Ture Negative 就會(huì)非常大禽绪,這個(gè)值就會(huì)使影響 FPR,使 FPR 較小洪规,為了避免這種影響印屁,我們可以將 FPR 用另一個(gè)指標(biāo)代替:Precision
Precision = \frac{TP}{TP+FP}
Precision 的含義是預(yù)測患病的樣本中,實(shí)際也患病的比例斩例;這樣雄人,將 Precision 和 Sensitivity 結(jié)合起來,會(huì)讓我們更專注于患病 (正樣本) 的預(yù)測效果念赶,而機(jī)器學(xué)習(xí)中的另一個(gè)效果指標(biāo):F1 Score础钠,就是專門負(fù)責(zé)這件事兒的
F1~Score = 2\times \frac{Precision\times Recall}{Precision + Recall}
上面的公式中,Recall 等價(jià)于 Sensitivity叉谜,和 AUC 一樣旗吁,兩個(gè)模型互相比較,F(xiàn)1 Score 越大者正罢,預(yù)測效果越好阵漏,而且 F1 Score 能更好的衡量正樣本的預(yù)測效果。

總結(jié)

本文通過一個(gè)醫(yī)學(xué)例子——是否患心臟病——來講述什么是混淆矩陣翻具、ROC 曲線履怯、AUC 及 F1 Score,其中裆泳,我們還一起學(xué)習(xí)了 ROC 曲線是如何畫出來的叹洲,最后,我們還談到了 AUC 和 F1 Score 以及它們之間細(xì)微的差別工禾。

需要注意的是运提,二分類評(píng)估并不限于對(duì)患病及未患病這兩種情況的分類蝗柔,考慮到通用性,你完全可以將本文中的患心臟病替換為正樣本民泵、把未患心臟病替換為負(fù)樣本癣丧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市栈妆,隨后出現(xiàn)的幾起案子胁编,更是在濱河造成了極大的恐慌,老刑警劉巖鳞尔,帶你破解...
    沈念sama閱讀 212,185評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嬉橙,死亡現(xiàn)場離奇詭異,居然都是意外死亡寥假,警方通過查閱死者的電腦和手機(jī)市框,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,445評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來糕韧,“玉大人枫振,你說我怎么就攤上這事∮┎剩” “怎么了蒋得?”我有些...
    開封第一講書人閱讀 157,684評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長乒疏。 經(jīng)常有香客問我,道長饮焦,這世上最難降的妖魔是什么怕吴? 我笑而不...
    開封第一講書人閱讀 56,564評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮县踢,結(jié)果婚禮上转绷,老公的妹妹穿的比我還像新娘。我一直安慰自己硼啤,他們只是感情好议经,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,681評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著谴返,像睡著了一般煞肾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上嗓袱,一...
    開封第一講書人閱讀 49,874評(píng)論 1 290
  • 那天籍救,我揣著相機(jī)與錄音,去河邊找鬼渠抹。 笑死蝙昙,一個(gè)胖子當(dāng)著我的面吹牛闪萄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播奇颠,決...
    沈念sama閱讀 39,025評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼败去,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了烈拒?” 一聲冷哼從身側(cè)響起圆裕,我...
    開封第一講書人閱讀 37,761評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎缺菌,沒想到半個(gè)月后葫辐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,217評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡伴郁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,545評(píng)論 2 327
  • 正文 我和宋清朗相戀三年耿战,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片焊傅。...
    茶點(diǎn)故事閱讀 38,694評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡剂陡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出狐胎,到底是詐尸還是另有隱情鸭栖,我是刑警寧澤,帶...
    沈念sama閱讀 34,351評(píng)論 4 332
  • 正文 年R本政府宣布握巢,位于F島的核電站晕鹊,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏暴浦。R本人自食惡果不足惜溅话,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,988評(píng)論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望歌焦。 院中可真熱鬧飞几,春花似錦、人聲如沸独撇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,778評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽纷铣。三九已至卵史,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間关炼,已是汗流浹背程腹。 一陣腳步聲響...
    開封第一講書人閱讀 32,007評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留儒拂,地道東北人寸潦。 一個(gè)月前我還...
    沈念sama閱讀 46,427評(píng)論 2 360
  • 正文 我出身青樓色鸳,卻偏偏與公主長得像,于是被迫代替她去往敵國和親见转。 傳聞我的和親對(duì)象是個(gè)殘疾皇子命雀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,580評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容