Data Cleaning
Bei der Datenbereinigung werden beschädigte Dateien, Duplikate, fehlende Werte und Fehler in Bezeichnungen eines Datensatzes vor dem Training gefunden und behoben. Hier geht es um Verfahren, Werkzeuge und Code.
Datenbereinigung, auch Datenläuterung oder Datenbereinigung durch Auslesen genannt, ist das Auffinden und Korrigieren oder Entfernen beschädigter, doppelter, unvollständiger, widersprüchlicher und falsch beschrifteter Datensätze. Beim maschinellen Lernen (ML) erfolgt sie vor der Datenvorverarbeitung und dem Training, denn ein Modell lernt alles, was seine Trainingsdaten enthalten – auch Fehler. Ein Detektor, der mit Bildern trainiert wird, auf denen die Hälfte der Fahrräder als „Motorrad“ beschriftet ist, lernt diese Verwechslung. Ein Testsatz mit falschen Beschriftungen liefert zudem eine fehlerhafte Bewertung der Modellleistung. Datenbereinigung ist eine zentrale Praxis der datenzentrierten KI, die Modelle durch bessere Daten statt durch Änderungen an der Architektur verbessert.
Warum die Datenqualität die Leistungsfähigkeit von Modellen begrenzt#
Datenfehler beeinträchtigen die Genauigkeit auf verschiedene Weise. Falsch beschriftete Beispiele vermitteln falsche Eingabe-Ausgabe-Zuordnungen und fördern eine Überanpassung, wenn sich ein Modell das Rauschen einprägt. Doppelte Daten erhalten ein höheres Gewicht. Befinden sich Kopien sowohl in den Trainings- als auch in den Auswertungsaufteilungen, entsteht außerdem eine Datenleckage, die die Ergebnisse künstlich verbessert. Beschädigte Dateien lassen Datenlader abstürzen oder werden unbemerkt übersprungen. Uneinheitliche Klassennamen teilen eine Kategorie auf mehrere Klassen auf. Auch Benchmarks sind betroffen: Eine Studie zu 10 häufig verwendeten Testsätzen schätzte, dass durchschnittlich mindestens 3,3 % der Beispiele falsch beschriftet waren und dies für mindestens 6 % des ImageNet-Validierungssatzes galt. Bei der Bewertung anhand korrigierter Beschriftungen schneidet ResNet-18 besser ab als ResNet-50, sobald der Anteil der ursprünglich falsch beschrifteten Testbeispiele um nur 6 % steigt.
Häufige Aufgaben der Datenbereinigung#
Tabellendaten werden meist mit Bibliotheken wie pandas bereinigt. Bei Bilddatensätzen müssen Bilddateien und ihre Annotationen geprüft werden – von den Pixeln bis zu den Koordinaten der Begrenzungsrahmen. Nahezu doppelte Bilder lassen sich durch Vergleiche ihrer Einbettungen finden. Mit Vektorsuche lässt sich dieser Vergleich auf Millionen Bilder ausweiten.
- Fehlende Werte: Datensätze mit leeren Feldern werden entweder entfernt oder durch eine Imputation anhand von Spaltenstatistiken oder nächstgelegenen Nachbarn ergänzt. Bei Bilddatensätzen ist ein Bild ohne Beschriftungsdatei mehrdeutig: Es könnte sich um ein absichtlich verwendetes Hintergrundbild handeln oder um ein Bild, das niemand annotiert hat.
- Doppelte und nahezu doppelte Daten: Bytegenau identische Dateien haben denselben Hash. Skalierte oder neu komprimierte Kopien sowie aufeinanderfolgende Videobilder haben keinen identischen Hash. Für sie sind daher Wahrnehmungs-Hashes oder der Ähnlichkeitsvergleich von Einbettungen erforderlich.
- Beschädigte und ungültige Dateien: Unvollständige Downloads, nicht unterstützte Formate, unerwartete Farbmodi und winzige Bilder lassen sich nicht dekodieren oder enthalten kein verwertbares Signal.
- Fehler in Beschriftungen: Falsche Klassen, fehlende Objekte sowie ungenaue oder falsch platzierte Begrenzungsrahmen sind die kostspieligsten Fehler in überwachten Bilddatensätzen und am schwierigsten mit bloßem Auge zu erkennen.
- Uneinheitliche Kategorien: Schreibweisen wie „Car“ und „car“ oder überlappende Klassen wie „Automobil“ und „Fahrzeug“ werden zu einer Taxonomie zusammengeführt, sodass jedes Konzept eine einzige Beschriftung hat.
- Ausreißer: Unmögliche Werte, etwa ein negatives Alter oder Begrenzungsrahmen, die über den Bildrand hinausragen, sind zu korrigierende Fehler. Seltene, aber gültige Fälle bleiben erhalten, denn oft muss das Modell gerade solche Randfälle besonders gut lernen.
Beschriftungsfehler mithilfe eines Modells finden#
Alle Beschriftungen von Hand zu prüfen, lässt sich nicht auf große Datenmengen übertragen. Daher verwenden Bereinigungspipelines ein trainiertes Modell, um die zu prüfenden Beschriftungen zu ordnen. Confident Learning, implementiert in der Open-Source-Bibliothek cleanlab, nutzt vorhergesagte Wahrscheinlichkeiten außerhalb der Stichprobe aus der Kreuzvalidierung und markiert Beispiele, bei denen das Modell mit hoher Zuversicht eine andere Klasse als die angegebene Beschriftung vorhersagt. Die endgültige Entscheidung treffen weiterhin Menschen: In der oben genannten Studie zum Testsatz bestätigten durch Crowdsourcing eingesetzte Prüfer 51 % der vom Algorithmus markierten Kandidaten als tatsächliche Beschriftungsfehler.
Dateiprüfungen automatisieren#
Prüfungen auf Dateiebene sind kostengünstig genug, um sie bei jedem neuen Datenstapel auszuführen – zusätzlich zu den Prüfungen von Labels und Klassenverteilung aus der Lektion Qualitätskontrolle von Datensätzen. Das folgende Skript erstellt einen kleinen Ordner mit einem Bild, einer exakten Kopie und einer abgeschnittenen Datei. Anschließend markiert es mithilfe von Pillow und einem Inhalts-Hash die Kopie und die beschädigte Datei:
import hashlib
from pathlib import Path
from PIL import Image
# A tiny image folder: one original, one exact copy, and one truncated download
folder = Path("images")
folder.mkdir(exist_ok=True)
Image.new("RGB", (640, 480), "orange").save(folder / "a.jpg")
(folder / "b.jpg").write_bytes((folder / "a.jpg").read_bytes())
(folder / "c.jpg").write_bytes((folder / "a.jpg").read_bytes()[:1000])
seen = {}
for path in sorted(folder.glob("*.jpg")):
try:
Image.open(path).load() # decode every pixel; a truncated file raises OSError
except OSError as error:
print(f"{path.name}: corrupt ({error})")
continue
digest = hashlib.md5(path.read_bytes()).hexdigest() # identical bytes give identical hashes
if digest in seen:
print(f"{path.name}: duplicate of {seen[digest]}")
seen.setdefault(digest, path.name)Das Skript gibt b.jpg: duplicate of a.jpg und c.jpg: corrupt (image file is truncated (5 bytes not processed)) aus. Jedes Bild vollständig zu dekodieren ist wichtig, denn beim Öffnen einer Datei wird nur ihr Header gelesen, und eine unvollständige Datei kann diese Prüfung bestehen. Ultralytics YOLO führt ähnliche Prüfungen aus, wenn der Label-Cache eines Datensatzes erstellt wird: JPEGs ohne Endmarkierung werden erneut gespeichert, doppelte Beschriftungszeilen entfernt und Bild-Beschriftungs-Paare übersprungen, deren Bilder weniger als 10 Pixel groß sind, Koordinaten außerhalb des Bildes liegen oder deren Klassen-IDs über die im Datensatz-YAML aufgeführten hinausgehen. Die Scan-Zusammenfassung gibt anschließend die Anzahl der Bilder, Hintergründe und beschädigten Dateien an.
Datenbereinigung und verwandte Begriffe#
- Datenvorverarbeitung: Wandelt bereits korrekte Daten in das vom Modell erwartete Format um, beispielsweise durch Skalieren von Bildern und Normalisieren von Pixelwerten. Bei der Bereinigung wird entschieden, welche Daten korrekt sind.
- Datenerweiterung: Fügt sauberen Daten während des Trainings gezielte Variationen hinzu, etwa Spiegelungen und Farbverschiebungen.
- Datenbeschriftung: Erstellt Beschriftungen für unbeschriftete Daten. Bei der Bereinigung werden bereits vorhandene Beschriftungen geprüft und korrigiert.
- Datensatzverzerrung: Ein Datensatz kann fehlerfrei sein und dennoch manche Bedingungen oder Gruppen unzureichend abbilden. Um Verzerrungen zu beheben, müssen andere Daten erfasst werden – eine Bereinigung allein reicht dafür nicht aus.










