Zephyrnet-Logo

Entwicklung eines unausgewogenen Klassifizierungsmodells zur Erkennung von Ölverschmutzungen

Datum:


Viele unausgeglichene Klassifizierungsaufgaben erfordern ein geschicktes Modell, das eine klare Klassenbezeichnung vorhersagt, bei der beide Klassen gleich wichtig sind.

Ein Beispiel für ein unausgewogenes Klassifizierungsproblem, bei dem eine Klassenbezeichnung erforderlich ist und beide Klassen gleich wichtig sind, ist die Erkennung von Ölverschmutzungen oder Ölteppichen in Satellitenbildern. Die Entdeckung einer Leckage erfordert die Mobilisierung einer teuren Reaktion, und das Verpassen eines Ereignisses ist ebenso teuer und verursacht Schäden für die Umwelt.

Eine Möglichkeit zur Bewertung unausgeglichener Klassifizierungsmodelle, die eindeutige Bezeichnungen vorhersagen, besteht darin, die getrennte Genauigkeit für die positive Klasse und die negative Klasse zu berechnen, die als Sensitivität und Spezifität bezeichnet wird. Diese beiden Maße können dann mithilfe des geometrischen Mittelwerts gemittelt werden, der als G-Mittelwert bezeichnet wird, der gegenüber der verzerrten Klassenverteilung unempfindlich ist und korrekt über die Fähigkeiten des Modells in beiden Klassen berichtet.

In diesem Tutorial erfahren Sie, wie Sie ein Modell entwickeln, um das Vorhandensein einer Ölpest in Satellitenbildern vorherzusagen und es mithilfe der G-Mittelwert-Metrik auszuwerten.

Nach Abschluss dieses Tutorials wissen Sie:

  • Laden und Durchsuchen des Datensatzes und Generieren von Ideen für die Datenaufbereitung und Modellauswahl.
  • Wie man eine Reihe von Wahrscheinlichkeitsmodellen bewertet und ihre Leistung durch geeignete Datenaufbereitung verbessert.
  • So passen Sie ein endgültiges Modell an und verwenden es, um Klassenbeschriftungen für bestimmte Fälle vorherzusagen.

Entdecken Sie SMOTE, Ein-Klassen-Klassifizierung, kostensensitives Lernen, Schwellenwertverschiebung und vieles mehr in meinem neuen Buch, mit 30 Schritt-für-Schritt-Anleitungen und vollständigem Python-Quellcode.

Fangen wir an.

Entwickeln Sie ein unausgewogenes Klassifizierungsmodell zur Erkennung von Ölverschmutzungen

Entwickeln Sie ein unausgewogenes Klassifizierungsmodell zur Erkennung von Ölverschmutzungen
Photo by Lenny K Fotografie, Einige Rechte vorbehalten.

Tutorial Übersicht

Dieses Tutorial ist in fünf Teile unterteilt. Sie sind:

  1. Ölkatastrophendatensatz
  2. Erkunden Sie den Datensatz
  3. Modelltest und Basisergebnis
  4. Modelle auswerten
    1. Bewerten Sie probabilistische Modelle
    2. Bewerten Sie die ausgewogene logistische Regression
    3. Bewerten Sie Resampling mit probabilistischen Modellen
  5. Machen Sie Vorhersagen für neue Daten

Ölkatastrophendatensatz

In diesem Projekt werden wir einen Standard-Datensatz für unausgeglichenes maschinelles Lernen verwenden, der als „Ölpest„Datensatz“, „Ölteppiche"Datensatz oder einfach"Öl"

Der Datensatz wurde in der Arbeit von 1998 vorgestellt Miroslav Kubat, et al. mit dem Titel „Maschinelles Lernen zur Erkennung von Ölverschmutzungen in Satellitenradarbildern.“ Der Datensatz wird oft gutgeschrieben Robert Holte, ein Co-Autor des Artikels.

Der Datensatz wurde ausgehend von Satellitenbildern des Ozeans entwickelt, von denen einige eine Ölpest zeigen, andere nicht. Die Bilder wurden in Abschnitte aufgeteilt und mithilfe von Computer-Vision-Algorithmen verarbeitet, um einen Merkmalsvektor zur Beschreibung des Inhalts des Bildabschnitts oder Patches bereitzustellen.

