KI‑Kompass
Kompass

Datenlecks im Training

Wenn Information aus der Zukunft oder aus dem Testsatz ins Training gelangt: die häufigsten Formen, ihre Anzeichen und wie man sie ausschließt.

·2 Min. Lesezeit·Von Fachredaktion Technik
DETAILGRAD
3 Abschnitte

Die Idee

Ein Leck ist jede Information, die dem Modell im Training zur Verfügung stand, im echten Einsatz aber nicht. Das Modell nutzt sie, sieht großartig aus und versagt später.

Die drei Formen

FormBeispiel
ZielleckEin Merkmal, das erst nach der Entscheidung entsteht, etwa das Stornodatum bei einer Stornoprognose
ZeitleckEin Wert aus der Zukunft, etwa der Monatsdurchschnitt bei einer Tagesprognose
GruppenleckDerselbe Kunde in Training und Test, mit fast identischen Fällen

Die Prüfliste

  • Für jedes Merkmal die Frage stellen: Stand dieser Wert zum Vorhersagezeitpunkt zur Verfügung?
  • Kennungen, Zeitstempel und laufende Nummern aus den Merkmalen entfernen; sie kodieren oft die Reihenfolge und damit das Ziel.
  • Skalierung, Imputation und Kodierung in die Pipeline, damit sie je Faltung nur aus dem Trainingsteil lernen.
  • Bei mehreren Fällen je Person nach Gruppen aufteilen.
  • Bei Zeitreihen ausschließlich vorwärts validieren, mit einer Lücke in Höhe der Vorlaufzeit.
  • Vor der Aufteilung entdoppeln, nicht danach.

Ein Leck aufspüren

import numpy as np
from sklearn.ensemble import HistGradientBoostingClassifier
from sklearn.model_selection import cross_val_score

def verdaechtige_merkmale(X, y, namen, cv=5):
    """Jedes Merkmal einzeln als alleinigen Praediktor testen.
    Ein einzelnes Merkmal mit sehr hoher AUC ist fast immer ein Leck."""
    for i, name in enumerate(namen):
        s = cross_val_score(HistGradientBoostingClassifier(max_iter=60),
                            X[:, [i]], y, cv=cv, scoring="roc_auc").mean()
        if s > 0.90:
            print(f"VERDACHT {name}: AUC {s:.3f} allein")

Ein einzelnes Merkmal, das für sich genommen eine AUC über 0,9 erreicht, ist bei einem realen betrieblichen Problem beinahe immer eine verkleidete Kopie des Ziels.

Das Zeitleck, präzise

Zulässiges Merkmalsfenster

zulässig ⇔ t_merkmal ≤ t_ziel − Δ

Ein Merkmal ist nur zulässig, wenn es vor dem Zeitpunkt entstanden ist, zu dem die Vorhersage tatsächlich getroffen wird.

t_ziel
der Zeitpunkt, den die Vorhersage betrifft
Δ
die Vorlaufzeit, mit der vorhergesagt werden soll
t_merkmal
der Entstehungszeitpunkt eines Merkmals

Der Fehler liegt fast nie in der Formel, sondern in der Erhebung: Ein Feld in der Datenbank trägt oft nur den letzten Änderungszeitpunkt, nicht den Entstehungszeitpunkt. Ein Statusfeld, das heute „abgeschlossen" enthält, sagt nichts darüber, was vor sechs Monaten darin stand. Ohne Historisierung ist ein Zeitleck praktisch unvermeidbar.

Benchmark-Kontamination

Bei großen Sprachmodellen tritt eine besondere Form auf: Öffentliche Testdaten waren im Vortraining enthalten. Die üblichen Prüfungen:

  • N-Gramm-Überlappung. Prüfen, ob längere Wortfolgen des Testsatzes im Trainingsmaterial vorkommen.
  • Kanarienvogel-Zeichenketten. Eindeutige Markierungen in Testdaten, die im Modell nicht auftauchen dürfen.
  • Zeitschnitt. Nur Aufgaben verwenden, die nach dem Trainingsstichtag entstanden sind.
  • Umformulierte Fassungen. Dieselbe Aufgabe neu formuliert stellen. Ein deutlicher Einbruch deutet auf Auswendiglernen.

Der letzte Punkt ist der aussagekräftigste und der billigste. Ein Modell, das eine bekannte Aufgabe löst und dieselbe Aufgabe mit anderen Zahlen nicht, hat sie nicht verstanden, sondern gesehen. Siehe Benchmarks lesen.

Was zu tun ist, wenn ein Leck gefunden wird

  1. 01

    Nicht heimlich beheben

    Alle bisher berichteten Zahlen sind ungültig. Das gehört gesagt.

  2. 02

    Ursache dokumentieren

    Nicht nur das Merkmal entfernen, sondern festhalten, wie es hineingelangte.

  3. 03

    Prüfung in die Pipeline aufnehmen

    Damit dieselbe Form nicht wiederkehrt.

  4. 04

    Neu bewerten

    Mit dem ursprünglichen Testsatz, sofern der nicht ebenfalls betroffen ist.

War diese Seite hilfreich?
Datenlecks im Training