python模型性能ROC和AUC分析詳解
正文
本文將介紹模型性能分析的兩個(gè)方法:ROC & AUC。
ROC 分析和曲線下面積 (AUC) 是數(shù)據(jù)科學(xué)中廣泛使用的工具,借鑒了信號(hào)處理,用于評(píng)估不同參數(shù)化下模型的質(zhì)量,或比較兩個(gè)或多個(gè)模型的性能。
傳統(tǒng)的性能指標(biāo),如準(zhǔn)確率和召回率,在很大程度上依賴于正樣本的觀察。因此,ROC 和 AUC 使用真陽(yáng)性率和假陽(yáng)性率來(lái)評(píng)估質(zhì)量,同時(shí)考慮到正面和負(fù)面觀察結(jié)果。
從分解問(wèn)題到使用機(jī)器學(xué)習(xí)解決問(wèn)題的過(guò)程有多個(gè)步驟。它涉及數(shù)據(jù)收集、清理和特征工程、構(gòu)建模型,最后是,評(píng)估模型性能。
當(dāng)您評(píng)估模型的質(zhì)量時(shí),通常會(huì)使用精度和召回率等指標(biāo),也分別稱為數(shù)據(jù)挖掘領(lǐng)域的置信度和靈敏度。
這些指標(biāo)將預(yù)測(cè)值與通常來(lái)自保留集的實(shí)際觀察值進(jìn)行比較,使用混淆矩陣進(jìn)行可視化。

讓我們首先關(guān)注精度,也稱為陽(yáng)性預(yù)測(cè)值。使用混淆矩陣,您可以將 Precision 構(gòu)建為所有真實(shí)陽(yáng)性與所有預(yù)測(cè)陽(yáng)性的比率。

召回率,也稱為真陽(yáng)性率,表示真陽(yáng)性與觀察到的和預(yù)測(cè)的所有陽(yáng)性的比率。

使用混淆矩陣中的不同觀察集來(lái)描述 Precision 和 Recall,您可以開(kāi)始了解這些指標(biāo)如何提供模型性能的視圖。
值得注意的是 Precision 和 Recall 只關(guān)注正例和預(yù)測(cè),而不考慮任何負(fù)例。此外,他們不會(huì)將模型的性能與中值場(chǎng)景進(jìn)行比較,中值場(chǎng)景只是隨機(jī)猜測(cè)。
1. ROC 曲線
ROC 作為匯總工具,用于可視化 Precision 和 Recall 之間的權(quán)衡。ROC 分析使用 ROC 曲線來(lái)確定二進(jìn)制信號(hào)的值有多少被噪聲污染,即隨機(jī)性。它為連續(xù)預(yù)測(cè)器提供了一系列操作點(diǎn)的靈敏度和特異性摘要。ROC 曲線是通過(guò)繪制 x 軸上的假陽(yáng)性率與 y 軸上的真陽(yáng)性率來(lái)獲得的。
由于真陽(yáng)性率是檢測(cè)信號(hào)的概率,而假陽(yáng)性率是誤報(bào)的概率,因此 ROC 分析也廣泛用于醫(yī)學(xué)研究,以確定可靠地檢測(cè)疾病或其他行為的閾值。