Die Eingabe in [das System] ist ein Rohpixelbild von einem Radarsatelliten. Es werden Bildverarbeitungstechniken verwendet. […] Die Ausgabe der Bildverarbeitung ist ein Merkmalsvektor fester Länge für jede verdächtige Region. Während des normalen Betriebs werden diese Merkmalsvektoren in einen Klassierer eingespeist, um zu entscheiden, welche Bilder und welche Bereiche innerhalb eines Bildes zur menschlichen Inspektion präsentiert werden sollen.

- Maschinelles Lernen zur Erkennung von Ölverschmutzungen in Satellitenradarbildern 1998.

Die Aufgabe erhält einen Vektor, der den Inhalt eines Teils eines Satellitenbilds beschreibt und dann vorhersagt, ob der Teil eine Ölpest enthält oder nicht, z. B. durch illegales oder versehentliches Ablassen von Öl in den Ozean.

Es gibt 937 Fälle. Jeder Fall besteht aus 48 numerischen, von Computer Vision abgeleiteten Merkmalen, einer Patch-Nummer und einer Klassenbezeichnung.

Insgesamt wurden neun Satellitenbilder zu Patches verarbeitet. Die Fälle im Datensatz sind nach Bild sortiert und die erste Spalte des Datensatzes stellt die Patch-Nummer für das Bild dar. Dies wurde zur Schätzung der Modellleistung pro Bild bereitgestellt. In diesem Fall sind wir nicht an der Image- oder Patch-Nummer interessiert und diese erste Spalte kann entfernt werden.

Im Normalfall wird kein Ölaustritt mit der Klassenbezeichnung 0 angegeben, wohingegen eine Ölverschmutzung durch die Klassenbezeichnung 1 gekennzeichnet wird. Es gibt 896 Fälle ohne Ölaustritt und 41 Fälle mit Ölaustritt.

Das zweite kritische Merkmal des Ölverschmutzungsbereichs kann als unausgeglichenes Trainingsset bezeichnet werden: Es gibt sehr viel mehr negative Beispiele als ähnliche Ölteppiche als positive Beispiele. Den 41 Positivbeispielen stehen 896 Negativbeispiele gegenüber, die Mehrheitsklasse umfasst somit fast 96 % der Daten.

- Maschinelles Lernen zur Erkennung von Ölverschmutzungen in Satellitenradarbildern 1998.

Wir haben keinen Zugriff auf das Programm, mit dem Computer-Vision-Merkmale aus den Satellitenbildern erstellt werden, und sind daher auf die Arbeit mit den extrahierten Merkmalen beschränkt, die gesammelt und zur Verfügung gestellt wurden.

Schauen wir uns als nächstes die Daten genauer an.

Möchten Sie mit der Ungleichgewichtsklassifizierung beginnen?

Nehmen Sie jetzt an meinem kostenlosen 7-tägigen E-Mail-Crashkurs teil (mit Beispielcode).

Klicken Sie hier, um sich anzumelden und eine kostenlose PDF-E-Book-Version des Kurses zu erhalten.

Laden Sie Ihren KOSTENLOSEN Minikurs herunter

Erkunden Sie den Datensatz

Laden Sie zunächst den Datensatz herunter und speichern Sie ihn in Ihrem aktuellen Arbeitsverzeichnis unter dem Namen „Ölpest.csv"

Überprüfen Sie den Inhalt der Datei.

Die ersten Zeilen der Datei sollten wie folgt aussehen:

Wir können sehen, dass die erste Spalte ganze Zahlen für die Patch-Nummer enthält. Wir können auch sehen, dass die von der Computer-Vision abgeleiteten Merkmale reale Werte mit unterschiedlichen Maßstäben haben, z. B. Tausender in der zweiten Spalte und Brüche in anderen Spalten.

Alle Eingabevariablen sind numerisch und es fehlen keine Werte, die mit einem „“ gekennzeichnet sind.?Charakter.

Zunächst können wir den CSV-Datensatz laden und die Anzahl der Zeilen und Spalten bestätigen.

Das Dataset kann mit dem als DataFrame geladen werden read_csv () Pandas-Funktionunter Angabe des Speicherorts und der Tatsache, dass keine Kopfzeile vorhanden ist.

Nach dem Laden können wir die Anzahl der Zeilen und Spalten zusammenfassen, indem wir die Form des drucken Datenrahmen.

Wir können auch die Anzahl der Beispiele in jeder Klasse mit dem zusammenfassen Counter Objekt.

Im Folgenden wird das vollständige Beispiel für das Laden und Zusammenfassen des Datensatzes aufgeführt.

