<EbeneX/>
Mathematik Grundlagen · Updated 3. Juli 2026

AUC (Area Under Curve)

Definition

Die Fläche unter der ROC-Kurve – ein einzelner Wert zwischen 0 und 1, der die Gesamtqualität eines Klassifikators misst.

Fortgeschritten 3 Min. Lesezeit EN: Area Under the ROC Curve (AUC-ROC)

Einfach erklärt

AUC fasst die ROC-Kurve in einer Zahl zusammen: Wie gut trennt das Modell positive von negativen Beispielen?

AUC nahe 1.0: Sehr gute Trennung
AUC nahe 0.5: Kaum besser als zufälliges Raten
AUC unter 0.5: Ranking möglicherweise invertiert oder fehlerhaft

Interpretation:

AUC = P(score(positiv) > score(negativ))

"Wenn ich zufällig ein positives und ein negatives 
Beispiel wähle, wie wahrscheinlich rankt das Modell 
das positive höher?"

Technischer Deep Dive

AUC berechnen

from sklearn.metrics import roc_auc_score

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]

auc = roc_auc_score(y_true, y_scores)
print(f"AUC: {auc:.3f}")

Multi-Class AUC

from sklearn.metrics import roc_auc_score

# One-vs-Rest für Multi-Class
auc_ovr = roc_auc_score(y_true, y_proba, multi_class='ovr')

# One-vs-One
auc_ovo = roc_auc_score(y_true, y_proba, multi_class='ovo')

Mathematische Intuition

Die probabilistische Interpretation lässt sich direkt nachrechnen: AUC entspricht dem Anteil aller Positiv-Negativ-Paare, bei denen das positive Beispiel den höheren Score erhält (Gleichstände zählen halb):

AUC = (Anzahl korrekt gerankter Paare + 0.5 × Gleichstände)
      / (Anzahl Positive × Anzahl Negative)

Das macht AUC zu einer reinen Ranking-Metrik: Sie ist identisch mit der Mann-Whitney-U-Statistik (normalisiert) und invariant gegenüber jeder monotonen Transformation der Scores. Ein Modell mit AUC 0.9 kann trotzdem völlig unkalibrierte Wahrscheinlichkeiten liefern – AUC sagt nichts darüber aus, ob ein Score von 0.8 wirklich „80 % Wahrscheinlichkeit” bedeutet.

import numpy as np

def auc_by_pairs(y_true, y_scores):
    y_true, y_scores = np.asarray(y_true), np.asarray(y_scores)
    pos, neg = y_scores[y_true == 1], y_scores[y_true == 0]
    diffs = pos[:, None] - neg[None, :]   # alle Paare
    return ((diffs > 0).sum() + 0.5 * (diffs == 0).sum()) / diffs.size

Was AUC nicht misst

FrageBeantwortet AUC?Bessere Metrik
Rankt das Modell Positive über Negative?Ja
Sind die Wahrscheinlichkeiten kalibriert?NeinBrier Score, Kalibrierungskurve
Wie gut ist das Modell am gewählten Threshold?NeinPrecision, Recall, F1
Performance bei seltener positiver Klasse?Nur eingeschränktAUC-PR (Average Precision)

Der letzte Punkt ist in der Praxis der wichtigste: Bei stark unbalancierten Daten kann ein hoher AUC-ROC-Wert über eine schwache Precision hinwegtäuschen, weil die vielen True Negatives die False Positive Rate klein halten. Für Fraud Detection oder Anomalie-Erkennung ist die Fläche unter der Precision-Recall-Kurve meist aussagekräftiger.

AUC unter 0.5 – was ist da los?

Ein AUC-Wert deutlich unter 0.5 bedeutet nicht „schlechter als nichts”, sondern dass das Modell systematisch invers rankt. Häufige Ursachen: vertauschte Labels beim Einlesen, predict_proba[:, 0] statt [:, 1] verwendet, oder ein Vorzeichenfehler im Score. Ein Wert nahe 0 ist daher fast immer ein Bug, kein Modellproblem – nach der Korrektur wäre das Ranking sogar sehr gut.

Typische Fehler in der Praxis

  • Harte Vorhersagen übergeben: roc_auc_score(y_true, model.predict(X)) verschenkt die Ranking-Information. Richtig sind Scores oder Wahrscheinlichkeiten: model.predict_proba(X)[:, 1].
  • AUC-Werte über verschiedene Datensätze vergleichen: AUC hängt von der Schwierigkeit des Problems ab; derselbe Wert kann je nach Anwendung stark oder schwach sein.
  • Nur auf AUC optimieren: Für das produktive System zählt die Performance am tatsächlich eingesetzten Threshold – ein Modell mit leicht niedrigerem AUC kann dort besser abschneiden.

AUC ist wie eine zusammenfassende Bewertung für deinen Klassifikator: Ein hoher Wert bedeutet bessere Trennung, ein Wert nahe Zufall bedeutet kaum nutzbares Ranking.

Wert zwischen 0 und 1 (0.5 = Zufall)

Unabhängig vom gewählten Schwellenwert

Wahrscheinlichkeit, dass positives Beispiel höher gerankt wird

Modellvergleich

Welches Modell ist insgesamt besser?

Feature-Selektion

Welche Features verbessern AUC?

Hyperparameter-Tuning

AUC als Optimierungsziel

Was ist ein guter AUC-Wert?

Ein guter AUC-Wert hängt vom Problem, Datenrauschen, Klassenverteilung und Fehlkosten ab. Werte nahe 0.5 deuten auf kaum nutzbare Trennung hin; höhere Werte sind besser, müssen aber im Kontext bewertet werden.

AUC-ROC vs. AUC-PR?

AUC-ROC bei balancierten Daten. AUC-PR (Precision-Recall) bei stark unbalancierten Daten besser geeignet.

Dein persönliches Share-Bild für Instagram – 1080×1080px, bereit zum Posten.