Absacken mit Überabtastung für Vorhersagemodelle für seltene Ereignisse

13

Weiß jemand, ob das Folgende beschrieben wurde und (wie auch immer), ob es sich um eine plausible Methode zum Lernen eines Vorhersagemodells mit einer sehr unausgeglichenen Zielvariablen handelt?

In CRM-Anwendungen des Data Mining wird häufig nach einem Modell gesucht, bei dem das positive Ereignis (Erfolg) im Vergleich zur Mehrheit (negative Klasse) sehr selten ist. Zum Beispiel kann es 500.000 Fälle geben, in denen nur 0,1% der positiven Interessenklasse angehören (z. B. wenn der Kunde gekauft hat). Um ein Vorhersagemodell zu erstellen, besteht eine Methode darin, die Daten abzutasten, wobei Sie alle positiven Klasseninstanzen und nur eine Stichprobe der negativen Klasseninstanzen aufbewahren, sodass das Verhältnis von positiver zu negativer Klasse näher bei 1 liegt (möglicherweise 25%). zu 75% positiv zu negativ). Überabtastung, Unterabtastung, SMOTE usw. sind alle Methoden in der Literatur.

Ich bin gespannt darauf, obige grundlegende Sampling-Strategie mit dem Absacken der negativen Klasse zu kombinieren.

  • Behalte alle positiven Klasseninstanzen (zB 1.000)
  • Probieren Sie die negativen Klasseninstanzen aus, um eine ausgewogene Stichprobe zu erstellen (z. B. 1.000).
  • Passen Sie das Modell
  • Wiederholen

Hat jemand schon mal davon gehört? Das Problem ohne Bagging ist, dass bei einer Stichprobe von nur 1.000 Instanzen der negativen Klasse bei 500.000 der Prädiktorraum knapp wird und Sie möglicherweise keine Darstellung möglicher Prädiktorwerte / -muster haben. Bagging scheint hier Abhilfe zu schaffen.

