Trainieren eines Entscheidungsbaums gegen unausgeglichene Daten


43

Ich bin neu im Data Mining und versuche, einen Entscheidungsbaum gegen einen Datensatz zu trainieren, der sehr unausgewogen ist. Ich habe jedoch Probleme mit der schlechten Vorhersagegenauigkeit.

Die Daten bestehen aus Studenten, die Kurse studieren, und die Klassenvariable ist der Kursstatus, der zwei Werte hat - Zurückgezogen oder Aktuell.

  • Alter
  • Ethnizität
  • Geschlecht
  • Natürlich
    ...
  • Kursstatus

In der Datenmenge gibt es viel mehr Instanzen, die aktuell als zurückgezogen sind. Zurückgezogene Instanzen machen nur 2% der Gesamtinstanzen aus.

Ich möchte in der Lage sein, ein Modell zu erstellen, das die Wahrscheinlichkeit vorhersagt, dass sich eine Person in Zukunft zurückzieht. Beim Testen des Modells anhand der Trainingsdaten ist die Genauigkeit des Modells jedoch schrecklich.

Ich hatte ähnliche Probleme mit Entscheidungsbäumen, bei denen die Daten von einer oder zwei Klassen dominiert werden.

Welchen Ansatz kann ich verwenden, um dieses Problem zu lösen und einen genaueren Klassifikator zu erstellen?


4
Eine zu berücksichtigende Sache ist die Änderung der Strafbedingungen für verschiedene Arten der falschen Klassifizierung. Sie sagen nicht, welche Software Sie verwenden, aber ich glaube, jede gute Baumsoftware sollte Möglichkeiten enthalten, dies zu tun.
Peter Flom - Reinstate Monica

Antworten:


61

Dies ist ein interessantes und sehr häufiges Problem bei der Klassifizierung - nicht nur in Entscheidungsbäumen, sondern in praktisch allen Klassifizierungsalgorithmen.

Wie Sie empirisch gesehen haben, kann ein Trainingssatz, der aus einer unterschiedlichen Anzahl von Vertretern beider Klassen besteht, zu einem Klassifikator führen, der in Richtung der Mehrheitsklasse voreingenommen ist. Bei Anwendung auf einen Testsatz, der ähnlich unausgeglichen ist, liefert dieser Klassifizierer eine optimistische Genauigkeitsschätzung. Im Extremfall kann der Klassifikator jeden einzelnen Testfall der Mehrheitsklasse zuordnen, wodurch eine Genauigkeit erreicht wird, die dem Anteil der Testfälle entspricht, die zur Mehrheitsklasse gehören. Dies ist ein bekanntes Phänomen in der binären Klassifizierung (und erstreckt sich natürlich auch auf Einstellungen für mehrere Klassen).

Dies ist ein wichtiges Problem, da ein unausgeglichenes Dataset zu überhöhten Leistungsschätzungen führen kann. Dies kann wiederum zu falschen Schlussfolgerungen über die Signifikanz führen, mit der der Algorithmus besser als der Zufall abgeschnitten hat.

Die Literatur zum maschinellen Lernen zu diesem Thema hat im Wesentlichen drei Lösungsstrategien entwickelt.

  1. Sie können Guthaben auf dem Trainingssatz wiederherstellen Unterabtastung die große Klasse oder durch Überabtasten die kleine Klasse, Vorspannung zu verhindern , dass in erster Linie entstehen.

  2. Alternativ können Sie die Kosten für eine Fehlklassifizierung, wie in einer vorherigen Antwort erwähnt, erneut ändern, um eine Verzerrung zu vermeiden.

  3. Eine zusätzliche Sicherung besteht darin, die Genauigkeit durch die sogenannte abgeglichene Genauigkeit zu ersetzen . Sie ist definiert als das arithmetische Mittel der klassenspezifischen Genauigkeiten wobei und stellen die Genauigkeit dar, die an positiven bzw. negativen Beispielen erhalten wurde. Wenn der Klassifikator in beiden Klassen gleich gut abschneidet, reduziert sich dieser Term auf die herkömmliche Genauigkeit (dh die Anzahl der korrekten Vorhersagen geteilt durch die Gesamtanzahl der Vorhersagen). Wenn dagegen die herkömmliche Genauigkeit nur deshalb über dem Zufall liegt , weil der Klassifikator einen unausgeglichenen Testsatz ausnutzt, fällt die ausgeglichene Genauigkeit gegebenenfalls auf den Zufall (siehe Skizze unten).π+π-ϕ:=12(π++π),π+π