Wenn Sie das Beispiel zuerst ausführen, wird der Datensatz geladen und die Anzahl der Zeilen und Spalten bestätigt.

Anschließend wird die Klassenverteilung zusammengefasst, wobei die Anzahl der Ölunfälle und Nichtunfälle sowie der Prozentsatz der Fälle in der Minderheits- und Mehrheitsklasse bestätigt werden.

Wir können uns auch die Verteilung jeder Variablen ansehen, indem wir für jede Variable ein Histogramm erstellen.

Mit 50 Variablen sind es viele Diagramme, aber wir könnten einige interessante Muster entdecken. Außerdem müssen wir bei so vielen Plots die Achsenbeschriftungen und Plottitel deaktivieren, um die Übersichtlichkeit zu verringern. Das vollständige Beispiel ist unten aufgeführt.

Beim Ausführen des Beispiels wird die Abbildung mit einem Histogramm-Unterdiagramm für jede der 50 Variablen im Datensatz erstellt.

Wir können viele verschiedene Distributionen sehen, einige mit Gaußsche Verteilungenandere mit scheinbar exponentiellen oder diskreten Verteilungen.

Abhängig von der Wahl der Modellierungsalgorithmen würden wir erwarten, dass die Skalierung der Verteilungen auf denselben Bereich nützlich ist und möglicherweise einige Leistungstransformationen verwendet werden.

Histogramm jeder Variablen im Ölkatastrophendatensatz

Histogramm jeder Variablen im Ölkatastrophendatensatz

Nachdem wir den Datensatz überprüft haben, wollen wir uns mit der Entwicklung eines Testgeschirrs zur Bewertung von Kandidatenmodellen befassen.

Modelltest und Basisergebnis

Wir werden Kandidatenmodelle unter Verwendung einer wiederholten geschichteten k-fachen Kreuzvalidierung bewerten.

Das k-faches Kreuzvalidierungsverfahren bietet eine gute allgemeine Schätzung der Modellleistung, die zumindest im Vergleich zu einem einzelnen Zugtest-Split nicht zu optimistisch ist. Wir werden k = 10 verwenden, was bedeutet, dass jede Falte ungefähr 937/10 oder ungefähr 94 Beispiele enthält.

Stratifiziert bedeutet, dass jede Falte die gleiche Mischung von Beispielen nach Klasse enthält, d. h. etwa 96 % bis 4 % ohne Überlauf. Wiederholt bedeutet, dass der Bewertungsprozess mehrmals durchgeführt wird, um zufällige Ergebnisse zu vermeiden und die Varianz des ausgewählten Modells besser zu erfassen. Wir werden drei Wiederholungen verwenden.

Dies bedeutet, dass ein einzelnes Modell 10 * 3 oder 30 Mal angepasst und bewertet wird und der Mittelwert und die Standardabweichung dieser Läufe angegeben werden.

Dies kann erreicht werden mit der RepeatedStratifiedKFold Scikit-Lernklasse.

Wir prognostizieren Klassenbezeichnungen dafür, ob ein Satellitenbild-Patch eine Verschüttung enthält oder nicht. Es gibt viele Messgrößen, die wir verwenden könnten, obwohl die Autoren der Arbeit beschlossen haben, die Sensitivität, Spezifität und den geometrischen Mittelwert der beiden Werte, den sogenannten G-Mittelwert, anzugeben.

Zu diesem Zweck haben wir hauptsächlich den geometrischen Mittelwert (g-mean) verwendet. […] Dieses Maß hat die besondere Eigenschaft, unabhängig von der Verteilung der Beispiele zwischen den Klassen zu sein und ist daher robust unter Umständen, unter denen sich diese Verteilung mit der Zeit ändern oder in den Trainings- und Testsätzen unterschiedlich sein könnte.

- Maschinelles Lernen zur Erkennung von Ölverschmutzungen in Satellitenradarbildern 1998.

Denken Sie daran, dass die Sensitivität ein Maß für die Genauigkeit der positiven Klasse und die Spezifität ein Maß für die Genauigkeit der negativen Klasse ist.

  • Empfindlichkeit = TruePositives / (TruePositives + FalseNegatives)
  • Spezifität = TrueNegatives / (TrueNegatives + FalsePositives)

