iToverDose/Software· 10 MAI 2026 · 08:06

Verwirrungsmatrix: Warum Genauigkeit allein bei KI-Modellen irreführt

95 % Genauigkeit klingt beeindruckend – doch wenn das Modell 40 % der Betrugsfälle übersieht, wird die Illusion entlarvt. Warum die Verwirrungsmatrix das einzige verlässliche Werkzeug ist, um echte Performance zu messen.

DEV Community4 min0 Kommentare

Eine KI mit 95 % Genauigkeit klingt nach einem Erfolg. Doch was, wenn das Modell in einem Szenario mit 95 % legitimen und nur 5 % betrügerischen Transaktionen einfach nie Betrug vorhersagt? Die scheinbar hohe Genauigkeit wird zur Falle – und die Verwirrungsmatrix (auch Konfusionsmatrix genannt) ist der einzige Weg, solche Verzerrungen zu erkennen.

Die vier Seiten jeder Vorhersage: Was die Matrix wirklich zeigt

Jede Entscheidung eines Modells lässt sich in vier Kategorien einteilen. Nehmen wir als Beispiel einen medizinischen Test: Die Matrix zeigt, wo das Modell richtig lag – und wo es scheiterte.

| Vorhersage | Positiv | Negativ | | |------------|---------|---------|------| | Tatsächlich positiv | TP | FN | | | Tatsächlich negativ | FP | TN | |

  • True Positive (TP): Das Modell sagt „krank“ voraus – und liegt richtig. Beispiel: Der Test erkennt eine bösartige Geschwulst.
  • True Negative (TN): Das Modell sagt „gesund“ voraus – und liegt richtig. Beispiel: Der Test bestätigt, dass keine Krankheit vorliegt.
  • False Positive (FP): Das Modell sagt „krank“ voraus – doch der Patient ist gesund. Dies nennt man auch Typ-I-Fehler. Im Alltag führt das zu unnötigen Untersuchungen.
  • False Negative (FN): Das Modell sagt „gesund“ voraus – doch der Patient ist tatsächlich krank. Dies ist ein Typ-II-Fehler und kann lebensbedrohlich sein, etwa wenn Krebs übersehen wird.

Der entscheidende Punkt: FP und FN haben oft völlig unterschiedliche Konsequenzen. Während ein falscher Alarm (FP) ärgerlich sein mag, kann ein übersehener Fall (FN) katastrophale Folgen haben. Genauigkeit allein verrät nichts über diese Unterschiede – die Verwirrungsmatrix schon.

Praxistipp: So erstellen Sie Ihre erste Verwirrungsmatrix

Ein einfaches Beispiel mit echten Daten zeigt, wie schnell Verzerrungen sichtbar werden. Hier nutzen wir den Breast Cancer Wisconsin-Datensatz aus scikit-learn, der gutartige (benigne) und bösartige (maligne) Tumore enthält.

from sklearn.datasets import load_breast_cancer
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay
import matplotlib.pyplot as plt

Zuerst laden wir die Daten, teilen sie in Trainings- und Testsets auf und trainieren ein Random-Forest-Modell:

data = load_breast_cancer()
X, y = data.data, data.target  # 0 = maligne, 1 = benigne

X_train, X_test, y_train, y_test = train_test_split(
    X, y,
    test_size=0.2,
    random_state=42,
    stratify=y  # Beibehaltung der Klassenverteilung
)

model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)

Die Rohdaten der Matrix offenbaren bereits kritische Muster:

cm = confusion_matrix(y_test, y_pred)
print("Verwirrungsmatrix:")
print(cm)

Ausgabe:

[[40  2]
 [ 1 71]]
  • True Positives (TP): 71 (korrekt als benigne vorhergesagt)
  • True Negatives (TN): 40 (korrekt als maligne vorhergesagt)
  • False Positives (FP): 2 (fälschlich als benigne eingestuft, obwohl maligne)
  • False Negatives (FN): 1 (fälschlich als maligne eingestuft, obwohl benigne)

Das Modell erreichte eine Genauigkeit von 97,4 % (111 von 114 korrekten Vorhersagen). Doch der entscheidende Fehler: 2 bösartige Tumore wurden übersehen – ein FN-Fall, der im medizinischen Kontext gravierende Folgen hätte.

Warum Visualisierung die Analyse vereinfacht

Zahlen allein reichen oft nicht aus. Eine grafische Darstellung macht die Muster sofort erkennbar. Mit scikit-learns ConfusionMatrixDisplay lässt sich die Matrix als Heatmap darstellen – einmal als absolute Häufigkeiten und einmal als prozentuale Verteilung pro Klasse.

fig, axes = plt.subplots(1, 2, figsize=(12, 4))

# Absolute Häufigkeiten
disp1 = ConfusionMatrixDisplay(
    confusion_matrix=cm,
    display_labels=data.target_names
)
disp1.plot(ax=axes[0], colorbar=False, cmap='Blues')
axes[0].set_title('Absolute Häufigkeiten')