Genauigkeit vs. ausgeglichene Genauigkeit

Ich würde empfehlen, mindestens zwei der oben genannten Ansätze in Verbindung zu betrachten. Sie könnten beispielsweise Ihre Minderheitsklasse überbemustern, um zu verhindern, dass Ihr Klassifikator eine Tendenz zugunsten der Mehrheitsklasse erhält. Anschließend können Sie bei der Bewertung der Leistung Ihres Klassifikators die Genauigkeit durch die ausgeglichene Genauigkeit ersetzen. Die beiden Ansätze ergänzen sich. Wenn sie zusammen angewendet werden, sollten sie Ihnen helfen, Ihr ursprüngliches Problem zu verhindern und falsche Schlussfolgerungen daraus zu vermeiden.

Gerne stelle ich Ihnen weitere Literaturhinweise zur Verfügung, wenn Sie dies weiter verfolgen möchten.


3
Broder - danke für die ausführlichen Infos. Das war sehr hilfreich! Zunächst habe ich versucht, die Data Mining-Funktionalität in SQL Server zu verwenden. Auf Ihren Rat hin habe ich jedoch zu R gewechselt. Ich habe den SMOTE-Algorithmus verwendet, um den Datensatz neu auszugleichen, und versucht, sowohl Entscheidungsbäume als auch SVM zu verwenden. DTs liefern eine ausgeglichene Genauigkeit von 81% und mit SVM sogar noch besser. Eine Frage: Soll ich das Modell mit einem Datensatz testen, der auch neu abgeglichene Daten enthält? Oder sollte es gegen Daten eher wie das Original getestet werden?
Chrisb

2
Das ist toll zu hören. Zu Ihrer Frage: Sie möchten Ihre Testdaten nicht ausgleichen. Dies würde Ihre Leistungsbewertung beeinträchtigen, da Sie einige Beispiele zweimal testen würden (im Fall von Überabtastung) oder einige Beispiele aus dem Test auslassen würden (im Fall von Unterabtastung). Zusammenfassend möchten Sie Ihren Trainingssatz ausgleichen (getrennt innerhalb jeder Kreuzvalidierungsfalte), aber dann die unveränderten (möglicherweise unausgeglichenen) Testdaten testen.
Kay Brodersen

Danke Broder. Dadurch ergibt sich ein anderes Bild der Dinge. Die Abgleichgenauigkeit sinkt auf ca. 56%. Die Empfindlichkeit meines besten Modells sinkt auf 17% (entsprechend der Klasse, die ich für bessere Vorhersagen benötige). Ich nehme an, dass dies sinnvoll ist, da die überabgetastete Klasse diese Klasse ist, sodass diese Beispiele mehrfach gezählt werden. Ich werde versuchen, den Ausgleich des Trainingsdatensatzes zu erhöhen, um festzustellen, ob dies einen Unterschied macht.
Chrisb

Nachdem ich es jetzt mit verschiedenen Anteilen ausgewogener Daten getestet habe, ist die beste Genauigkeit, die ich erzielen kann, mit Ada Boost mit 60%. Ich kämpfe allerdings, um herauszufinden, was "gut" ist. Mein Hauptziel ist es, Studenten vorherzusagen, die von ihrem Kurs zurücktreten können. Mit "Zurückziehen" als meine positive Klasse habe ich versucht, meine Anzahl an echten Positiven zu maximieren (dh die Empfindlichkeit zu erhöhen). Ein erneuter Abgleich der Daten geht zu Lasten der Anzahl der falsch negativen Ergebnisse. 60% erscheinen mir nicht viel besser als zufällig - aber ich habe keine Basis für das, was in diesem Fall "gut" ist.
Chrisb

