Klassen-Imbalance (Machine Learning)

Bei der Schätzung von Machine Learning Modellen tritt häufig das Problem der Klassen-Imbalance auf. Das bedeutet, dass die Zielvariable (Target) nicht gleich, sondern ungleichmäßig verteilt ist. Meist ist die positive Klasse sehr klein, während die negative Klasse sehr groß ist, angenommen eine binäre Target-Klasse.

Worin besteht nun das Problem?

Nehmen wir an die Verteilung der binären Zielvariable sieht folgendermaßen aus:

  • 95% negative Klasse
  • 5% positive Klasse

Um den Abstraktionsgrad zu verringern, erläutern wir das Imbalance-Problem mit einem Beispiel. Nehmen wir an, wir möchten den Kauf eines Produktes schätzen: 95% der Kunden in meinem Datensatz haben nicht gekauft, währen nur 5% gekauft haben. Die positive Klasse (Label = 1) lautet demnach „Kauf“ und die negative Klasse (Label = 0) entspricht „Kein Kauf“. Wir schätzen ein Modell, zum Beispiel einen Random Forest. Die folgende fiktive Konfusionsmatrix dient der Illustration:

Confusion Matrix
The confusion matrix displays the absolute numbers of predictions and actual values of a classification problem (this case binary classification).

Somit ergeben sich folgende Performance-Metriken:

  • Genauigkeit = (TP + TN) / (TP + TN + FP + FN) = (682 + 24) / 760 = 92,9%
  • Sensitivität = TP / (TP + FN) = 24 / (24 + 14) = 63,2%
  • Spezifität = TN / (TN + FP) = 682 / (682 + 40) = 94,5%
  • Präzision = TP / (TP +FP) = 24 / (24+ 40) = 37,5%
Was sagt mir die Konfusionmatrix?

Die fiktive Konfusionsmatrix bildet häufige Muster in der Realität in nicht-balancierten Datensätzen ab. Betrachten wir nun die Genauigkeit, so sagt unser Modell in ca. 93% der Fälle die Zielvariable korrekt hervor. Absolut klingt dies nach einem sehr guten Modell. Betrachten wir jedoch, dass die negative Klasse (Kein Kauf) in 95% der Fälle (722 / 760) vorliegt und wir somit, sobald wir immer die negative Klasse schätzen würden, schon in 95% der Fälle korrekt vorhersagen würden. Damit relativiert sich die Vorhersagekraft unseres Modells deutlich. Natürlich würde in diesem Fall die Spezifität auf 100% steigen und die Sensitivität auf 0% fallen.

Wie unbalancierte Daten die Modelle beeinflussen

Auch tendieren solche Modelle dazu, existierende Beobachtungen der positiven (kleinen) Klasse (Kauf) als Rauschen einzustufen und neue Beobachtungen eher der negativen (großen) Klasse (kein Kauf) zuzuordnen. Unser Modell überschätzt somit die negative Klasse (Kein Kauf). Jedoch soll unser Modell dazu dienen, die positive Klasse „Kauf“ möglichst korrekt vorherzusagen.

In unserem Beispiel wäre es von Nachteil potenzielle Käufer nicht anzuschreiben, weil sie als Nicht-Käufer eingeordnet werden. Wir nehmen hier an, die Kosten von False Negatives sind größer als die Kosten von False Positives.

Es gibt drei beliebte Methoden, um die Klassen-Imbalance in der Zielvariable zu reduzieren oder zu eliminieren.

Undersampling

Beim Undersampling werden Beobachtungen aus der großen Klasse zufällig aus dem Datensatz eliminiert. Dadurch erhält man einen balancierteren oder balancierten Datensatz, je nach Anzahl der eliminierten Beobachtungen. Es existieren auch Verfahren, welche nicht zufällig Beobachtungen der großen Klasse selektieren (condensed nearest neighbours). Dabei werden bevorzugt Beobachtungen eliminiert, die anderen sehr ähnlich sind. Das hat den Vorteil, dass keine Beobachtungen mit hohem Informationsgehalt eliminiert werden.

Random Undersampling
When undersampling you randomly delete observations from the larger class (i.e. take a random sample) so that the count of both classes match.

Oversampling

Beim Oversampling wird die kleine Klasse hingegen künstlich vergrößert (siehe Bild). Dies geschieht durch die zufällige Duplizierung bzw. Vervielfältigung von Beobachtungen aus der kleinen Klasse bis zur gewünschten Balance-Ratio. Eine Gefahr besteht hier jedoch, dass Modelle danach tendenziell ins Overfitting rutschen.