Der G-Mittelwert sucht ein Gleichgewicht dieser Werte, der geometrisches Mittel, wo eine schlechte Leistung für den einen oder anderen zu einem niedrigen G-Mittelwert führt.

  • G-Mittelwert = sqrt (Empfindlichkeit * Spezifität)

Wir können den G-Mittelwert für eine Reihe von Vorhersagen berechnen, die von einem Modell unter Verwendung von gemacht wurden geometric_mean_score () Funktion bereitgestellt von der Bibliothek für unausgeglichenes Lernen.

Zuerst können wir eine Funktion definieren, um den Datensatz zu laden und die Spalten in Eingabe- und Ausgabevariablen aufzuteilen. Wir werden auch Spalte 22 weglassen, da die Spalte einen einzelnen Wert enthält und die erste Spalte die Bild-Patch-Nummer definiert. Der load_dataset () Die folgende Funktion implementiert dies.

Anschließend können wir eine Funktion definieren, die ein bestimmtes Modell im Datensatz auswertet und eine Liste der G-Mean-Werte für jede Faltung und Wiederholung zurückgibt.

Das evaluiere_model () Die folgende Funktion implementiert dies, indem sie den Datensatz und das Modell als Argumente verwendet und die Liste der Bewertungen zurückgibt.

Schließlich können wir mit diesem Testkabel ein Basismodell für den Datensatz auswerten.

Ein Modell, das für alle Fälle die Mehrheitsklassenbezeichnung (0) oder die Minderheitsklassenbezeichnung (1) vorhersagt, führt zu einem G-Mittelwert von Null. Daher wäre eine gute Standardstrategie, die eine oder andere Klassenbezeichnung zufällig mit einer Wahrscheinlichkeit von 50 % vorherzusagen und einen G-Mittelwert von etwa 0.5 anzustreben.

Dies kann erreicht werden mit der DummyClassifier-Klasse aus der Scikit-Learn-Bibliothek und Festlegen des „StrategieArgument zu 'Uniform'.

Sobald das Modell bewertet ist, können wir den Mittelwert und die Standardabweichung der G-Mittelwerte direkt angeben.

Zusammenfassend ist unten das vollständige Beispiel für das Laden des Datensatzes, die Bewertung eines Basismodells und die Berichterstattung über die Leistung aufgeführt.

Wenn Sie das Beispiel zuerst ausführen, wird das Dataset geladen und zusammengefasst.

Wir können sehen, dass wir die richtige Anzahl geladener Zeilen haben und dass wir über 47 von Computer Vision abgeleitete Eingabevariablen verfügen, wobei die Konstantwertspalte (Index 22) und die Patchnummernspalte (Index 0) entfernt wurden.

Wichtig ist, dass die Klassenbezeichnungen die korrekte Zuordnung zu Ganzzahlen mit 0 für die Mehrheitsklasse und 1 für die Minderheitsklasse aufweisen, was für einen unausgeglichenen binären Klassifizierungsdatensatz üblich ist.

Als nächstes wird der Durchschnitt der G-Mean-Scores angegeben.

Ihre spezifischen Ergebnisse variieren aufgrund der stochastischen Natur des Algorithmus. Führen Sie das Beispiel einige Male aus.

In diesem Fall können wir sehen, dass der Basislinienalgorithmus einen G-Mittelwert von ungefähr 0.47 erreicht, nahe dem theoretischen Maximum von 0.5. Diese Punktzahl bietet eine Untergrenze für die Modellfähigkeit. Jedes Modell, das einen durchschnittlichen G-Mittelwert über etwa 0.47 (oder wirklich über 0.5) erreicht, verfügt über Fähigkeiten, während Modelle, die eine Punktzahl unter diesem Wert erreichen, über keine Fähigkeiten in diesem Datensatz verfügen.

Es ist interessant festzustellen, dass in der Arbeit ein guter G-Mittelwert von etwa 0.811 angegeben wurde, obwohl das Modellbewertungsverfahren anders war. Dies stellt eine grobe Zielvorgabe dar für „gut” Leistung für diesen Datensatz.

Nachdem wir nun ein Testkabel und eine Basislinie für die Leistung haben, können wir beginnen, einige Modelle in diesem Datensatz zu bewerten.

Modelle auswerten

In diesem Abschnitt werden wir eine Reihe verschiedener Techniken für den Datensatz anhand des im vorherigen Abschnitt entwickelten Testgurtes bewerten.

Ziel ist es, sowohl zu demonstrieren, wie das Problem systematisch gelöst werden kann, als auch die Fähigkeit einiger Techniken zu demonstrieren, die für unausgewogene Klassifizierungsprobleme entwickelt wurden.

