Methoden zur Bekämpfung von Datenungleichgewichten bei unausgewogener Klassifizierung
Nachdem wir die verschiedenen Probleme im Zusammenhang mit Datenungleichgewicht näher erläutert und gezeigt haben, dass die Wahl der richtigen Leistungsmetrik für die Bewertung unserer Modelle von entscheidender Bedeutung ist, werden wir eine nicht erschöpfende Liste nützlicher Techniken zur Bekämpfung dieser Art von Problemen vorstellen.
1) Mehr Daten sammeln
Es mag vereinfacht klingen, aber das Sammeln zusätzlicher Daten wird fast immer vernachlässigt, obwohl es manchmal sehr effektiv sein kann.
Kannst du mehr Daten sammeln? Nimm dir ein paar Minuten Zeit, um über die Möglichkeit nachzudenken, mehr Daten für dein Problem zu sammeln. Dies könnte deine Klassen möglicherweise in unterschiedlichem Maße neu ausrichten.
2) Resampling-Methoden verwenden
Du kannst den Datensatz, den du vor dem Training deines Vorhersagemodells verwendest, ändern, um ausgeglichenere Daten zu erhalten.
Diese Strategie wird Resampling genannt und es gibt zwei Hauptmethoden, die du verwenden kannst, um die Klassen auszugleichen:
Oversampling und Undersampling.
Oversampling-Methoden funktionieren, indem die Anzahl der Beobachtungen der Minderheitsklasse(n) erhöht wird, um ein zufriedenstellendes Verhältnis von Minderheitsklasse zu Mehrheitsklasse zu erreichen.
Undersampling-Methoden funktionieren, indem die Anzahl der Beobachtungen der Mehrheitsklasse(n) verringert wird, um ein zufriedenstellendes Verhältnis von Minderheits- zu Mehrheitsklasse zu erreichen.
In Python bietet das Paket imblearn eine Reihe von Resampling-Methoden, die hier verfügbar sind.
Diese Ansätze sind sehr einfach und schnell umzusetzen. Sie sind ein guter Ausgangspunkt.
Unser Rat: Probiere immer beide Ansätze für alle deine unausgeglichenen Datensätze aus und überprüfe, ob sich dadurch deine gewählten Leistungsmetriken verbessern.
Bevorzuge Unterstichproben, wenn du große Datensätze hast: Zehn- oder Hunderttausende von Fällen oder mehr.
Wenn du nicht viele Daten hast, solltest du auf Oversampling setzen: Zehntausende oder weniger.
Ziehe in Erwägung, verschiedene Klassenverhältnisse zu testen. Bei einem binären Klassifikationsproblem musst du z. B. nicht unbedingt ein Verhältnis von 1:1 anstreben, sondern kannst auch andere Verhältnisse ausprobieren.
3) Generierung von synthetischen Proben
Es gibt Algorithmen, um synthetische Stichproben automatisch zu generieren. Der beliebteste dieser Algorithmen ist SMOTE (für Synthetic Minority Over-sampling Technique). Wie der Name schon sagt, ist SMOTE eine Oversampling-Methode. Sie funktioniert, indem sie synthetische Stichproben aus der Minderheitsklasse erstellt, anstatt einfache Kopien zu erstellen. Mehr über SMOTE findest du im Originalartikel.
Der ClusterCentroids-Algorithmus ist ein Undersampling-Algorithmus, der Clustering-Methoden verwendet, um eine bestimmte Anzahl von Zentroiden aus den Originaldaten zu erzeugen, damit möglichst wenig Informationen über die Mehrheitsklasse verloren gehen, wenn diese reduziert werden muss.
4) Das Problem neu überdenken
Manchmal sind die Methoden des Resampling nicht effektiv genug, und in diesem Fall solltest du das Problem neu überdenken. Das kann daran liegen, dass der verwendete Algorithmus nicht für deine Daten geeignet ist.
Teste ruhig andere Algorithmen, eventuell in Kombination mit den oben beschriebenen Resampling-Methoden.
Baumbasierte Ensemblemodelle wie RandomForests sind in der Regel besser für unausgewogene Daten geeignet.
Es ist auch möglich, mit Wahrscheinlichkeiten zu spielen. Wenn du z. B. die große Mehrheit der potenziellen Churns absolut vorhersagen möchtest, auch wenn du einige Nicht-Churns falsch einordnest, kannst du den Wahrscheinlichkeitsschwellenwert ändern, ab dem Kunden als Churns eingestuft werden.
Je niedriger der Schwellenwert, desto genauer wird unsere Klasse, aber der Recall wird sinken.
5) Ein benachteiligtes Modell verwenden.
Die benachteiligte Klassifizierung ermöglicht es, dem Modell zusätzliche Kosten für Fehlklassifizierungen aufzuerlegen, die während des Trainings bei der Minderheitsklasse gemacht werden. Diese Strafen können das Modell so verzerren, dass es der Minderheitsklasse mehr Aufmerksamkeit schenkt.
In den meisten Klassen von scikit-learn-Algorithmen ist es möglich, einfach den Parameter `class_weight` zu verwenden. Er ermöglicht es, Fehler, die bei einer Klasse gemacht werden, mit einem neuen Gewicht zu bestrafen.
Je höher das Gewicht einer Klasse ist, desto mehr werden Fehler auf dieser Klasse bestraft, und desto mehr Bedeutung wird ihr beigemessen.
Die Gewichte sollten in Form eines Wörterbuchs angegeben werden, z. B. `{0:1, 1:5}`, um Fehlern, die auf Klasse 1 gemacht werden, das Fünffache an Gewicht zu geben.
Das Argument „“balanced“„ ermöglicht es, jeder Klasse eine Gewichtung zuzuweisen, die umgekehrt proportional zu ihrer Häufigkeit ist.
6) Methoden verwenden, die unterstichprobenartige Teilmengen erzeugen.
Eine weitere Lösung, die vom Modul imblearn.ensemble angeboten wird, ist die Verwendung von Klassen, die Modelle von Mengen wie Boosting oder Bagging enthalten, die bei jedem Schritt des Algorithmus auf einer Stichprobe trainiert werden, die automatisch zwischen den verschiedenen Klassen neu ausbalanciert wird.
Diese Implementierungen von Modellen ermöglichen es, auf Resampling-Methoden vor dem Training zu verzichten und sie automatisch bei jeder Datenauswahl durch den Algorithmus anzuwenden.
7) Sei kreativ!
Du kannst alle diese Techniken ausprobieren, sie kombinieren oder sogar darüber nachdenken, die Daten der Hauptklasse in Unterklassen umzulabeln, um ein ausgewogeneres Mehrklassen-Klassifikationsproblem zu erhalten.
In einigen Fällen kannst du auch andere Methoden des maschinellen Lernens wie Anomaly Detection oder Active Learning in Betracht ziehen.
Wir haben eine Reihe von Methoden vorgestellt, aus denen du wählen kannst, wenn du mit dieser Art von Daten arbeitest. Probiere diese Methoden ruhig einzeln aus und fange mit den einfachsten an!
Möchtest du deine Fähigkeiten verbessern, um aus unausgewogenen Datenbeständen erfolgreiche und zuverlässige Modelle zu erstellen? Hier findest du alle unsere Lernmodule!
Kontaktiere uns für weitere Informationen!