Wenn es sehr viel mehr Instanzen einer Klasse gibt, als von der anderen, ist der Datensatz unausgeglichen (Class Imbalance). Für die meisten Machine Learning Algorithmen ist es so schwer, die unterrepräsentierte Klasse zu lernen. Es gibt mehrere Möglichkeiten, dem Problem zu begegnen:
- Mehr Daten sammeln, was die beste Alternative ist, allerdings leider nicht immer möglich.
- Oversampling: Es werden neue Instanzen der Klasse, die sich in der Minorität befindet, kreiert
- Undersampling: Von der Mehrheitsklasse werden Instanzen gelöscht, um einen ausgeglicheneren Datensatz zu erhalten.
- Manche Algorithmen haben einen Hyperparameter, der entsprechend gesetzt werden kann, wenn der Datensatz unausgeglichen ist.
Das Resampling wird nur mit dem Train Datensatz gemacht, damit die Maschine Gelegenheit hat, alle Klassen zu lernen. Der Test Datensatz bleibt unberührt. Das Aufteilen des Datensatzes in Trainings und Test-Datensätze und bei der Kreuzvalidierung soll stratifiziert erfolgen, damit alle Klassen in jedem Datensatz bzw. Fold repräsentiert sind.
Hier verwende ich SMOTE für das Oversampling.