Die gemeldete Leistung ist gut, aber nicht stark optimiert (z. B. werden Hyperparameter nicht abgestimmt).

Welche Punktzahl kannst du erreichen? Wenn Sie mit demselben Testkabel eine bessere G-Mean-Leistung erzielen können, würde ich gerne davon hören. Lass es mich in den Kommentaren unten wissen.

Bewerten Sie probabilistische Modelle

Beginnen wir mit der Bewertung einiger probabilistischer Modelle für den Datensatz.

Bei probabilistischen Modellen handelt es sich um Modelle, die unter einem probabilistischen Rahmen an die Daten angepasst sind und bei unausgeglichenen Klassifizierungsdatensätzen im Allgemeinen häufig eine gute Leistung erbringen.

Wir werden die folgenden Wahrscheinlichkeitsmodelle mit Standard-Hyperparametern im Datensatz bewerten:

  • Logistische Regression (LR)
  • Lineare Diskriminanzanalyse (LDA)
  • Gaußsche Naive Bayes (NB)

Sowohl LR als auch LDA reagieren empfindlich auf die Skala der Eingabevariablen und erwarten oft eine bessere Leistung und/oder erzielen eine bessere Leistung, wenn Eingabevariablen mit unterschiedlichen Skalen als Vorverarbeitungsschritt normalisiert oder standardisiert werden.

In diesem Fall standardisieren wir den Datensatz vor der Anpassung jedes Modells. Dies wird mit a erreicht Pipeline und für Standardskala Klasse. Durch die Verwendung einer Pipeline wird sichergestellt, dass der StandardScaler in den Trainingsdatensatz passt und innerhalb jeder k-fachen Kreuzvalidierungsauswertung auf die Trainings- und Testsätze angewendet wird, wodurch Datenlecks vermieden werden, die zu einem optimistischen Ergebnis führen könnten.

Wir können wie folgt eine Liste von Modellen definieren, die auf unserer Testumgebung bewertet werden sollen:

Sobald wir sie definiert haben, können wir die Liste aufzählen und sie nacheinander auswerten. Der Mittelwert und die Standardabweichung der G-Mittelwerte können während der Auswertung ausgedruckt und die Stichprobe der Ergebnisse gespeichert werden.

Algorithmen können direkt anhand ihres mittleren G-Mittelwertes verglichen werden.

Am Ende des Laufs können wir die Ergebnisse verwenden, um für jeden Algorithmus ein Box-and-Whisker-Plot zu erstellen.

Wenn Sie die Diagramme nebeneinander erstellen, können die Verteilungen sowohl im Hinblick auf den Mittelwert als auch auf die mittleren 50 Prozent der Verteilung zwischen dem 25. und 75. Perzentil verglichen werden.

Zusammenfassend ist unten das vollständige Beispiel aufgeführt, in dem drei Wahrscheinlichkeitsmodelle für den Ölverschmutzungsdatensatz mithilfe des Testkabels verglichen werden.

Beim Ausführen des Beispiels wird jedes der probabilistischen Modelle für den Datensatz ausgewertet.

Ihre spezifischen Ergebnisse variieren aufgrund der stochastischen Natur der Lernalgorithmen. Führen Sie das Beispiel einige Male aus.

Möglicherweise sehen Sie einige Warnungen des LDA-Algorithmus, wie zum Beispiel „Variablen sind kollinear„. Diese können vorerst getrost ignoriert werden, legen aber nahe, dass der Algorithmus von der Merkmalsauswahl profitieren könnte, um einige der Variablen zu entfernen.

In diesem Fall können wir sehen, dass jeder Algorithmus über Fähigkeiten verfügt und einen mittleren G-Mittelwert über 0.5 erreicht. Die Ergebnisse deuten darauf hin, dass ein LDA möglicherweise das leistungsstärkste der getesteten Modelle ist.

Die Verteilung der G-Mittelwerte wird anhand einer Abbildung mit einem Box- und Whisker-Diagramm für jeden Algorithmus zusammengefasst. Wir können sehen, dass die Verteilung sowohl für LDA als auch für NB kompakt und geschickt ist und dass der LR während des Laufs möglicherweise einige Ergebnisse liefert, bei denen die Methode eine schlechte Leistung erbringt und die Verteilung nach unten drückt.

