
使用DeepSeek和Claude繪制出高質量的SVG 圖片
import matplotlib.pyplot as plt
# 真實標簽和預測概率
y_true = [1, 1, 0, 0, 1]
y_score = [0.9, 0.8, 0.7, 0.6, 0.4]
# 計算FPR, TPR和閾值
fpr, tpr, thresholds = roc_curve(y_true, y_score)
roc_auc = auc(fpr, tpr)
# 繪圖
plt.figure()
plt.plot(fpr, tpr, color='darkorange', lw=2, label=f'ROC curve (AUC = {roc_auc:.2f})')
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve Example')
plt.legend(loc="lower right")
plt.show()
通過比較不同模型的ROC曲線和AUC值,可以直觀判斷哪個模型在整體性能上更優。
在醫療診斷(如癌癥篩查)等場景中,假陰性(漏診)的代價可能遠高于假陽性(誤診)。此時可通過ROC曲線選擇一個高TPR的閾值。
在欺詐檢測、罕見病診斷等類別分布極不均衡的場景中,準確率(Accuracy)會嚴重失真,而ROC曲線對類別分布不敏感,更適合作為評估指標。
假設一個信用卡數據集包含10,000條交易記錄,其中100條為欺詐(正類)。訓練兩個模型:
雖然模型A的AUC更高,但通過觀察ROC曲線發現,當FPR<0.1時,模型B的TPR更高。若業務要求嚴格控制誤報率(FPR),則模型B可能更優。
在肺癌篩查中,假陰性(漏診)可能導致患者錯過最佳治療時間。通過ROC曲線選擇一個TPR≥0.95的閾值,即使這會增加FPR(假陽性),也能最大限度降低漏診風險。
ROC曲線通過動態調整分類閾值,直觀展示了模型在**查全率(TPR)和誤報率(FPR)**之間的權衡關系。其核心價值在于:
然而,ROC曲線并非萬能工具。在實際應用中,需結合PR曲線、F1分數等指標,才能全面評估模型的綜合性能。理解ROC曲線的數學本質和應用場景,將有助于數據科學家在復雜業務需求中做出更優決策。