AI分類模型評(píng)估指標(biāo):混淆矩陣、KS、AUC

3 評(píng)論 3072 瀏覽 17 收藏 13 分鐘

分類模型的評(píng)估指標(biāo)有混淆矩陣、KS、AUC等指標(biāo),而回歸模型的評(píng)估指標(biāo)又有許多。那么,怎么理解這些指標(biāo)呢?這篇文章里,作者針對相關(guān)指標(biāo)做了解析,一起來看看吧。

上文介紹了模型構(gòu)建的5個(gè)環(huán)節(jié),在模型驗(yàn)證環(huán)節(jié),提到了評(píng)估模型性能的指標(biāo),其中分類模型的評(píng)估指標(biāo)有混淆矩陣、KS、AUC等指標(biāo),而回歸模型的評(píng)估指標(biāo)有MSE、RMSE、MAE等指標(biāo)。

今天我們就來詳細(xì)了解一下分類模型的評(píng)估指標(biāo)。

一、混淆矩陣

混淆矩陣是分類模型評(píng)估最基礎(chǔ)的指標(biāo),我們可以通過混淆矩陣直觀的看出分類模型預(yù)測準(zhǔn)確和不準(zhǔn)確的結(jié)果數(shù)量,進(jìn)而簡單計(jì)算出找到了多少比例的壞人(召回率)、找到的壞人里面真正壞人的比例(精確率)、模型判斷正確的比例(準(zhǔn)確率)等,而AUC、KS等高階指標(biāo)的計(jì)算也依賴于混淆矩陣的數(shù)據(jù)。

那么到底什么是混淆矩陣呢?

還是以前文的薅羊毛項(xiàng)目為例,當(dāng)然薅羊毛項(xiàng)目是多分類模型,我們這里簡化成二分類,便于理解。

我們選取了100名測試用戶信息,其中有30個(gè)薅羊毛用戶,我們稱之為“壞人”,70個(gè)正常的“好人”。模型預(yù)測結(jié)果分?jǐn)?shù)的范圍是0到100分,技術(shù)同學(xué)給的參考閾值為60分,即60分以上的為“壞人”,60分以下的為“好人”。

輸入到模型后得到了100個(gè)預(yù)測結(jié)果,假設(shè)模型預(yù)測出了40個(gè)壞人,在這40個(gè)壞人中,有25個(gè)預(yù)測對了,15個(gè)預(yù)測錯(cuò)了。

接下來,我們就可以把真實(shí)值和模型預(yù)測值,通過閾值得到的分類,填入到下表的混淆矩陣中:

混淆矩陣中,Positive表示正例,就是我們想要找出來的那個(gè)分類,Negative表示負(fù)例。結(jié)合薅羊毛項(xiàng)目,我們要找的“壞人”就對應(yīng)了混淆矩陣的正例,“好人”對應(yīng)了負(fù)例。

上表中得到了以下4種情況:

  • TP(true positive):true表示模型預(yù)測結(jié)果是正確的,positive表示模型預(yù)測結(jié)果為正例(壞人),實(shí)際也是正例(壞人),那么TP值就是預(yù)測正確的壞人數(shù)=25人
  • FP(false positive):false表示模型預(yù)測結(jié)果是錯(cuò)誤的,positive表示模型預(yù)測結(jié)果為正例(壞人),實(shí)際上是負(fù)例(好人),那么FP值就是被誤判為壞人的好人數(shù)=15人(被誤傷、被誤判)
  • FN(false negative):false表示模型預(yù)測結(jié)果是錯(cuò)誤的,negative表示模型預(yù)測結(jié)果為負(fù)例(好人),實(shí)際上是正例(壞人),那么FN值就是被誤判為好人的壞人數(shù)=總壞人數(shù)30-預(yù)測正確壞人數(shù)25=5人(漏網(wǎng)之魚)
  • TN(true negative):true表示模型預(yù)測結(jié)果是正確的,negative表示模型預(yù)測結(jié)果為負(fù)例(好人),實(shí)際也是負(fù)例(好人),那么TN值就是預(yù)測正確的好人數(shù)=總好人數(shù)70-被誤傷的好人數(shù)15=55人

所以,T和F代表模型預(yù)測結(jié)果的對錯(cuò),P和N代表模型預(yù)測結(jié)果是正例還是負(fù)例。

理論上,我們期望模型的TP值盡可能大,同時(shí)FP值盡可能小,就是盡可能多的找出真壞人,同時(shí)盡可能少的誤傷好人。

以上就是混淆矩陣的簡單介紹,我們會(huì)發(fā)現(xiàn)混淆矩陣中都是具體的數(shù)值,而數(shù)值是無法直接評(píng)估模型的好壞的,所以我們會(huì)在此基礎(chǔ)上,延伸出以比率來形容模型好壞的多項(xiàng)指標(biāo)。