Dies verdeutlicht, dass bei der Auswahl eines Modells nicht nur die mittlere Leistung, sondern auch die Konsistenz des Modells berücksichtigt werden sollte.

Box- und Whisker-Diagramm probabilistischer Modelle für den unausgeglichenen Ölverschmutzungsdatensatz

Box- und Whisker-Diagramm probabilistischer Modelle für den unausgeglichenen Ölverschmutzungsdatensatz

Wir haben einen guten Start hingelegt, aber wir können es noch besser machen.

Bewerten Sie die ausgewogene logistische Regression

Der logistische Regressionsalgorithmus unterstützt eine Modifikation, die die Bedeutung von Klassifizierungsfehlern umgekehrt proportional zur Klassengewichtung anpasst.

Dadurch kann das Modell die Klassengrenze zugunsten der Minderheitsklasse besser lernen, was die Gesamtleistung des G-Mittelwerts verbessern könnte. Wir können dies erreichen, indem wir „class_weight”Argument der Logistische Regression zu 'balanced'.

Wie bereits erwähnt, reagiert die logistische Regression empfindlich auf die Skala der Eingabevariablen und kann mit normalisierten oder standardisierten Eingaben eine bessere Leistung erbringen; Daher ist es eine gute Idee, beides für einen bestimmten Datensatz zu testen. Darüber hinaus kann eine Potenzverteilung verwendet werden, um die Verteilung jeder Eingabevariablen zu verteilen und diese Variablen mit einer Gauß-ähnlichen Verteilung stärker Gauß-förmig zu machen. Davon können Modelle wie die logistische Regression profitieren, die Annahmen über die Verteilung von Eingabevariablen treffen.

Der Power-Spiegel verwendet die Yeo-Johnson-Methode, die positive und negative Eingaben unterstützt, aber wir werden vor der Transformation auch die Daten normalisieren. Auch der Leistungstransformator Die für die Transformation verwendete Klasse standardisiert auch jede Variable nach der Transformation.

Wir vergleichen a Logistische Regression mit einer ausgewogenen Klassengewichtung für denselben Algorithmus mit drei verschiedenen Datenaufbereitungsschemata, insbesondere Normalisierung, Standardisierung und einer Leistungstransformation.

Zusammenfassend ist unten der Vergleich der ausgewogenen logistischen Regression mit verschiedenen Datenaufbereitungsschemata aufgeführt.

Beim Ausführen des Beispiels wird jede Version des ausgewogenen logistischen Regressionsmodells für den Datensatz ausgewertet.

Ihre spezifischen Ergebnisse variieren aufgrund der stochastischen Natur der Lernalgorithmen. Führen Sie das Beispiel einige Male aus.

Möglicherweise sehen Sie einige Warnungen vom ersten ausgewogenen LR-Modell, wie zum Beispiel „Liblinear konnte nicht konvergieren„. Diese Warnungen können vorerst getrost ignoriert werden, deuten jedoch darauf hin, dass der Algorithmus von der Funktionsauswahl zum Entfernen einiger Variablen profitieren könnte.

In diesem Fall können wir sehen, dass die ausgewogene Version der logistischen Regression viel besser abschneidet als alle im vorherigen Abschnitt bewerteten Wahrscheinlichkeitsmodelle.

Die Ergebnisse deuten darauf hin, dass möglicherweise die Verwendung von ausgewogenem LR mit Datennormalisierung für die Vorverarbeitung bei diesem Datensatz mit einem mittleren G-Mittelwert von etwa 0.852 die beste Leistung erbringt. Dies liegt im Bereich oder besser als die in der Arbeit von 1998 berichteten Ergebnisse.

Für jeden Algorithmus wird eine Abbildung mit Box- und Whisker-Plots erstellt, die einen Vergleich der Ergebnisverteilung ermöglicht.

Wir können sehen, dass die Verteilung für die ausgeglichene LR im Allgemeinen enger ist als die nicht ausgeglichene Version im vorherigen Abschnitt. Wir können auch sehen, dass das mittlere Ergebnis (orangefarbene Linie) für die normalisierte Version höher als der Mittelwert ist, nämlich über 0.9, was beeindruckend ist. Ein vom Median abweichender Mittelwert deutet auf eine verzerrte Verteilung der Ergebnisse hin, wodurch der Mittelwert nach unten zieht und einige schlechte Ergebnisse erzielt werden.

