Stichprobe für unausgeglichene Daten in der Regression

22

Es gab gute Fragen zum Umgang mit unausgeglichenen Daten im Klassifizierungskontext , aber ich frage mich, was die Leute tun, um eine Stichprobe für eine Regression zu erstellen.

Angenommen, die Problemdomäne reagiert sehr empfindlich auf das Vorzeichen, aber nur etwas empfindlich auf die Größe des Ziels. Die Größe ist jedoch so wichtig, dass das Modell eine Regression (kontinuierliches Ziel) und keine Klassifikation (positive oder negative Klassen) sein sollte. Und sagen Sie in diesem Problembereich, dass jeder Trainingsdatensatz 10x mehr negative als positive Ziele hat.

In diesem Szenario könnte ich die Beispiele für positive Ziele überbemustern, um die Anzahl der Beispiele für negative Ziele abzugleichen, und dann ein Modell trainieren, um die beiden Fälle zu unterscheiden. Offensichtlich ist der Trainingsansatz bei unausgeglichenen Daten schlecht, also muss ich eine Art Stichprobe machen. Was wäre ein vernünftiger Weg, um dieses Oversampling bei Vorhersagen rückgängig zu machen? Vielleicht mit dem (negativen) Mittelwert oder dem Median des Ziels der natürlichen Trainingsdaten übersetzen?

Someben
quelle

Antworten:

15

Ungleichgewicht ist nicht unbedingt ein Problem, aber wie Sie dorthin gelangen, kann es sein. Es ist nicht sinnvoll, Ihre Stichprobenstrategie auf die Zielvariable abzustützen. Da diese Variable die Zufälligkeit in Ihr Regressionsmodell einbezieht, werden Sie große Probleme haben, irgendeine Art von Inferenz zu erstellen, wenn Sie darauf aufbauen. Ich bezweifle, dass es möglich ist, diese Probleme "rückgängig zu machen".

Sie können basierend auf den Prädiktorvariablen zu Recht eine Über- oder Untererhebung durchführen . In diesem Fall, vorausgesetzt, Sie überprüfen sorgfältig, ob die Modellannahmen gültig scheinen (z. B. Homoskedastizität, die in dieser Situation als wichtig erachtet wird, wenn Sie eine "normale" Regression mit den üblichen Annahmen haben), glaube ich, dass Sie dies nicht tun müssen machen Sie das Oversampling bei der Vorhersage rückgängig. Ihr Fall ähnelt nun einem Analysten, der ein Experiment explizit so entworfen hat, dass die Prädiktorvariablen einen ausgeglichenen Bereich aufweisen.

Bearbeiten - Hinzufügen - Erweitern, warum es schlecht ist, anhand von Y zu sampeln

Beim Anpassen des Standardregressionsmodells wird erwartet, dass das normal verteilt ist, einen Mittelwert von Null hat und unabhängig und identisch verteilt ist. Wenn Sie Ihre Stichprobe auf der Grundlage des Werts von y (der sowohl einen Beitrag von als auch von ) auswählen, hat das e keinen Mittelwert mehr von Null oder ist identisch verteilt. Beispielsweise ist es weniger wahrscheinlich, dass niedrige Werte von y ausgewählt werden, die sehr niedrige Werte von e enthalten können. Dies ruiniert jegliche Schlussfolgerung, die auf den üblichen Mitteln zur Anpassung solcher Modelle beruht. Korrekturen können ähnlich wie in der Ökonometrie für die Anpassung abgeschnittener Modelle vorgenommen werden, sind jedoch schmerzhaft und erfordern zusätzliche Annahmen und sollten nur angewendet werden, wenn es keine Alternative gibt.y=Xb+eeeXb

Betrachten Sie die extreme Abbildung unten. Wenn Sie Ihre Daten auf einen beliebigen Wert für die Antwortvariable kürzen, führen Sie sehr signifikante Verzerrungen ein. Wenn Sie es für eine erklärende Variable abschneiden, gibt es nicht unbedingt ein Problem. Sie sehen, dass die grüne Linie, basierend auf einer Teilmenge, die aufgrund ihrer Prädiktorwerte ausgewählt wurde, sehr nahe an der tatsächlichen angepassten Linie liegt. Dies kann nicht von der blauen Linie gesagt werden, die nur auf den blauen Punkten basiert.

Dies erstreckt sich auf den weniger schwerwiegenden Fall von Unter- oder Überabtastung (da das Abschneiden als Unterabtastung betrachtet werden kann, die auf ihr logisches Extrem gebracht wird).

Bildbeschreibung hier eingeben

# generate data
x <- rnorm(100)
y <- 3 + 2*x + rnorm(100)

# demonstrate
plot(x,y, bty="l")
abline(v=0, col="grey70")
abline(h=4, col="grey70")
abline(3,2, col=1)
abline(lm(y~x), col=2)
abline(lm(y[x>0] ~ x[x>0]), col=3)
abline(lm(y[y>4] ~ x[y>4]), col=4)
points(x[y>4], y[y>4], pch=19, col=4)
points(x[x>0], y[x>0], pch=1, cex=1.5, col=3)
legend(-2.5,8, legend=c("True line", "Fitted - all data", "Fitted - subset based on x",
    "Fitted - subset based on y"), lty=1, col=1:4, bty="n")