二、混淆矩陣的評(píng)估指標(biāo):準(zhǔn)確率、精確率、召回率、F1

  • 為了更直觀的評(píng)估模型,我們基于混淆矩陣延伸出了以下指標(biāo):
    準(zhǔn)確率(Accuracy):表示從全局的角度,模型分類正確的比率。模型正確分類人員(TP+TN)占全部人員(TP+TN+FP+FN)的比例,準(zhǔn)確率=(25+55)/(25+55+15+5)=80%
  • 精確率(Precision):表示模型預(yù)測精度的指標(biāo)。模型找出的總壞人數(shù)(TP+FP)中,真壞人數(shù)(TP)所占的比例,精確率=25/(25+15)=62.5%
  • 召回率(Recall):也叫查全率,是判斷模型預(yù)測廣度的指標(biāo)。模型找出的真壞人數(shù)(TP)占實(shí)際總壞人數(shù)(TP+FN)的比例,召回率=25/(25+5)=83.33%

準(zhǔn)確率可以從全局的角度描述模型正確分類的能力,但在樣本數(shù)據(jù)不均衡的情況下,無法區(qū)分TP和TN的實(shí)際貢獻(xiàn)分別是多少,全局的準(zhǔn)確率并沒有很強(qiáng)的“說服力”。

精確率用來描述模型識(shí)別的精確度,在掃臉、指紋識(shí)別等確定性要求較高的場景下,“寧缺毋濫”,可以側(cè)重考慮精確率的指標(biāo)。

召回率用來描述模型識(shí)別的廣度,在薅羊毛項(xiàng)目的場景下,我們就要求“寧可錯(cuò)殺一千,不可放過一個(gè)”,追求“除惡務(wù)盡”。

需要注意的是,精確率和召回率大概率是成反比的,想提升精確率,那么召回率就可能受影響,反之亦然。所以我們要結(jié)合具體的業(yè)務(wù)場景,找到兩個(gè)指標(biāo)的平衡點(diǎn)。

而F1值就是用來綜合反映精確率和召回率的指標(biāo),F(xiàn)1=(2 x 精確率 x 召回率)/ (精確率 + 召回率),該值越大,說明精確率和召回率的綜合表現(xiàn)越好。

三、構(gòu)建KS和AUC的基礎(chǔ)指標(biāo):TPR、FPR

KS和AUC是分類模型中常用的兩個(gè)綜合性指標(biāo),計(jì)算它們依然需要依賴混淆矩陣的基礎(chǔ)指標(biāo):TPR和FPR。

  • TPR(True Positive Rate):也叫真正率、真陽率、靈敏度(Sensitivity),用來評(píng)估模型正確預(yù)測的能力。也就是模型找到真壞人(TP)占實(shí)際總壞人數(shù)(TP+FN)的比例,即 TP/(TP+FN),細(xì)心的朋友可能會(huì)注意到,這個(gè)公式就是召回率的公式,所以TPR也可以叫做召回率。
  • FPR(False Positive Rate):也叫假正率、假陽率,用來評(píng)估模型誤傷好人的比率。也就是被模型誤傷的好人(FP)占實(shí)際總好人數(shù)(FP+TN)的比例,即FP/(FP+TN),也可以叫做誤傷率,更好理解一些。

四、繪制ROC曲線&計(jì)算AUC指標(biāo)

構(gòu)建模型的目的,肯定是期望盡可能多的找出真壞人,同時(shí)盡可能少的誤傷好人,也就是TPR越高越好、FPR越低越好。

ROC曲線就是用來表達(dá)TPR和FPR之間關(guān)系的曲線,接下來我們來看一下ROC曲線的繪制過程。

剛才得到混淆矩陣數(shù)據(jù)的時(shí)候,技術(shù)同學(xué)給了一個(gè)參考的閾值60分,我們根據(jù)閾值計(jì)算出了混淆矩陣的各項(xiàng)指標(biāo)。

假設(shè)我們沒有確定的閾值,我們可以每10分進(jìn)行分段(0、10、20、…100),逐一作為閾值,來分別計(jì)算TPR和FPR。那么情況大概有以下三類

  • 閾值為0分時(shí),即所有人的分?jǐn)?shù)都超過閾值,所有人都被判斷為好人,此時(shí)沒有找到任何壞人,即TPR為0;沒有任何好人被誤判為壞人,所以FPR為0
  • 閾值為100分時(shí),所有人都被判斷為壞人,此時(shí)所有壞人全部落網(wǎng),即TPR=1;所有好人全部被誤判為壞人,即FPR=1
  • 閾值為0到100分之間的分?jǐn)?shù)時(shí),每一個(gè)閾值都會(huì)得到對應(yīng)的TPR和FPR值,比如TPR=0.7,F(xiàn)PR=0.4

我們依次把閾值依次定位0、10、20,一直到100,就會(huì)得到一串TPR和FPR數(shù)據(jù)的集合,然后我們把FPR作為橫軸,TPR作為縱軸,把這些點(diǎn)在坐標(biāo)系中連起來,就可以得到一條ROC曲線:

