AUC (Area Under Curve)
Die Fläche unter der ROC-Kurve – ein einzelner Wert zwischen 0 und 1, der die Gesamtqualität eines Klassifikators misst.
Ein Diagramm zur Bewertung von Klassifikatoren – zeigt das Verhältnis von True Positive Rate zu False Positive Rate bei verschiedenen Schwellenwerten.
Die ROC Curve zeigt, wie gut ein Klassifikator zwischen Klassen unterscheidet.
TPR (True Positive Rate) = TP / (TP + FN) = Recall
FPR (False Positive Rate) = FP / (FP + TN)
1 │ ╭────────── Perfekt
│ ╱
TPR │ ╱ ← Gutes Modell
│ ╱
│╱.............. Zufall (Diagonale)
0 └─────────────────
0 1
FPR
from sklearn.metrics import roc_curve, roc_auc_score
import matplotlib.pyplot as plt
# Vorhersage-Wahrscheinlichkeiten
y_true = [0, 0, 1, 1, 1, 0, 1, 0]
y_scores = [0.1, 0.4, 0.35, 0.8, 0.7, 0.3, 0.9, 0.2]
# ROC Curve
fpr, tpr, thresholds = roc_curve(y_true, y_scores)
# Plot
plt.plot(fpr, tpr, label=f'AUC = {roc_auc_score(y_true, y_scores):.2f}')
plt.plot([0, 1], [0, 1], 'k--', label='Random')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.legend()
# Youden's J statistic: maximiert TPR - FPR
j_scores = tpr - fpr
best_idx = np.argmax(j_scores)
best_threshold = thresholds[best_idx] ROC ist wie ein Regler zwischen 'alles als positiv markieren' und 'nichts als positiv markieren'. Die Kurve zeigt, wie gut dein Modell bei jeder Einstellung ist.
X-Achse: False Positive Rate (FPR)
Y-Achse: True Positive Rate (TPR/Recall)
Perfektes Modell: Kurve geht zur oberen linken Ecke
Modellvergleich
Welches Modell ist besser?
Schwellenwert-Wahl
Optimalen Cutoff finden
Imbalanced Data
Robuster als Accuracy
ROC bei balancierten Klassen. Precision-Recall bei stark unbalancierten (z.B. Fraud Detection mit 0.1% Positiven).
Zufälliges Raten. Alles darüber ist besser als Zufall, darunter schlechter.