Zum Inhalt springen
Menü der Dokumentation

Statistische Solidität: Seeds, Varianz und Checkpoints

Ein Lauf oder fünf, Early Stopping auf Validierungs- oder Testdaten, Makro- oder Mikro-F1: Jede Wahl verändert berichtete Zahlen. Machen Sie sie in Code und Manuskript explizit.

Zuletzt aktualisiert

In Ihrem Bericht

Bereich
Manuscript
Prüfung
Statistical Soundness

Warum das wichtig ist

Ein einzelner Lauf kann am glücklichen Ende der Verteilung landen, ein Modell, das bei seiner besten Test-Epoche stoppt, hat die Testdaten gesehen, und Mikro- und Makro-F1 unterscheiden sich bei unbalancierten Klassen.

Kapoor und Narayanan nennen 17 Fachgebiete, in denen Fehler durch Data Leakage gefunden wurden, mit zusammen 329 betroffenen Papers (Leakage and the Reproducibility Crisis in ML-based Science). Die NeurIPS Paper Checklist verlangt, anzugeben, welche Variabilität Fehlerbalken abbilden.

So sieht gute Praxis aus

  • Die Testdaten werden einmal genutzt, am Ende: Early Stopping, Tuning und Checkpoint-Wahl stützen sich auf Validierungsdaten.
  • Skalierung, Imputation und Merkmalsauswahl werden nur auf Trainingsdaten angepasst.
  • Ergebnisse, die vom Zufall abhängen, werden über mehrere Seeds oder Folds wiederholt, mit Mittelwert und Streuung.
  • Fehlerbalken sagen, was sie zeigen (SD, SE oder Konfidenzintervall) und worüber: Seeds, Folds oder Bootstrap-Stichproben.
  • Die Mittelung jeder Metrik (micro, macro oder weighted) ist im Code gesetzt und im Manuskript genannt.

So beheben Sie es

Python. Wählen Sie auf Validierungsdaten aus, evaluieren Sie die Testdaten einmal pro Seed und berichten Sie Mittelwert und SD mit expliziter Mittelung:

python
import numpy as np
from sklearn.metrics import f1_score

SEEDS = [0, 1, 2, 3, 4]
scores = []
for seed in SEEDS:
    model = train(train_set, val_set, seed=seed,   # your training loop:
                  early_stopping_on="val_loss")    # validation split only
    y_pred = model.predict(test_set.X)
    scores.append(f1_score(test_set.y, y_pred, average="macro"))

print(f"macro-F1 = {np.mean(scores):.3f} ± {np.std(scores, ddof=1):.3f} "
      f"(SD over {len(SEEDS)} seeds)")

R. Wiederholen Sie über Seeds und berichten Sie die Streuung neben dem Mittelwert:

R
seeds <- 1:5
auc <- vapply(seeds, function(s) {
  set.seed(s)
  fit_and_score(train, test)   # your model: fit on train, score on test
}, numeric(1))
sprintf("AUC %.3f (SD %.3f, %d seeds)", mean(auc), sd(auc), length(seeds))

Im Manuskript nennen Sie die Zahl der Läufe, die Bedeutung der Fehlerbalken, die Checkpoint-Regel und die Mittelung jeder Metrik.

Diese Prüfung für Ihr Repository

Fügen Sie einer Analyse Ihr Manuskript hinzu, um Befunde und Korrekturvorschläge zu dieser Prüfung zu erhalten.