Box-and-Whisker-Diagramm ausgewogener logistischer Regressionsmodelle für den unausgeglichenen Ölkatastrophendatensatz

Box-and-Whisker-Diagramm ausgewogener logistischer Regressionsmodelle für den unausgeglichenen Ölkatastrophendatensatz

Wir haben jetzt mit wenig Aufwand hervorragende Ergebnisse erzielt; Mal sehen, ob wir noch einen Schritt weiter gehen können.

Bewerten Sie die Datenstichprobe mit probabilistischen Modellen

Die Datenerfassung bietet eine Möglichkeit, den unausgeglichenen Trainingsdatensatz vor dem Anpassen eines Modells besser vorzubereiten.

Die vielleicht beliebteste Datenerfassung ist die SMOTEN Oversampling-Technik zur Erstellung neuer synthetischer Beispiele für die Minderheitsklasse. Dies kann mit dem kombiniert werden Nächster Nachbar bearbeitet (ENN)-Algorithmus, der mehrdeutige Beispiele findet und aus dem Datensatz entfernt, sodass Modelle leichter lernen können, zwischen den beiden Klassen zu unterscheiden.

Diese Kombination heißt SMOTE-ENN und kann mit dem implementiert werden SMOTEENN Klasse aus der Imbalanced-Learn-Bibliothek; Zum Beispiel:

SMOTE und ENN funktionieren beide besser, wenn die Eingabedaten vorher skaliert werden. Dies liegt daran, dass bei beiden Techniken intern der Nächste-Nachbarn-Algorithmus verwendet wird und dieser Algorithmus empfindlich auf Eingabevariablen mit unterschiedlichen Maßstäben reagiert. Daher müssen die Daten im ersten Schritt normalisiert, dann abgetastet und dann als Eingabe für das (unausgeglichene) logistische Regressionsmodell verwendet werden.

Daher können wir die von der imbalanced-learn-Bibliothek bereitgestellte Pipeline-Klasse verwenden, um eine Folge von Datentransformationen zu erstellen, einschließlich der Datenstichprobenmethode und endend mit dem logistischen Regressionsmodell.

Wir werden vier Varianten des logistischen Regressionsmodells mit Datenstichproben vergleichen, insbesondere:

  • SMOTEENN + LR
  • Normalisierung + SMOTEENN + LR
  • Standardisierung + SMOTEENN + LR
  • Normalisierung + Leistung + SMOTEENN + LR

Es wird erwartet, dass LR mit SMOTEENN eine bessere Leistung erbringt und dass SMOTEENN mit Standardisierung oder Normalisierung eine bessere Leistung erbringt. Im letzten Fall wird viel bewirkt: Zuerst wird der Datensatz normalisiert, dann die Leistungstransformation angewendet, das Ergebnis standardisiert (denken Sie daran, dass die PowerTransformer-Klasse die Ausgabe standardmäßig standardisiert), SMOTEENN angewendet und schließlich ein logistisches Regressionsmodell angepasst wird.

Diese Kombinationen können wie folgt definiert werden:

Das vollständige Beispiel ist unten aufgeführt.

Beim Ausführen des Beispiels wird jede Version des SMOTEENN mit einem logistischen Regressionsmodell für den Datensatz ausgewertet.

Ihre spezifischen Ergebnisse variieren aufgrund der stochastischen Natur der Lernalgorithmen. Führen Sie das Beispiel einige Male aus.

In diesem Fall können wir sehen, dass das Hinzufügen von SMOTEENN die Leistung des Standard-LR-Algorithmus verbessert und einen mittleren G-Mittelwert von 0.852 erreicht, verglichen mit 0.621 im ersten Satz experimenteller Ergebnisse. Dies ist sogar besser als das ausgeglichene LR ohne Datenskalierung (vorheriger Abschnitt), das einen G-Mittelwert von etwa 0.846 erreichte.

Die Ergebnisse deuten darauf hin, dass die endgültige Kombination aus Normalisierung, Leistungstransformation und Standardisierung möglicherweise eine etwas bessere Punktzahl als die Standard-LR mit SMOTEENN mit einem G-Mittelwert von etwa 0.873 erzielt, obwohl die Warnmeldungen auf einige Probleme hinweisen, die behoben werden müssen.

Die Verteilung der Ergebnisse kann mit Box- und Whisker-Plots verglichen werden. Wir können sehen, dass die Verteilungen alle ungefähr die gleiche enge Streuung aufweisen und dass der Unterschied in den Mittelwerten der Ergebnisse zur Auswahl eines Modells verwendet werden kann.

