Datenqualität messen
Vollständigkeit, Konsistenz, Aktualität und Etikettengüte: die Kennzahlen, die vor jedem Modell erhoben gehören, und die Prüfungen, die sie liefern.
Die sechs Dimensionen
| Dimension | Frage | Messgröße |
|---|---|---|
| Vollständigkeit | Fehlen Werte? | Anteil fehlender Werte je Spalte |
| Eindeutigkeit | Gibt es Doppelte? | Anteil doppelter Einträge |
| Gültigkeit | Passen Werte ins Format? | Anteil Verstöße je Regel |
| Konsistenz | Widersprechen sich Felder? | Anteil verletzter Regeln |
| Aktualität | Wie alt sind die Daten? | Verteilung des Alters |
| Richtigkeit | Stimmen die Etiketten? | Übereinstimmung zweier Annotatoren |
Die letzte Zeile ist die teuerste und die wichtigste.
Ein Prüflauf
import pandas as pd, numpy as np
def datenreport(df, schluessel=None):
n = len(df)
print(f"Zeilen: {n}")
fehlend = df.isna().mean().sort_values(ascending=False)
print("\nFehlende Werte, Top 5:")
print((fehlend[fehlend > 0].head() * 100).round(1))
if schluessel:
dupl = df.duplicated(subset=schluessel).sum()
print(f"\nDoppelte nach Schluessel: {dupl} ({dupl/n:.2%})")
volldupl = df.duplicated().sum()
print(f"Vollstaendig doppelte Zeilen: {volldupl} ({volldupl/n:.2%})")
for spalte in df.select_dtypes("object"):
# Konstante Spalten tragen nichts bei und kosten nur Rechenzeit.
if df[spalte].nunique() <= 1:
print(f"WARNUNG konstante Spalte: {spalte}")
# Sehr viele Auspraegungen deuten auf eine Kennung hin,
# die als Merkmal ein Leakage waere.
if df[spalte].nunique() > 0.9 * n:
print(f"WARNUNG nahezu eindeutige Spalte: {spalte}")- Vor jedem Training laufen lassen, nicht nur einmal am Anfang.
- Die Ergebnisse versionieren, damit eine Verschlechterung auffällt.
- Fachliche Regeln ergänzen: Enddatum nach Startdatum, Summe gleich Zwischensumme, Betrag nicht negativ.
Übereinstimmung zwischen Annotatoren
| κ | Auslegung | Konsequenz |
|---|---|---|
| unter 0,40 | schwach | Anleitung ist unbrauchbar, neu schreiben |
| 0,40 bis 0,60 | mäßig | Grenzfälle klären, Beispiele ergänzen |
| 0,60 bis 0,80 | gut | Verwendbar |
| über 0,80 | sehr gut | Aufgabe ist gut definiert |
Ein κ von 0,55 bei drei Klassen bedeutet praktisch: Zwei Fachleute sind sich in
etwa jedem vierten Fall uneins. Ein Modell kann in einer solchen Aufgabe keine
90 Prozent erreichen, weil es keine 90 Prozent Wahrheit gibt.
Die Obergrenze berechnen
Praktische Folge: Bevor Zeit in ein besseres Modell fließt, gehört ε geschätzt.
Eine Zweitannotation von 300 Fällen kostet einen Tag und beantwortet, ob die
angestrebten 95 Prozent überhaupt erreichbar sind.
Duplikate richtig finden
Exakte Duplikate sind der einfache Fall. Die problematischen sind Nah-Duplikate: dasselbe Dokument mit anderer Kopfzeile, derselbe Vorgang mit anderer Kennung.
- Für Text: MinHash über Wortfolgen, Schwelle bei einer Jaccard-Ähnlichkeit um 0,8.
- Für Bilder: Wahrnehmungsprüfsummen, Hamming-Abstand unter 6 gilt als Duplikat.
- Für Tabellen: Prüfung auf gleiche Kombination der fachlichen Schlüsselfelder, nicht auf die technische Kennung.
- Duplikate zählen und melden, nicht stillschweigend entfernen. Ihre Häufigkeit ist selbst ein Befund über den Prozess.
Passende Kurse und Quellen
Jupyter
Notizbücher, in denen Text, Code und Ergebnis nebeneinander stehen. Das übliche Werkzeug, um Rechnungen nachvollziehbar festzuhalten.
Für die ersten eigenen Rechnungen; hält Text, Code und Ergebnis an einer Stelle nachvollziehbar.
Kaggle Learn
Kurze Einheiten mit ausführbaren Notebooks, von Python über Pandas bis zu ersten Modellen. Ohne Installation, direkt im Browser.
Für den allerersten Einstieg ohne Installation, direkt im Browser.
Kaggle-Datensätze
Echte, unaufgeräumte Daten zum Üben. Genau das macht sie wertvoll, weil aufbereitete Beispiele die eigentliche Arbeit verstecken.
Zum Üben an unaufgeräumten Daten, weil aufbereitete Beispiele die eigentliche Arbeit verstecken.