2
@chrisb, Dies ist ein etwas (!) später Kommentar. Anhand einer Tangente können Sie die Cox-Regression für proportionale Gefahren ( cran.r-project.org/doc/contrib/Fox-Companion/… ) ausprobieren , um das Überleben Ihrer Schüler zu modellieren. Möglicherweise müssen Sie kein Down- oder Oversampling durchführen.
Zhubarb

8

Die folgenden vier Ideen können Ihnen dabei helfen, dieses Problem zu lösen.

  1. Wählen Sie ein geeignetes Leistungsmaß aus, und passen Sie dann die Hyperparameter Ihres Modells an (z. B. Regularisierung), um zufriedenstellende Ergebnisse im Cross-Validation-Dataset zu erzielen. Wenn Sie zufrieden sind, testen Sie Ihr Modell im Test-Dataset. Setzen Sie für diese Zwecke 15% Ihrer Daten für die Kreuzvalidierung und 15% für die Endprüfung ein. Eine etablierte Maßnahme des maschinellen Lernens, für die Andrews Ng plädiert, ist die F1-Statistik, die als . Versuchen Sie, diese Zahl im Cross-Validation-Dataset zu maximieren, und stellen Sie sicher, dass die Leistung auch im Test-Dataset stabil ist.2PrecisionRecallPrecision+Recall

  2. Verwenden Sie den Parameter 'prior' in den Entscheidungsbäumen, um den Algorithmus über die vorherige Häufigkeit der Klassen im Datensatz zu informieren, dh, wenn ein Datensatz mit 1.000.000 Positiven prior = c(0.001, 0.999)(in R) 1.000.000 enthält .

  3. Verwenden Sie das Argument 'Wichtungen' in der Klassifizierungsfunktion, die Sie verwenden, um den Algorithmus für Fehlklassifizierungen der seltenen positiven Fälle schwerwiegend zu benachteiligen

  4. Verwenden Sie das Argument 'cost' in einigen Klassifizierungsalgorithmen - z. B. rpartin R -, um die relativen Kosten für die Fehlklassifizierung von echten Positiven und echten Negativen zu definieren. Sie sollten natürlich hohe Kosten für die Fehlklassifizierung der seltenen Klasse ansetzen.

Ich bin nicht für eine Überabtastung, da dies abhängige Beobachtungen in den Datensatz einführt und dies gegen die in Statistik und maschinellem Lernen getroffenen Annahmen der Unabhängigkeit verstößt.


2

Ich habe im letzten Thema eine Antwort gegeben :

Was wir tun, ist eine Probe mit unterschiedlichen Proportionen zu wählen. In dem oben erwähnten Beispiel wären das 1000 Fälle von "JA" und zum Beispiel 9000 Fälle von "NEIN". Dieser Ansatz liefert stabilere Modelle. Es muss jedoch an einer realen Probe (mit 1.000.000 Zeilen) getestet werden.

Dies gibt nicht nur einen stabileren Ansatz, sondern die Modelle sind im Allgemeinen besser, was Maßnahmen in Bezug auf den Auftrieb anbelangt.

Sie können es als "Überabtastung in Statistiken" suchen, das erste Ergebnis ist ziemlich gut: http://www.statssa.gov.za/isi2009/ScientificProgramme/IPMS/1621.pdf


1

Hinzufügen zu @Kays Antwort 1. Lösungsstrategie: Synthetic Minority Oversampling ( SMOTE ) ist meiner Erfahrung nach in der Regel besser als Unter- oder Überabtastung, da es meiner Meinung nach einen Kompromiss zwischen beiden darstellt. Es werden synthetische Stichproben der Minderheitsklasse unter Verwendung der Datenpunkte erstellt, die im multivariaten Prädiktorraum aufgezeichnet sind, und es werden mehr oder weniger Mittelpunkte zwischen benachbarten Punkten in diesem Raum verwendet, um neue synthetische Punkte zu erstellen und somit beide Klassengrößen auszugleichen. (keine Ahnung von den Mittelpunkten, Details des Algorithmus hier

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.