Ich habe rpart angeschaut und nichts "bricht", wenn eine der Stichproben nicht alle Werte für einen Prädiktor enthält (bricht nicht, wenn dann Instanzen mit diesen Prädiktorwerten vorhergesagt werden:

library(rpart)
tree<-rpart(skips ~ PadType,data=solder[solder$PadType !='D6',], method="anova")
predict(tree,newdata=subset(solder,PadType =='D6'))

Irgendwelche Gedanken?

UPDATE: Ich habe einen Datensatz aus der realen Welt (Marketing Direct Mail Response-Daten) genommen und zufällig in Training und Validierung aufgeteilt. Es gibt 618 Prädiktoren und 1 binäres Ziel (sehr selten).

Training:
Total Cases: 167,923
Cases with Y=1: 521

Validation:
Total Cases: 141,755
Cases with Y=1: 410

Ich habe alle positiven Beispiele (521) aus dem Trainingssatz und eine Zufallsstichprobe von negativen Beispielen derselben Größe für eine ausgewogene Stichprobe genommen. Ich passe einen Teilbaum an:

models[[length(models)+1]]<-rpart(Y~.,data=trainSample,method="class")

Ich habe diesen Vorgang 100 Mal wiederholt. Dann wurde die Wahrscheinlichkeit von Y = 1 für die Fälle der Validierungsstichprobe für jedes dieser 100 Modelle vorhergesagt. Ich habe einfach die 100 Wahrscheinlichkeiten für eine endgültige Schätzung gemittelt. Ich habe die Wahrscheinlichkeiten des Validierungssatzes dekiliert und in jedem Dekil den Prozentsatz der Fälle berechnet, in denen Y = 1 ist (die traditionelle Methode zur Schätzung der Rangordnungsfähigkeit des Modells).

Result$decile<-as.numeric(cut(Result[,"Score"],breaks=10,labels=1:10)) 

Hier ist die Leistung: Bildbeschreibung hier eingeben

Um zu sehen, wie dies im Vergleich zu keinem Absacken der Fall ist, habe ich die Validierungsstichprobe nur mit der ersten Stichprobe vorhergesagt (alle positiven Fälle und eine Zufallsstichprobe derselben Größe). Es ist klar, dass die erfassten Daten zu dünn oder zu stark angepasst waren, um in der Hold-out-Validierungsstichprobe wirksam zu sein.

Hinweis auf die Wirksamkeit der Absackroutine bei seltenen Ereignissen und großen n und p.

Bildbeschreibung hier eingeben

B_Miner
quelle

Antworten:

7

Abgesehen von der Aufnahme der gleichen positiven Klassenbeispiele in jeden Beutel handelt es sich um S ^ 3Bagging, wie in beschrieben S ^ 3Bagging: Schnelle Klassifikatorinduktionsmethode mit Unterabtastung und Absacken beschrieben . (Ich habe dieses Papier nicht gründlich durchgesehen, sondern nur überflogen.)

Ich sehe theoretisch nichts Falsches an Ihrem Ansatz, obwohl ich viel häufiger Unterabtastung in Kombination mit Boosten als Absacken gesehen habe.

Dies mag Ihre Frage nicht genau beantworten, aber ein ausgezeichnetes Papier über verschiedene Arten des Umgangs mit unausgeglichenen Daten ist Lernen aus unausgeglichenen Daten . Es scheint, als wäre kostensensitives Lernen in Ihrem Fall angemessener. Da Sie Decision Forests verwenden, wäre Abschnitt 3.2.3 Kostensensitive Entscheidungsbäume wahrscheinlich hilfreich. Es sagt aus,

In Bezug auf Entscheidungsbäume kann die kostensensitive Anpassung drei Formen annehmen: Erstens können kostensensitive Anpassungen an der Entscheidungsschwelle vorgenommen werden; Zweitens können kostensensitive Überlegungen zu den Aufteilungskriterien an jedem Knoten angestellt werden. und schließlich können kostensensitive Beschneidungsschemata auf den Baum angewendet werden

Bei kostensensitiven Anpassungen des Entscheidungsschwellenwerts muss der Entscheidungsschwellenwert im Wesentlichen auf der Grundlage der Leistung des ROC oder der Precision-Recall-Kurve ausgewählt werden. Insbesondere die Leistung in der VR China ist robust gegenüber unausgeglichenen Daten.

Bei kostensensitiven Teilungskriterien müssen Sie Ihre Verunreinigungsfunktion ändern, um mit unausgeglichenen Daten umzugehen. Das oben erwähnte Papier besagt,

In [63] wurde gezeigt, dass drei spezifische Verunreinigungsfunktionen, Gini, Entropy und DKM, eine verbesserte Kostenunempfindlichkeit im Vergleich zur Genauigkeits- / Fehlerratenbasislinie aufweisen. Darüber hinaus haben diese empirischen Experimente auch gezeigt, dass die Verwendung der DKM-Funktion im Allgemeinen kleinere unbeschnittene Entscheidungsbäume erzeugt, die im schlimmsten Fall Genauigkeiten liefern, die mit Gini und Entropy vergleichbar sind. Eine detaillierte theoretische Grundlage zur Erläuterung der Schlussfolgerungen dieser empirischen Ergebnisse wurde später in [49] erstellt, in der die Auswirkungen des Wachstums von Entscheidungsbäumen für jede Wahl von Spuckkriterien verallgemeinert werden.

Was das Beschneiden betrifft,

Wenn jedoch unausgeglichene Daten vorliegen, werden durch Bereinigungsverfahren tendenziell Blätter entfernt, die das Minderheitenkonzept beschreiben. Es hat sich gezeigt, dass das Beschneiden von Bäumen, die durch unausgeglichene Daten hervorgerufen wurden, die Leistung beeinträchtigen kann, die Verwendung von nicht beschnittenen Bäumen in solchen Fällen jedoch nicht die Leistung verbessert [23]. Infolgedessen wurde darauf geachtet, die Klassenwahrscheinlichkeitsschätzung an jedem Knoten zu verbessern, um repräsentativere Entscheidungsbaumstrukturen zu entwickeln, so dass das Beschneiden mit positiven Effekten angewendet werden kann. Einige repräsentative Arbeiten umfassen die Laplace-Glättungsmethode der Wahrscheinlichkeitsschätzung und die Laplace-Schnitttechnik [49].

[23] N. Japkowicz und S. Stephen, "Das Klassenungleichgewichtsproblem: Eine systematische Studie", Intelligent Data Analysis, vol. 6, nein. 5, S. 429-449, 2002.

[49] C. Elkan, "Die Grundlagen des kostensensitiven Lernens", Proc. Int'l Joint Conf. Artificial Intelligence, S. 973–978, 2001.

[63] C. Drummond und RC Holte, „Ausnutzung der Kosten- (In-) Sensitivität von Kriterien zur Aufteilung von Entscheidungsbäumen“, Proc. Int'l Conf. Machine Learning, S. 239-246, 2000.

oscully
quelle
0

Das ist sehr interessant. Ich habe vor kurzem ein Projekt mit einer ähnlichen Situation, in der die Validierung seltener Ereignisse eine gute Leistung erbringt, während die Validierung von Nichtereignissen im niedrigsten vorhergesagten Bereich (z. B. 0,0 - 0,1) Monat für Monat instabil ist. Wie Sie bereits erwähnt haben, ist es aufgrund der großen Anzahl von Nicht-Ereignissen besser, mehr Stichproben in die Trainingssätze aufzunehmen, damit genügend Stichproben vorhanden sind, um verschiedene Kombinationen von Variablen abzudecken.

Kleine Sonne
quelle