Box- und Whisker-Diagramm logistischer Regressionsmodelle mit Datenstichprobe für den unausgeglichenen Ölkatastrophen-Datensatz

Box- und Whisker-Diagramm logistischer Regressionsmodelle mit Datenstichprobe für den unausgeglichenen Ölkatastrophen-Datensatz

Machen Sie Vorhersagen für neue Daten

Die direkte Verwendung von SMOTEENN mit logistischer Regression ohne jegliche Datenskalierung stellt wahrscheinlich das einfachste und leistungsfähigste Modell dar, das in Zukunft verwendet werden könnte.

Dieses Modell hatte auf unserem Testgurt einen mittleren G-Mittelwert von etwa 0.852.

Wir werden dies als unser endgültiges Modell verwenden und es verwenden, um Vorhersagen über neue Daten zu treffen.

Zunächst können wir das Modell als Pipeline definieren.

Einmal definiert, können wir es auf den gesamten Trainingsdatensatz anpassen.

Sobald es passt, können wir damit Vorhersagen für neue Daten treffen, indem wir das aufrufen vorhersagen() Funktion. Dadurch wird die Klassenbezeichnung 0 für „kein Ölaustritt“ oder 1 für einen Ölaustritt zurückgegeben.

Beispielsweise:

Um dies zu demonstrieren, können wir das Anpassungsmodell verwenden, um einige Vorhersagen zu Etiketten für einige Fälle zu treffen, in denen wir wissen, dass es keine Ölverschmutzung gibt, und für einige Fälle, in denen wir wissen, dass es eine Ölkatastrophe gibt.

Das vollständige Beispiel ist unten aufgeführt.

Wenn Sie das Beispiel zuerst ausführen, passt das Modell in den gesamten Trainingsdatensatz.

Dann wird das aus der Datensatzdatei ausgewählte Anpassungsmodell verwendet, um die Bezeichnung einer Ölkatastrophe für Fälle vorherzusagen, von denen wir wissen, dass es keine gibt. Wir können sehen, dass alle Fälle korrekt vorhergesagt wurden.

Dann werden einige Fälle tatsächlicher Ölverschmutzungen als Eingabe für das Modell verwendet und die Bezeichnung vorhergesagt. Wie wir vielleicht gehofft haben, werden wieder die richtigen Bezeichnungen vorhergesagt.

Weiterführende Literatur

Dieser Abschnitt enthält weitere Ressourcen zum Thema, wenn Sie tiefer gehen möchten.

Dokumente

APIs

Beiträge

Zusammenfassung

In diesem Tutorial haben Sie erfahren, wie Sie ein Modell entwickeln, um das Vorhandensein einer Ölpest in Satellitenbildern vorherzusagen und es mithilfe der G-Mittelwert-Metrik auszuwerten.

Insbesondere haben Sie gelernt:

  • Laden und Durchsuchen des Datensatzes und Generieren von Ideen für die Datenaufbereitung und Modellauswahl.
  • Wie man eine Reihe von Wahrscheinlichkeitsmodellen bewertet und ihre Leistung durch geeignete Datenaufbereitung verbessert.
  • So passen Sie ein endgültiges Modell an und verwenden es, um Klassenbeschriftungen für bestimmte Fälle vorherzusagen.


Stellen Sie Ihre Fragen in den Kommentaren unten und ich werde mein Bestes tun, um zu beantworten.

Holen Sie sich einen Griff auf unausgeglichene Klassifizierung!

Unausgeglichene Klassifizierung mit Python

Entwickeln Sie unausgeglichene Lernmodelle in wenigen Minuten

… Mit nur wenigen Zeilen Python-Code

Entdecken Sie, wie in meinem neuen Ebook:
Unausgeglichene Klassifizierung mit Python

Es bietet Tutorials zum Selbststudium und End-to-End-Projekte auf:
Leistungsmetriken, Unterabtastungsmethoden, SMOTEN, Schwellenwertbewegung, Wahrscheinlichkeitskalibrierung, Kostensensitive Algorithmen
und vieles mehr ...

Bringen Sie unausgewogene Klassifizierungsmethoden in Ihre maschinellen Lernprojekte ein

Sehen Sie, was drin ist


Quelle: https://machinelearningmastery.com/imbalanced-classification-model-to-detect-oil-spills/

spot_img

Neueste Intelligenz

spot_img