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