首頁 > 後端開發 > Python教學 > python模型效能ROC和AUC是什麼

python模型效能ROC和AUC是什麼

WBOY
發布: 2023-05-13 14:31:13
轉載
1579 人瀏覽過

正文

ROC 分析和曲線下面積(AUC) 是資料科學中廣泛使用的工具,借鑒了訊號處理,用於評估不同參數化下模型的質量,或比較兩個或多個模型的性能。

傳統的績效指標,如準確率和召回率,在很大程度上依賴正樣本的觀察值。因此,ROC 和 AUC 使用真陽性率和假陽性率來評估質量,同時考慮正面和負面觀察結果。

從分解問題到使用機器學習解決問題的過程有多個步驟。它涉及資料收集、清理和特徵工程、建構模型,最後是,評估模型效能。

當您評估模型的品質時,通常會使用精確度和召回率等指標,也分別稱為資料探勘領域的置信度和靈敏度。

這些指標將預測值與通常來自保留集的實際觀察值進行比較,使用混淆矩陣進行視覺化。

python模型效能ROC和AUC是什麼

讓我們先專注於精確度,也稱為陽性預測值。使用混淆矩陣,您可以將 Precision 建構為所有真實陽性與所有預測陽性的比率。

python模型效能ROC和AUC是什麼

召回率,也稱為真陽性率,表示真陽性與觀察到的和預測的所有陽性的比率。

python模型效能ROC和AUC是什麼

使用混淆矩陣中的不同觀察集來描述PrecisionRecall,您可以開始了解這些指標如何提供模型性能的視圖。

值得注意的是 Precision 和 Recall 只專注於正例和預測,而不考慮任何負例。此外,他們不會將模型的表現與中位數場景進行比較,中位數場景只是隨機猜測。

1. ROC 曲線

ROC 作為總結工具,用於視覺化 Precision 和 Recall 之間的權衡。 ROC 分析使用 ROC 曲線來確定二進位訊號的值有多少被雜訊污染,即隨機性。它為連續預測器提供了一系列操作點的靈敏度和特異性摘要。 ROC 曲線是透過繪製 x 軸上的假陽性率與 y 軸上的真陽性率來獲得的。

由於真陽性率是檢測訊號的機率,而假陽性率是誤報的機率,因此 ROC 分析也廣泛用於醫學研究,以確定可靠地檢測疾病或其他行為的閾值。

python模型效能ROC和AUC是什麼

一個完美的模型將具有等於 1 的誤報率和真陽性率,因此它將是 ROC 圖左上角的單一操作點。而最差的可能模型將在 ROC 圖的左下角有一個單一的操作點,其中誤報率等於 1,真陽性率等於 0。

隨機猜測模型有 50% 的機會正確預測結果,因此假陽性率將始終等於真陽性率。這就是為什麼圖中有一條對角線,代表偵測訊號與雜訊的機率為 50/50。

2. AUC 面積

要全面分析ROC 曲線並將模型的性能與其他幾個模型進行比較,您實際上需要計算曲線下面積(AUC),在文獻中也稱為c 統計量。曲線下面積 (AUC) 的值介於 0 和 1 之間,因為曲線繪製在 1x1 網格上,並且與訊號理論平行,它是訊號可檢測性的度量。

這是一個非常有用的統計數據,因為它可以讓我們了解模型對真實觀察結果和錯誤觀察結果的排名有多好。它實際上是 Wilcoxon-Mann-Whitney 秩和檢定的歸一化版本,它檢驗零假設,其中兩個有序測量樣本是從單一分佈 中抽取的。

要繪製 ROC 曲線併計算曲線下面積 (AUC),您決定使用 SckitLearn 的 RocCurveDisplay 方法並將多層感知器與隨機森林模型進行比較,以嘗試解決相同的分類任務。

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)
登入後複製

python模型效能ROC和AUC是什麼

#

以上是python模型效能ROC和AUC是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板