Peter Ellis
quelle
Danke für die Antwort, Peter. Würden Sie bitte näher erläutern, was Sie unter "Weil diese Variable die Zufälligkeit in Ihr Regressionsmodell einbezieht" verstehen? Das Ziel ist ein in der Umgebung beobachtbares Ziel. Meinst du also einen Messfehler?
Someben
1
Hier ist ein Artikel eines NYU-Profis namens Foster Provost zu diesem Thema: pages.stern.nyu.edu/~fprovost/Papers/skew.PDF In meinem Fall mache ich eine Regression mit unausgeglichenen Daten und nicht mit Klassifizierung. Daher meine Frage.
Someben
1
@someben - Ich habe ein Beispiel ausgearbeitet und hinzugefügt. In der Regressionsliteratur ist gut beschrieben, dass Sie anhand der abhängigen Variablen keine Stichprobe erstellen können. Dies sollte auch für andere Modelle gelten. Eine Probe, die "unsymmetrisch" ist, ist etwas anderes und kein Problem. es sei denn, Sie haben es absichtlich durch eine ungerechtfertigte Stichprobenstrategie erstellt. Es ist nicht das Gleichgewicht oder das Fehlen davon, das das Problem ist, sondern wie Sie Ihre Daten erhalten.
Peter Ellis
2
@someben, nein ich glaube nicht, dass es einen Unterschied macht. Das Problem ist grundlegender.
Peter Ellis
1
Nettes Beispiel! Ihre Grafik erinnert mich an einen Artikel von Richard Berk (1983) über die Stichprobenauswahl . Zu beachten ist auch, dass Sie diese Probleme "rückgängig machen" können, wenn Sie den Auswahlmechanismus für Stichproben genau kennen und eine Reihe ökonometrischer Modelle um diesen Begriff herum erstellt wurden (z. B. das Tobit-Modell oder die Arbeit von James Heckman).
Andy W
2

Es ist eine Frage, ob Sie eine Kausalanalyse oder eine Vorhersage durchführen. Lesen Sie http://m.statisticalhorizons.com/?ref=http%3A%2F%2Ft.co%2F54MWZrVAyX&url=http%3A%2F%2Fstatisticalhorizons.com%2Fprediction-vs-causation-in-regression-analysis&width=640

Das erneute Abtasten der Zielvariablen für das Training zum Zwecke der Vorhersage funktioniert so lange, wie ein Test an einer nicht erneut abgetasteten Halteprobe durchgeführt wird. Die endgültige Leistungsübersicht muss ausschließlich auf dem Hold-out basieren. Für eine möglichst genaue Bestimmung der Vorhersagbarkeit des Modells sollten Kreuzvalidierungstechniken eingesetzt werden.

Sie "rückgängig machen" durch die endgültige Analyse des Regressionsmodells und des unausgeglichenen Datensatzes.

Chris
quelle
2

Dies ist kein Versuch, eine praktische Lösung für Ihr Problem zu finden, aber ich habe mich ein wenig mit dem Umgang mit unausgeglichenen Datensätzen bei Regressionsproblemen befasst und wollte meine Ergebnisse mitteilen:

jhin
quelle
1

Zuallererst ist die 1:10-Ration überhaupt nicht schlecht. Es gibt einfache Möglichkeiten, Sampling-

1) Für das Klassifizierungsproblem: Wenn Sie eine negative Klasse mit 10 unterabgetastet haben, ist die resultierende Wahrscheinlichkeit 10-mal höher als sie sein sollte. Sie können die resultierende Wahrscheinlichkeit einfach durch 10 dividieren.

2) Facebook nimmt auch Teilstichproben vor (zur Vorhersage von Klicks in der logistischen Regression) und führt eine negative Abwärtsstichprobe durch. Neukalibrierung erfolgt durch einfache Formel p / (p + (1-p) / w); wobei p die Vorhersage bei der Abwärtsabtastung ist, ist nw die negative Abwärtsabtastrate.

Arpit Sisodia
quelle
Ich denke nicht, dass es so einfach ist, Arpit. Viele nichtlineare Algos sehen nicht genügend Instanzen von unterabgetasteten Klassen und neigen zu überabgetasteten Klassen, und aufgrund ihrer Nichtlinearität haben Sie keine Möglichkeit, dies zu beheben.
Anatoly Alekseev
1

Ich denke, was Ihnen bei Ihrem Problem helfen könnte, ist die Synthetic Minority Over-Sampling-Technik zur Regression (SMOTER). Zu diesem Thema gibt es einige Untersuchungen. Es bleibt jedoch weniger erforscht als sein Klassifizierungsgegenstück, wie Sie wahrscheinlich angetroffen haben.

Je nachdem, wie sehr Sie daran interessiert sind , das unten zitierte Papier (und die Konferenz, die es unter http://proceedings.mlr.press/v74/ hielt ) aus Forschungssicht zu verstehen, kann ich Ihnen vorschlagen, dieses Papier zu verwenden . Ich habe die Einführung des Gaußschen Rauschens bei der Erzeugung der synthetischen Beobachtungen sehr geschätzt.

Wenn Sie mehr an einer praktischen Lösung interessiert sind, hat die erste Autorin eine R-Implementierung auf ihrer Github-Seite. https://github.com/paobranco/SMOGN-LIDTA17

Wenn Sie mehr von Python überzeugen möchten, habe ich kürzlich eine vollständig pythonische Implementierung des SMOGN-Algorithmus verteilt, der jetzt verfügbar ist und derzeit im Unit-Test ist. https://github.com/nickkunz/smogn

Ich hoffe das hat geholfen!

Branco, P., Torgo, L., Ribeiro, R. (2017). "SMOGN: Ein Vorverarbeitungsansatz für unausgeglichene Regression". Proceedings of Machine Learning Research, 74: 36-50. http://proceedings.mlr.press/v74/branco17a/branco17a.pdf .

Nick Kunz
quelle