一個(gè)完美的模型將具有等于 1 的誤報(bào)率和真陽(yáng)性率,因此它將是 ROC 圖左上角的單個(gè)操作點(diǎn)。而最差的可能模型將在 ROC 圖的左下角有一個(gè)單一的操作點(diǎn),其中誤報(bào)率等于 1,真陽(yáng)性率等于 0。
隨機(jī)猜測(cè)模型有 50% 的機(jī)會(huì)正確預(yù)測(cè)結(jié)果,因此假陽(yáng)性率將始終等于真陽(yáng)性率。這就是為什么圖中有一條對(duì)角線,代表檢測(cè)信號(hào)與噪聲的概率為 50/50。
2. AUC 面積
要全面分析 ROC 曲線并將模型的性能與其他幾個(gè)模型進(jìn)行比較,您實(shí)際上需要計(jì)算曲線下面積 (AUC),在文獻(xiàn)中也稱為 c 統(tǒng)計(jì)量。曲線下面積 (AUC) 的值介于 0 和 1 之間,因?yàn)榍€繪制在 1x1 網(wǎng)格上,并且與信號(hào)理論平行,它是信號(hào)可檢測(cè)性的度量。
這是一個(gè)非常有用的統(tǒng)計(jì)數(shù)據(jù),因?yàn)樗梢宰屛覀兞私饽P蛯?duì)真實(shí)觀察結(jié)果和錯(cuò)誤觀察結(jié)果的排名有多好。它實(shí)際上是 Wilcoxon-Mann-Whitney 秩和檢驗(yàn)的歸一化版本,它檢驗(yàn)零假設(shè),其中兩個(gè)有序測(cè)量樣本是從單個(gè)分布 中抽取的。
要繪制 ROC 曲線并計(jì)算曲線下面積 (AUC),您決定使用 SckitLearn 的 RocCurveDisplay 方法并將多層感知器與隨機(jī)森林模型進(jìn)行比較,以嘗試解決相同的分類任務(wù)。
import matplotlib.pyplot as plt
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import roc_auc_score, RocCurveDisplay
def plot_roc(model, test_features, test_targets):
"""
Plotting the ROC curve for a given Model and the ROC curve for a Random Forests Models
"""
# comparing the given model with a Random Forests model
random_forests_model = RandomForestClassifier(random_state=42)
random_forests_model.fit(train_features, train_targets)
rfc_disp = RocCurveDisplay.from_estimator(random_forests_model, test_features, test_targets)
model_disp = RocCurveDisplay.from_estimator(model, test_features, test_targets, ax=rfc_disp.ax_)
model_disp.figure_.suptitle("ROC curve: Multilayer Perceptron vs Random Forests")
plt.show()
# using perceptron model as input
plot_roc(ml_percetron_model, test_features, test_targets)

歡迎Star -> 學(xué)習(xí)目錄
以上就是python模型性能ROC和AUC分析詳解的詳細(xì)內(nèi)容,更多關(guān)于python模型性能ROC AUC的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
PyTorch之torch.randn()如何創(chuàng)建正態(tài)分布隨機(jī)數(shù)
這篇文章主要介紹了PyTorch之torch.randn()如何創(chuàng)建正態(tài)分布隨機(jī)數(shù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
wxPython:python首選的GUI庫(kù)實(shí)例分享
wxPython是Python語(yǔ)言的一套優(yōu)秀的GUI圖形庫(kù)。允許Python程序員很方便的創(chuàng)建完整的、功能鍵全的GUI用戶界面。 wxPython是作為優(yōu)秀的跨平臺(tái)GUI庫(kù)wxWidgets的Python封裝和Python模塊的方式提供給用戶的2019-10-10
關(guān)于Python常用模塊時(shí)間模塊time
這篇文章主要介紹了關(guān)于Python常用模塊時(shí)間模塊time,這個(gè)模塊是Python自帶的,我們不需要去下載,直接導(dǎo)入就可以使用,需要的朋友可以參考下2023-04-04
如何在Flask中實(shí)現(xiàn)數(shù)據(jù)分組流程詳解
在Flask中,數(shù)據(jù)分組是指將一組數(shù)據(jù)按照某種方式進(jìn)行分類,以便更好地對(duì)數(shù)據(jù)進(jìn)行處理和展示,可以使用Python內(nèi)置的itertools模塊中的groupby方法,或者使用SQL語(yǔ)句中的GROUP?BY子句來(lái)實(shí)現(xiàn)數(shù)據(jù)分組,這篇文章介紹了在Flask中實(shí)現(xiàn)數(shù)據(jù)分組,感興趣的同學(xué)可以參考下文2023-05-05
python數(shù)據(jù)庫(kù)編程 Mysql實(shí)現(xiàn)通訊錄
這篇文章主要為大家詳細(xì)介紹了python數(shù)據(jù)庫(kù)編程,Mysql實(shí)現(xiàn)通訊錄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03
Python中的五個(gè)神仙級(jí)函數(shù)一起來(lái)看看
這篇文章主要為大家介紹了Python中的五個(gè)神仙級(jí)函數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-01-01
Python的Flask站點(diǎn)中集成xhEditor文本編輯器的教程
xhEditor是基于jQuery的Web端文本編輯器,基本的圖片上傳等功能也都帶有,這里我們就來(lái)看一下Python的Flask站點(diǎn)中集成xhEditor文本編輯器的教程2016-06-06
在OpenCV里使用Camshift算法的實(shí)現(xiàn)
這篇文章主要介紹了在OpenCV里使用Camshift算法的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11