Ebenso ist eine Kombination aus Undersampling und Oversampling möglich.

Random Oversampling
When oversampling you randomly duplicate observations from the smaller class (i.e. sampling with replacement) until the count of both classes match.

SMOTE

SMOTE steht für Synthetic Minority Oversampling Technique. SMOTE ist eine Methode des Oversamplings. Dabei wird die kleine Klasse künstlich vergrößert, jedoch diesmal nicht zufällig. Ein Datenpunkt im multivariaten Raum wird mit seinen k neighbours betrachtet. Nun wird ein Vektor zu einem von den Nachbarpunkten genommen und dieser Vektor mit einer zufälligen Zahl zwischen 0 und 1 multipliziert. Die Multiplikation wird als neuer Datenpunkt hinzugefügt und unterscheidet sich nun von dem ursprünglichen Datenpunkt. Es werden somit keine Kopien gebildet, sondern neue abgeänderte Datenpunkte synthetisiert.

Synthetic Minority Oversampling Technique
When "smoting" you synthetically generate new data for the smaller class. You take a new data point on the vector of two existing data points and add it to the smaller class.

Du suchst nach hands-on Tutorials in Python, um deine Klassen zu balancieren? Wir empfehlen das Modul imbalance-learn!

Auf Kaggle findest du ein sehr ausschöpfendes Tutorial zu unbalancierten Daten.

Weiterführende Ressourcen zu Machine Learning

Datenintegration

Wie Machine Learning von Datenintegration profitiert
Die Kausalkette „Datenintegration-Datenqualität-Modellperformance“ beschreibt die Notwendigkeit von effektiver Datenintegration für einfacher und schneller umsetzbares sowie erfolgreicheres Machine Learning. Kurzum: aus guter Datenintegration folgt bessere Vorhersagekraft der Machine Learning Modelle wegen höherer Datenqualität.

Betriebswirtschaftlich liegen sowohl kostensenkende als auch umsatzsteigernde Einflüsse vor. Kostensenkend ist die Entwicklung der Modelle (weniger Custom Code, damit weniger Wartung etc.). Umsatzsteigernd ist die bessere Vorhersagekraft der Modelle, was präziseres Targeting, Cross- und Upselling und ein genaueres Bewerten von Leads und Opportunities betrifft – sowohl im B2B- als auch im B2C-Bereich. Hier findest du einen detaillierten Artikel zu dem Thema:

Plattform

Wie du Machine Learning mit der Integration Platform verwendest
Du kannst die Daten deiner zentralen Marini Integration Platform externen Machine Learning Services und Applikationen zur Verfügung stellen. Die Anbindung funktioniert nahtlos durch die HubEngine oder direkten Zugang zur Plattform, abhängig von den Anforderungen des Drittanbieters. Ein Anbieter für Standardanwendungen des Machine Learnings im Vertrieb ist z.B. Omikron. Du kannst aber auch Standardanwendungen auf AWS oder in der Google Cloud nutzen. Eine Anbindung an deine eigenen Server ist ebenso problemlos möglich, wenn du dort deine eigenen Modelle programmieren möchtest.

Wenn du Unterstützung dabei brauchst, wie du Machine Learning Modelle in deine Plattform einbinden kannst, dann kontaktiere unseren Vertrieb. Wir helfen dir gerne weiter!

Anwendungsbeispiele

Häufige Anwendungsszenarien von Machine Learning im Vertrieb
Machine Learning kann auf vielfältige Weise den Vertrieb unterstützen. Es können zum Beispiel Abschlusswahrscheinlichkeiten berechnet, Cross- und Up-Selling-Potenziale geschätzt oder Empfehlungen vorhergesagt werden. Wichtig dabei ist, dass der Vertriebler unterstützt wird und eine weitere Entscheidungshilfe erhält, anhand derer er sich besser auf seine eigentliche Tätigkeit, nämlich das Verkaufen, konzentrieren kann. So kann der Vertriebler zum Beispiel schneller erkennen, welche Leads, Opportunities oder Kunden am vielversprechendsten momentan sind und diese kontaktieren. Es bleibt jedoch klar, dass der Vertriebler die letztendliche Entscheidung trifft und durch das Machine Learning letztlich nur Erleichterungen erfährt. Schlussendlich verkauft kein Modell, sondern immer noch der Mensch.

Hier findest du eine kurze Einführung in das Thema Machine Learning und die häufigsten Anwendungsmöglichkeiten im Vertrieb.

Weitere Glossar Beiträge