如何評(píng)估機(jī)器學(xué)習(xí)模型的性能
您可以整天訓(xùn)練有監(jiān)督的機(jī)器學(xué)習(xí)模型,但是除非您評(píng)估其性能,否則您永遠(yuǎn)無(wú)法知道模型是否有用。這個(gè)詳細(xì)的討論回顧了您必須考慮的各種性能指標(biāo),并對(duì)它們的含義和工作方式提供了直觀的解釋。
為什么需要評(píng)估?
讓我從一個(gè)非常簡(jiǎn)單的例子開(kāi)始。
羅賓和山姆都開(kāi)始為工科大學(xué)準(zhǔn)備入學(xué)考試。他們倆共享一個(gè)房間,并在解決數(shù)字問(wèn)題時(shí)付出了相同的努力。他們倆全年學(xué)習(xí)了幾乎相同的時(shí)間,并參加了期末考試。令人驚訝的是,羅賓清除了,但薩姆沒(méi)有清除。當(dāng)被問(wèn)到時(shí),我們知道他們的準(zhǔn)備策略有一個(gè)區(qū)別,即“測(cè)試系列”。羅賓加入了一個(gè)測(cè)試系列,他過(guò)去通過(guò)參加那些考試來(lái)測(cè)試他的知識(shí)和理解力,然后進(jìn)一步評(píng)估他落后的地方。但是山姆很有信心,他只是不斷地訓(xùn)練自己。
以相同的方式,如上所述,可以使用許多參數(shù)和新技術(shù)對(duì)機(jī)器學(xué)習(xí)模型進(jìn)行廣泛的訓(xùn)練,但是只要您跳過(guò)它的評(píng)估,就不能相信它。
混淆矩陣
混淆矩陣 是一個(gè)模型的預(yù)測(cè)和數(shù)據(jù)點(diǎn)的實(shí)際類別標(biāo)簽之間的相關(guān)性的矩陣。
假設(shè)您正在建立一個(gè)模型來(lái)檢測(cè)一個(gè)人是否患有糖尿病。進(jìn)行訓(xùn)練測(cè)試拆分后,您獲得了長(zhǎng)度為100的測(cè)試集,其中70個(gè)數(shù)據(jù)點(diǎn)標(biāo)記為正(1),而30個(gè)數(shù)據(jù)點(diǎn)標(biāo)記為負(fù)(0)。現(xiàn)在,讓我為您的測(cè)試預(yù)測(cè)繪制矩陣:
在70個(gè)實(shí)際的陽(yáng)性數(shù)據(jù)點(diǎn)中,您的模型預(yù)測(cè)64個(gè)點(diǎn)為正,6個(gè)點(diǎn)為負(fù)。在30個(gè)實(shí)際負(fù)點(diǎn)中,它預(yù)測(cè)3個(gè)正點(diǎn)和27個(gè)負(fù)點(diǎn)。
注意: 在“ 真肯定”,“真否定”,“假肯定”和“假否定”表示法中 ,請(qǐng)注意,第二項(xiàng)(“正”或“負(fù)”)表示您的預(yù)測(cè),而第一項(xiàng)則表示您預(yù)測(cè)的是對(duì)還是錯(cuò)。
基于上面的矩陣,我們可以定義一些非常重要的比率:
TPR(真正率)=(真正/實(shí)際正)
TNR(真負(fù)利率)=(真負(fù)/實(shí)際負(fù))
FPR(誤報(bào)率)=(誤報(bào)/實(shí)際負(fù))
FNR(假負(fù)率)=(假負(fù)/實(shí)際正數(shù))
對(duì)于我們的糖尿病檢測(cè)模型,我們可以計(jì)算以下比率:
TPR = 91.4%
TNR = 90%
FPR = 10%
FNR = 8.6%
如果您希望模型很聰明,那么模型必須正確預(yù)測(cè)。這意味著您的 “正肯定” 和 “負(fù)否定” 應(yīng)盡可能高 ,同時(shí),您需要將錯(cuò)誤 肯定 和 錯(cuò)誤否定 應(yīng)盡可能少的 錯(cuò)誤降至最低 。 同樣在比率方面,您的 TPR和TNR 應(yīng)該很高, 而 FPR和FNR 應(yīng)該非常低 ,
智能模型: TPR↑,TNR↑,F(xiàn)PR↓,F(xiàn)NR↓
愚蠢的模型: TPR,TNR,F(xiàn)PR,F(xiàn)NR的任何其他組合
可能有人爭(zhēng)辯說(shuō),不可能平等地照顧所有四個(gè)比率,因?yàn)樽罱K沒(méi)有一種模型是完美的。那我們?cè)撛趺崔k?
是的,它是真的。因此,這就是為什么我們要建立模型并牢記領(lǐng)域的原因。在某些領(lǐng)域要求我們將特定比率作為主要優(yōu)先事項(xiàng),即使以其他比率較差為代價(jià)。例如,在癌癥診斷中,我們不能不惜一切代價(jià)錯(cuò)過(guò)任何陽(yáng)性患者。因此,我們應(yīng)該將TPR保持在最大值,將FNR保持在接近0的水平。即使我們預(yù)測(cè)有任何健康的患者被診斷出,也仍然可以,因?yàn)樗梢赃M(jìn)行進(jìn)一步檢查。
準(zhǔn)確性
準(zhǔn)確度是其字面意思,表示模型的準(zhǔn)確度。
準(zhǔn)確性=正確的預(yù)測(cè)/總預(yù)測(cè)
通過(guò)使用混淆矩陣,精度=(TP + TN)/(TP + TN + FP + FN)
準(zhǔn)確性是我們可以使用的最簡(jiǎn)單的性能指標(biāo)之一。但是讓我警告您,準(zhǔn)確性有時(shí)會(huì)導(dǎo)致您對(duì)模型產(chǎn)生錯(cuò)誤的幻想,因此您應(yīng)該首先了解所使用的數(shù)據(jù)集和算法,然后才決定是否使用準(zhǔn)確性。
在討論準(zhǔn)確性的失敗案例之前,讓我為您介紹兩種類型的數(shù)據(jù)集:
-
平衡的: 一個(gè)數(shù)據(jù)集,包含所有標(biāo)簽/類別幾乎相等的條目。例如,在1000個(gè)數(shù)據(jù)點(diǎn)中,600個(gè)為正,400個(gè)為負(fù)。
-
不平衡: 一種數(shù)據(jù)集,其中包含偏向特定標(biāo)簽/類別的條目的分布。例如,在1000個(gè)條目中,有990個(gè)為正面類別,有10個(gè)為負(fù)面類別。
非常重要:處理不平衡的測(cè)試集時(shí),切勿使用準(zhǔn)確性作為度量。
為什么?
假設(shè)您有一個(gè)不平衡的測(cè)試集,其中包含 990(+ ve) 和 10(-ve) 的1000個(gè)條目 。最終,您以某種方式最終創(chuàng)建了一個(gè)糟糕的模型,該模型總是會(huì)因列車不平衡而始終預(yù)測(cè)“ + ve”。現(xiàn)在,當(dāng)您預(yù)測(cè)測(cè)試集標(biāo)簽時(shí),它將始終預(yù)測(cè)為“ + ve”。因此,從1000個(gè)測(cè)試設(shè)定點(diǎn)中,您可以獲得1000個(gè)“ + ve”預(yù)測(cè)。然后你的準(zhǔn)確性就會(huì)來(lái)
990/1000 = 99%
哇!驚人!您很高興看到如此出色的準(zhǔn)確性得分。
但是,您應(yīng)該知道您的模型確實(shí)很差,因?yàn)樗偸穷A(yù)測(cè)“ + ve”標(biāo)簽。
非常重要:同樣,我們無(wú)法比較兩個(gè)返回概率得分并具有相同準(zhǔn)確性的模型。
有某些模型可以像Logistic回歸那樣給出每個(gè)數(shù)據(jù)點(diǎn)屬于特定類的概率。讓我們來(lái)考慮這種情況:
如您所見(jiàn), 如果P(Y = 1)> 0.5,則預(yù)測(cè)為類1。 當(dāng)我們計(jì)算M1和M2的精度時(shí),得出的結(jié)果相同,但是很明顯, M1比M2好得多通過(guò)查看概率分?jǐn)?shù)。
Log Loss 處理了這個(gè)問(wèn)題 ,我將在稍后的博客中進(jìn)行解釋。
精度和召回率
精度: 這是真實(shí)陽(yáng)性率(TP)與陽(yáng)性預(yù)測(cè)總數(shù)的比率。基本上,它告訴我們您的正面預(yù)測(cè)實(shí)際上是正面多少次。
回想一下: 它不過(guò)是TPR(上文所述的“真陽(yáng)性率”)。它告訴我們所有正因素中有多少被預(yù)測(cè)為正。
F度量: 精確度和查全率的諧波平均值。
為了理解這一點(diǎn),讓我們看這個(gè)例子:當(dāng)您在百度中查詢時(shí),它返回40個(gè)頁(yè)面,但是只有30個(gè)相關(guān)。但是您的朋友告訴您,該查詢共有100個(gè)相關(guān)頁(yè)面。所以它的精度是30/40 = 3/4 = 75%,而召回率是30/100 = 30%。因此,在這種情況下,精度是“搜索結(jié)果的有用程度”,召回率是“結(jié)果的完成程度”。
ROC和AUC
接收器工作特性曲線(ROC):
它是 通過(guò)從模型給出的概率得分的反向排序列表中獲取多個(gè)閾值而計(jì)算出的 TPR(真正率)和FPR(假正率)之間的關(guān)系圖 。
現(xiàn)在,我們?nèi)绾卫L制ROC?
為了回答這個(gè)問(wèn)題,讓我?guī)氐缴厦娴谋?。僅考慮M1模型。您會(huì)看到,對(duì)于所有x值,我們都有一個(gè)概率得分。在該表中,我們將得分大于0.5的數(shù)據(jù)點(diǎn)分配為類別1。現(xiàn)在,以概率分?jǐn)?shù)的降序?qū)λ兄颠M(jìn)行排序,并以等于所有概率分?jǐn)?shù)的閾值一一取值。然后,我們將獲得閾值= [0.96,0.94,0.92,0.14,0.11,0.08]。對(duì)應(yīng)于每個(gè)閾值,預(yù)測(cè)類別,并計(jì)算TPR和FPR。您將獲得6對(duì)TPR和FPR。只需繪制它們,您將獲得ROC曲線。
注意:由于最大TPR和FPR值為1,因此ROC曲線下的面積(AUC)在0和1之間。
藍(lán)色虛線下方的區(qū)域是0.5。AUC = 0表示模型很差,AUC = 1表示模型完美。只要您模型的AUC分?jǐn)?shù)大于0.5。您的模型很有意義,因?yàn)榧词故请S機(jī)模型也可以得分0.5 AUC。
非常重要: 即使是從不平衡的數(shù)據(jù)集生成的啞模型,您也可以獲得很高的AUC。因此,在處理不平衡的數(shù)據(jù)集時(shí)請(qǐng)務(wù)必小心。
注意: 只要維持順序,AUC與數(shù)值概率分?jǐn)?shù)無(wú)關(guān)。只要所有模型在根據(jù)概率得分排序后給出相同順序的數(shù)據(jù)點(diǎn),所有模型的AUC都將相同。
對(duì)數(shù)損失
該性能度量檢查數(shù)據(jù)點(diǎn)的概率得分與截止得分的偏差,并分配與偏差成比例的懲罰。
對(duì)于二進(jìn)制分類中的每個(gè)數(shù)據(jù)點(diǎn),我們使用以下公式計(jì)算對(duì)數(shù)損失:
其中p =數(shù)據(jù)點(diǎn)屬于類別1的概率,y是類別標(biāo)簽(0或1)。
假設(shè)某些x_1的p_1為0.95,某些x_2的p_2為0.55,并且符合1類條件的截止概率為0.5。然后兩者都符合類別1的條件,但是p_2的對(duì)數(shù)損失將比p_1的對(duì)數(shù)損失大得多。
從曲線中可以看到,對(duì)數(shù)損失的范圍是[0,無(wú)窮大]。
對(duì)于多類別分類中的每個(gè)數(shù)據(jù)點(diǎn),我們使用以下公式計(jì)算對(duì)數(shù)損失:
如果x(o,c)屬于類別1,則y(o,c)=1。其余概念相同。
測(cè)定系數(shù)
用 R 2 表示 。 在預(yù)測(cè)測(cè)試集的目標(biāo)值時(shí),我們會(huì)遇到一些誤差(e_i),這是預(yù)測(cè)值與實(shí)際值之間的差。
假設(shè)我們有一個(gè)包含n個(gè)條目的測(cè)試集。眾所周知,所有數(shù)據(jù)點(diǎn)都有一個(gè)目標(biāo)值,例如[y1,y2,y3…….yn]。讓我們將測(cè)試數(shù)據(jù)的預(yù)測(cè)值設(shè)為[f1,f2,f3,……fn]。
通過(guò)使用以下公式計(jì)算 殘差平方 和,即所有誤差(e_i)平方的總和, 其中fi是第i個(gè)數(shù)據(jù)點(diǎn)的模型的預(yù)測(cè)目標(biāo)值。
取所有實(shí)際目標(biāo)值的平均值:
然后計(jì)算與測(cè)試集目標(biāo)值的方差成正比的 總平方和 :
如果同時(shí)觀察兩個(gè)平方和的公式,則可以看到唯一的區(qū)別是第二項(xiàng),即y_bar和fi。平方總和在某種程度上給我們一種直覺(jué),即它僅與殘差平方和相同,但預(yù)測(cè)值為[ȳ,ȳ,ȳ,…….ȳ,n次]。是的,您的直覺(jué)是正確的。假設(shè)有一個(gè)非常簡(jiǎn)單的均值模型,無(wú)論輸入數(shù)據(jù)如何,均能每次預(yù)測(cè)目標(biāo)值的平均值。
現(xiàn)在我們將R²表示為:
正如您現(xiàn)在所看到的,R²是一種度量,用于將模型與非常簡(jiǎn)單的均值模型進(jìn)行比較,該均值模型每次均返回目標(biāo)值的平均值,而與輸入數(shù)據(jù)無(wú)關(guān)。比較有4種情況:
情況1:SS_R = 0
(R²= 1)完美的模型,完全沒(méi)有錯(cuò)誤。
情況2:SS_R> SS_T
(R²<0)模型甚至比簡(jiǎn)單的均值模型差。
情況3:SS_R = SS_T
(R²= 0)模型與簡(jiǎn)單均值模型相同。
情況4:SS_R <SS_T
(0 <R²<1)模型還可以。
摘要
因此,簡(jiǎn)而言之,您應(yīng)該非常了解您的數(shù)據(jù)集和問(wèn)題,然后您始終可以創(chuàng)建一個(gè)混淆矩陣,并檢查其準(zhǔn)確性,精度,召回率,并繪制ROC曲線,并根據(jù)需要找出AUC。但是,如果您的數(shù)據(jù)集不平衡,請(qǐng)不要使用準(zhǔn)確性作為度量。如果您想對(duì)模型進(jìn)行更深入的評(píng)估,以使概率分?jǐn)?shù)也得到權(quán)重,請(qǐng)選擇對(duì)數(shù)損失。
請(qǐng)記住,請(qǐng)務(wù)必評(píng)估您的訓(xùn)練!