一、ROC曲線簡介
接收者操作特徵曲線(Receiver Operating Characteristic Curve,簡稱ROC)曲線是描述二元分類模型分類能力的一種方法,用于衡量模型在真實類別不同的情況下的性能。
其橫坐標是假正例率(False Positive Rate,FPR),縱坐標是真正例率(True Positive Rate,TPR),FPR和TPR在統計學中分別代表著假正比率和真正比率。ROC曲線的圖像就是一條從 (0,0) 到 (1,1) 的曲線,左下角的點代表閥值為無限大時的情況,右上角的點代表閥值為無限小時的情況。
二、構建ROC曲線的基本流程
ROC曲線的構建主要是通過設定分類閾值來分別計算在不同閾值下的FPR和TPR,從而得到所需的曲線。
1. 載入數據
import pandas as pd
data = pd.read_csv('data.csv')
這裡的data是一個Pandas的DataFrame類型的數據。
2. 計算TPR和FPR
from sklearn.metrics import roc_curve
fpr, tpr, thresholds = roc_curve(data['True Label'], data['Score'])
其中,’True Label’是真實標籤,’Score’是分類器的分類得分
3. 計算AUC
from sklearn.metrics import auc
roc_auc = auc(fpr, tpr)
4. 繪製ROC曲線
import matplotlib.pyplot as plt
plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver operating characteristic example')
plt.legend(loc="lower right")
plt.show()
三、細節問題
1. 閾值選擇
ROC曲線的形狀不僅與測試數據集的真實性有關,還與測試數據集的規模、質量以及分類閾值的選擇等因素有關。通常,我們會根據測試數據集來選擇一個合適的分類閾值。
2. AUC的意義
AUC的意義在於:如果有一個樣本對,其中一個來自正常人群,另一個來自癌症人群,那麼分類器正確排列這兩個樣本對的概率就是AUC。
3. 不同分類模型的ROC曲線比較
如果要比較不同的分類模型的ROC曲線,可以繪製在同一張圖上。此時,我們需要在圖例中註明不同的模型名稱,以區分不同模型的ROC曲線。
4. 樣本不平衡情況下ROC曲線的應用
當測試數據集的正負樣本的比例極其不平衡時,ROC曲線的作用非常明顯,因為此時不同分類器的分類效果會顯示得非常清楚。
原創文章,作者:EDQWH,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/332258.html