# Normalisierte Darstellung (Zeilenweise Prozentwerte)
cm_normalized = confusion_matrix(y_test, y_pred, normalize='true')
disp2 = ConfusionMatrixDisplay(
    confusion_matrix=cm_normalized,
    display_labels=data.target_names
)
disp2.plot(ax=axes[1], colorbar=False, cmap='Blues')
axes[1].set_title('Normalisierte Verteilung (pro Klasse)')

plt.tight_layout()
plt.savefig('verwirrungsmatrix.png', dpi=100)
plt.show()

Die normalisierte Ansicht zeigt, welcher Anteil jeder Klasse korrekt identifiziert wurde. Beispiel: Falls nur 80 % der bösartigen Tumore erkannt werden, wird dies sofort sichtbar – selbst wenn die Gesamtgenauigkeit hoch bleibt.

Klassenungleichgewicht: Warum Genauigkeit eine Illusion schafft

Ein klassisches Beispiel aus dem Betrugserkennungssystem zeigt, wie trügerisch Genauigkeit sein kann. Angenommen, ein Datensatz enthält:

  • 950 legitime Transaktionen (95 %)
  • 50 betrügerische Transaktionen (5 %)

Ein naives Modell, das nie Betrug vorhersagt, erreicht eine Genauigkeit von 95 % – doch es fängt null Betrugsfälle ein. Ein smarteres Modell erkennt zwar 35 der 50 Betrugsfälle, löst aber 20 falsche Alarme aus. Seine Genauigkeit steigt auf 96,5 %.

import numpy as np
from sklearn.metrics import confusion_matrix, accuracy_score

# Datensatz mit Ungleichgewicht
np.random.seed(42)
y_true = np.array([0]*950 + [1]*50)  # 0=legit, 1=Betrug

# Modell A: Immer "kein Betrug"
y_pred_lazy = np.zeros(1000, dtype=int)

# Modell B: Erkennt 35 Betrugsfälle, aber 20 falsche Alarme
y_pred_smart = np.zeros(1000, dtype=int)
fraud_indices = np.where(y_true == 1)[0]
y_pred_smart[fraud_indices[:35]] = 1  # 35 echte Betrugsfälle erkannt
y_pred_smart[:20] = 1  # 20 falsche Alarme auf legitime Transaktionen

print("Modell A: Immer 'kein Betrug' sagt")
print(f"Genauigkeit: {accuracy_score(y_true, y_pred_lazy):.3f}")
print(f"Betrug erkannt: {confusion_matrix(y_true, y_pred_lazy)[1][1]} von 50")

print("\nModell B: Erkennt Betrug aktiv")
print(f"Genauigkeit: {accuracy_score(y_true, y_pred_smart):.3f}")
cm_b = confusion_matrix(y_true, y_pred_smart)
print(f"Betrug erkannt: {cm_b[1][1]} von 50")

Ergebnis:

  • Modell A: Genauigkeit 95,0 %, Betrugsfälle erkannt: 0
  • Modell B: Genauigkeit 96,5 %, Betrugsfälle erkannt: 35

Die Verwirrungsmatrix entlarvt das naivere Modell sofort – während die Genauigkeit nur minimal besser erscheint. In der Praxis entscheiden Metriken wie Präzision, Rekall oder F1-Score darüber, ob ein Modell im realen Einsatz funktioniert.

Fazit: Die Verwirrungsmatrix als Grundpfeiler der Modellbewertung

Genauigkeit ist ein nützlicher Ausgangspunkt, doch sie verrät nichts über die Verteilung der Fehler. Die Verwirrungsmatrix hingegen zeigt:

  • Welche Fehlerarten besonders häufig auftreten
  • Ob das Modell für die jeweilige Anwendung geeignet ist (z. B. medizinische Diagnostik vs. Spam-Filter)
  • Wie unausgewogene Daten das Modell beeinflussen

Egal, ob Sie ein Klassifizierungsmodell für Betrugserkennung, medizinische Diagnostik oder Kundenservice entwickeln – die Verwirrungsmatrix sollte immer Ihr erster Schritt sein, um echte Performance zu messen. Ohne sie riskieren Sie, Modelle zu deployen, die zwar hohe Genauigkeit vortäuschen, aber im Ernstfall versagen.

KI-Zusammenfassung

Discover why accuracy alone is a flawed metric for AI models and how a confusion matrix reveals real performance gaps across true positives, false positives, and more.

Kommentare

00
KOMMENTAR SCHREIBEN
ID #E3M5LX

0 / 1200 ZEICHEN

Menschen-Check

8 + 6 = ?

Erscheint nach redaktioneller Prüfung

Moderation · Spam-Schutz aktiv

Noch keine Kommentare. Sei der erste.