圖中藍(lán)色的曲線就是ROC曲線,圖中的虛線是隨機(jī)線,隨機(jī)線上每個(gè)點(diǎn)TPR和FPR的值都是一樣的,和瞎猜的效果差不多,所以我們以隨機(jī)線為基準(zhǔn),ROC曲線越貼近于隨機(jī)線說明效果越差,越貼近于左上方,說明效果越好,因?yàn)檫@意味著TPR更大,F(xiàn)PR更小。

我們可以把兩個(gè)ROC曲線放在一個(gè)坐標(biāo)系內(nèi)做比較,確實(shí)可以看出來哪個(gè)模型更好,但是圖像化的比較方式依然不夠直觀,所以我們需要想辦法將ROC曲線轉(zhuǎn)化成一個(gè)數(shù)字,方便溝通和比較。

這個(gè)值就是AUC指標(biāo),AUC指標(biāo)其實(shí)就是ROC曲線右下方和橫坐標(biāo)軸閉合起來的面積大小,這個(gè)面積越大,意味著越靠近左上方,召回率越大且誤傷率越小,效果也越好

五、KS指標(biāo)

KS曲線與ROC曲線非常相像,二者區(qū)別如下:

  • ROC曲線的橫軸與縱軸分別是混淆矩陣中的FPR與TPR。而線上的每一個(gè)點(diǎn),都是在不同閾值下得到的FPR與TPR的集合
  • KS曲線就是把ROC曲線由原先的一條曲線拆解成了兩條曲線,原先ROC的橫軸(FPR)與縱軸(TPR)都在KS中變成了縱軸,而橫軸變成了不同的閾值

這樣我們就可以得到如下的KS曲線:

我們簡單了解一下縱軸的兩個(gè)指標(biāo):

  • 靈敏度(Sensitivity),前面提到過,也就是TPR,對應(yīng)圖中的黃色曲線
  • 特異性(Specificity),也稱為真反例率(True Negative Rate,TNR),是真反例占所有實(shí)際為反例的比例,其計(jì)算公式為: Specificity = TN / (TN + FP),而FPR=FP/(FP+TN),所以FPR=1-Specificity,對應(yīng)圖中的藍(lán)色曲線

總的來說,KS曲線是兩條線,其橫軸是閾值,縱軸是TPR與FPR。兩條曲線之間之間相距最遠(yuǎn)的地方對應(yīng)的閾值,就是最能劃分模型的閾值。

KS值是MAX(TPR – FPR),即兩曲線相距最遠(yuǎn)的距離

不同的產(chǎn)品,合適的KS值范圍都不一樣,需要結(jié)合實(shí)際情況去摸索。

一旦確定合適的KS值范圍之后,如果模型的KS值過低,說明模型欠擬合,基本不可用,但KS值非常高也不一定是好事情,我們可能需要分析原因,判斷是否是因?yàn)閿?shù)據(jù)問題導(dǎo)致的異常情況。

總結(jié)

本文介紹了分類模型常用的評(píng)估指標(biāo),讓大家對模型評(píng)估有了一個(gè)初步的概念。

下篇文章,我會(huì)詳細(xì)介紹回歸模型的評(píng)估指標(biāo),敬請期待。

本文由 @AI小當(dāng)家 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載

題圖來自 Unsplash,基于 CC0 協(xié)議

該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請登錄
  1. 有一點(diǎn)沒懂,如何確定閾值?

    來自遼寧 回復(fù)
    1. 閾值是自己根據(jù)業(yè)務(wù)情況定的,比如你們可以自己定50分,那么模型預(yù)測結(jié)果為55分時(shí),判斷為positive,但是如果你們定的60分為閾值,那同樣的預(yù)測結(jié)果就判斷為negative了。閾值到底定多少應(yīng)該可以通過計(jì)算不同閾值對模型結(jié)果準(zhǔn)確度的影響來反推出最合理的閾值。應(yīng)該是這個(gè)意思。

      來自浙江 回復(fù)
    2. 現(xiàn)實(shí)中你可以直接知道這個(gè)人是好人還是壞人,但是在系統(tǒng)中系統(tǒng)不知道,系統(tǒng)只會(huì)判斷。
      根據(jù)算法對一個(gè)人的特征打分,0-100分,此時(shí)你要告訴系統(tǒng)究竟多少分是好人和壞人的分界線,但是你也不知道,你需要一套判斷依據(jù)定一個(gè)最優(yōu)解。
      判斷依據(jù)就是召回率(準(zhǔn)確率)盡量高并且誤殺率盡量小,這就是AUC(算法沒看懂)。
      你先拿0進(jìn)去試(高于0分就是壞人),計(jì)算AUC1;再拿0.1去試,計(jì)算AUC1;再拿0.2去試,計(jì)算AUC3……..找出一個(gè)最大的AUC,對應(yīng)的投入的值就是閾值。

      來自上海 回復(fù)