機器學習 - AUC-ROC曲線



AUC-ROC曲線是機器學習中常用的效能指標,用於評估二元分類模型的效能。它是真陽性率 (TPR) 與假陽性率 (FPR) 在不同閾值下的曲線圖。

什麼是AUC-ROC曲線?

AUC-ROC曲線是二元分類模型在不同閾值下效能的圖形表示。它在y軸上繪製真陽性率 (TPR),在x軸上繪製假陽性率 (FPR)。TPR是模型正確識別出的實際陽性案例的比例,而FPR是模型錯誤地將實際陰性案例分類為陽性案例的比例。

AUC-ROC曲線是評估二元分類模型整體效能的有用指標,因為它考慮了不同閾值下TPR和FPR之間的權衡。曲線下面積 (AUC) 代表了模型在所有可能的閾值下的整體效能。完美的分類器AUC為1.0,而隨機分類器的AUC為0.5。

為什麼AUC-ROC曲線很重要?

AUC-ROC曲線是機器學習中重要的效能指標,因為它提供了模型區分陽性和陰性案例能力的綜合衡量。

當資料不平衡時,它特別有用,這意味著一個類別比另一個類別普遍得多。在這種情況下,僅靠準確率可能無法很好地衡量模型的效能,因為它可能會被多數類別的普遍性所歪曲。

AUC-ROC曲線透過考慮TPR和FPR,提供了對模型效能更均衡的視角。

在Python中實現AUC ROC曲線

現在我們瞭解了AUC-ROC曲線是什麼以及為什麼它很重要,讓我們看看如何在Python中實現它。我們將使用Scikit-learn庫來構建二元分類模型並繪製AUC-ROC曲線。

首先,我們需要匯入必要的庫並載入資料集。在這個例子中,我們將使用scikit-learn中的乳腺癌資料集。

示例

import numpy as np
import pandas as pd
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_auc_score, roc_curve
import matplotlib.pyplot as plt

# load the dataset
data = load_breast_cancer()
X = data.data
y = data.target

# split the data into train and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

接下來,我們將把邏輯迴歸模型擬合到訓練集,並在測試集上進行預測。

# fit a logistic regression model
lr = LogisticRegression()
lr.fit(X_train, y_train)

# make predictions on the test set
y_pred = lr.predict_proba(X_test)[:, 1]

進行預測後,我們可以使用scikit-learn中的`roc_auc_score()`函式計算AUC-ROC分數。

# calculate the AUC-ROC score
auc_roc = roc_auc_score(y_test, y_pred)
print("AUC-ROC Score:", auc_roc)

這將輸出邏輯迴歸模型的AUC-ROC分數。

最後,我們可以使用`roc_curve()`函式和matplotlib庫繪製ROC曲線。

# plot the ROC curve
fpr, tpr, thresholds = roc_curve(y_test, y_pred)
plt.plot(fpr, tpr)
plt.title('ROC Curve')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.show()

輸出

執行此程式碼時,它將繪製邏輯迴歸模型的ROC曲線。

ROC curve

此外,它還將在終端上列印AUC-ROC分數:

AUC-ROC Score: 0.9967245332459875
廣告