Logistische Regression: Maximierung von True Positives - False Positives

9

Ich habe ein logistisches Regressionsmodell (Anpassung über glmnet in R mit elastischer Netzregulierung) und möchte den Unterschied zwischen echten und falschen Positiven maximieren. Zu diesem Zweck wurde das folgende Verfahren in den Sinn gebracht:

  1. Passen Sie das logistische Standardregressionsmodell an
  2. Identifizieren Sie alle positiven Vorhersagen unter Verwendung des Vorhersageschwellenwerts von 0,5
  3. Weisen Sie Gewicht 1 für positiv vorhergesagte Beobachtungen und 0 für alle anderen zu
  4. Fit gewichtetes logistisches Regressionsmodell

Was wären die Mängel bei diesem Ansatz? Was wäre der richtige Weg, um mit diesem Problem fortzufahren?

Der Grund für den Wunsch, den Unterschied zwischen der Anzahl der echten und falschen Negative zu maximieren, liegt im Design meiner Anwendung. Im Rahmen eines Klassenprojekts baue ich einen autonomen Teilnehmer auf einem Online-Marktplatz auf. Wenn mein Modell vorhersagt, dass es etwas kaufen und später zu einem höheren Preis verkaufen kann, gibt es ein Gebot ab. Ich möchte mich an die logistische Regression halten und binäre Ergebnisse (Gewinn, Verlust) basierend auf Fixkosten und Stückpreisinkrementen ausgeben (ich gewinne oder verliere bei jeder Transaktion den gleichen Betrag). Ein falsches Positiv tut mir weh, weil es bedeutet, dass ich etwas kaufe und es nicht zu einem höheren Preis verkaufen kann. Ein falsches Negativ tut mir jedoch nicht weh (nur in Bezug auf die Opportunitätskosten), weil es nur bedeutet, wenn ich nicht gekauft hätte, aber wenn ich es getan hätte, hätte ich Geld verdient. Ähnlich,

Ich stimme zu, dass der Grenzwert von 0,5 völlig willkürlich ist, und wenn ich das Modell ab Schritt 1 auf die Vorhersageschwelle optimiert habe, die den höchsten Unterschied zwischen wahr / falsch-positiv ergibt, stellt sich heraus, dass es näher bei 0,4 liegt. Ich denke, das liegt an der Verzerrung meiner Daten - das Verhältnis zwischen Negativen und Positiven beträgt ungefähr 1: 3.

Im Moment folge ich den folgenden Schritten:

  1. Daten in Training / Test aufteilen
  2. Passen Sie das Modell an das Training an, machen Sie Vorhersagen im Testsatz und berechnen Sie den Unterschied zwischen wahr / falsch-positiv
  3. Passen Sie das Modell vollständig an, machen Sie Vorhersagen im Testsatz und berechnen Sie den Unterschied zwischen wahr / falsch-positiv

Der Unterschied zwischen wahr / falsch-positiven Ergebnissen ist in Schritt 3 kleiner als in Schritt 2, obwohl der Trainingssatz eine Teilmenge des vollständigen Satzes ist. Da es mir egal ist, ob das Modell in # 3 mehr echte Negative und weniger falsche Negative hat, kann ich irgendetwas tun, ohne die Wahrscheinlichkeitsfunktion selbst zu ändern?

tmakino
quelle
Bevor Sie fragen, was die Fehler bei diesem Ansatz sind, sollten Sie Ihrer Meinung nach schreiben, warum dieser Ansatz funktionieren sollte. Warum denken Sie, dass die Schritte 2 bis 4 das Ergebnis verbessern?
user31264
Habe ich auch Recht, dass Sie am Ende das Modell aus Schritt 1 löschen und nur das Modell aus Schritt 4 verwenden?
user31264
Ja, ich hatte vor, das Modell zu verwenden, das mit dem gesamten Datensatz ausgestattet ist, aber es ist nicht sinnvoll, dies zu tun, da das mit dem Trainingssatz ausgestattete Modell unterdurchschnittlich ist.
Tmakino
2
Ich habe momentan keine Quelle dazu ... aber wissen Sie, dass Sie ein logistisches Regressionsmodell optimieren können, um die Fläche unter der Kurve (Receiver Operating Characteristic) (oder AUC) zu maximieren? Das Rad muss nicht neu erfunden werden.
AdamO
2
Was ich hier nicht ganz verstehe, ist, warum Sie weder etwas über den vorhergesagten zukünftigen Preis in Ihr Modell aufgenommen haben, noch die Höhe des Gewinns / Verlusts in die Optimierung einbezogen haben. Sicherlich ist eine Entscheidung zum "Kaufen", die zu einem Verlust von 99% führt, viel schlimmer als eine Entscheidung zum "Kaufen", die zu einem Verlust von 1% führt, obwohl beide falsch positiv sind.
Wahrscheinlichkeitslogik

Antworten:

24

Sie scheinen überhaupt keine logistische Regression zu wollen. Was Sie sagen, ist: "Ich möchte den Unterschied zwischen echten und falschen positiven Ergebnissen maximieren." Das ist eine gute Zielfunktion, aber keine logistische Regression. Mal sehen, was es ist.

Zunächst eine Notation. Die abhängige Variable wird : Y i seinYi

Yi={1Purchase i was profitable0Purchase i was un-profitable

Die unabhängigen Variablen (die Dinge, mit denen Sie versuchen, vorherzusagen, ob Sie kaufen sollten) sind (ein Vektor). Der Parameter, den Sie schätzen möchten, ist β (ein Vektor). Sie werden den Kauf vorhersagen, wenn X i β > 0 ist . Für die Beobachtung i sagen Sie den Kauf voraus, wenn X i β > 0 ist oder wenn die Indikatorfunktion 1 X i β > 0 = 1 ist .XiβX.ichβ>0ichX.ichβ>01X.ichβ>0=1

Ein wahres Positiv tritt bei Beobachtung wenn sowohl als auch . Ein falsches Positiv bei Beobachtung , wenn und . Sie möchten das β finden, das wahre Positive minus falsche Positive maximiert, oder: m a x βY i = 1 1 X i β > 0 = 1 i Y i = 0 1 X i β > 0 = 1ichY.ich=11X.ichβ>0=1ichY.ich=01X.ichβ>0=1β

meinxβich=1N.Y.ich1X.ichβ>0- -ich=1N.(1- -Y.ich)1X.ichβ>0

Dies ist keine besonders bekannte Zielfunktion für die Schätzung eines diskreten Antwortmodells, aber nehmen Sie mich mit, während ich ein wenig Algebra über die Zielfunktion mache:

ich=1N.Y.ich1X.ichβ>0- -ich=1N.(1- -Y.ich)1X.ichβ>0=ich=1N.Y.ich1X.ichβ>0- -ich=1N.1X.ichβ>0+ich=1N.Y.ich1X.ichβ>0=ich=1N.Y.ich1X.ichβ>0- -ich=1N.1X.ichβ>0+ich=1N.Y.ich1X.ichβ>0+ich=1N.1- -ich=1N.1+ich=1N.Y.ich- -ich=1N.Y.ich=ich=1N.Y.ich1X.ichβ>0+ich=1N.(1- -Y.ich)(1- -1X.ichβ>0)- -ich=1N.1+ich=1N.Y.ich

β

meinxβich=1N.Y.ich1X.ichβ>0+ich=1N.(1- -Y.ich)(1- -1X.ichβ>0)

Dieser Schätzer hat einen Namen! Es wird als Maximum-Score-Schätzer bezeichnet. Es ist eine sehr intuitive Möglichkeit, den Parameter eines diskreten Antwortmodells abzuschätzen. Der Parameter wird so gewählt, dass die Anzahl der korrekten Vorhersagen maximiert wird. Der erste Term ist die Anzahl der echten Positiven und der zweite Term ist die Anzahl der echten Negative.

βββN.N.Konvergenz. (Kim und Pollard, 1990, Ann of Stat) Schließlich können Sie Bootstrapping nicht verwenden, um Rückschlüsse darauf zu ziehen. (Abrevaya & Huang, 2005, Econometrica) Es gibt jedoch einige Artikel, in denen dieser Schätzer verwendet wird. Es macht Spaß, die Ergebnisse des NCAA-Basketballturniers von Caudill, International Journal of Forecasting, April 2003, Version 19, Ausgabe, vorherzusagen. 2, S. 313-17.

N.

Rechnung
quelle
βT.x>0p>0,5p<=0,5βT.x
Tmakino
(Fortsetzung) durch Definieren in der Kostenfunktion (und Festlegen des Vorhersageschwellenwerts auf 0,5), wodurch der von mir unternommene Zwischenschritt übersprungen wird. Die AUC ist jedoch bereits in dem von mir verwendeten Regressionspaket (glmnet) vorhanden, während der Esimator mit maximaler Punktzahl dies nicht tut. Halten Sie meinen Ansatz angesichts meines Ziels für angemessen?
Tmakino
1
pX.ichβ>0β
15

Bei diesem Ansatz sind mehrere Dinge falsch, darunter:

  • Ich suche einen Cutoff für eine kontinuierliche Wahrscheinlichkeit
  • Verwenden eines beliebigen Grenzwerts von 0,5
  • Angenommen, die Kosten für ein "falsch positives" und ein "falsch negatives" sind für alle Probanden gleich
  • Verwenden von Gewichten, die nicht gebrochen sind
  • Verwenden von Gewichten, die geschätzt werden
  • Überschreiben der Maximum-Likelihood-Schätzung
  • Keine optimale Bayes-Entscheidungstheorie, die vorschreibt, dass optimale Entscheidungen auf vollständigen Informationen (nicht darauf, ob etwas etwas anderes übersteigt) und Nutzen- / Verlust- / Kostenfunktionen basieren
Frank Harrell
quelle
1
Vielen Dank, gibt es eine Möglichkeit, dies zu erreichen, während Sie sich an die logistische Regression halten (dh ohne die Wahrscheinlichkeitsfunktion zu berühren)?
Tmakino
Es kommt darauf an, was "das" ist. Was ist das ultimative Ziel und wie wird das Modell verwendet?
Frank Harrell
Ich habe meine Frage bearbeitet, um detailliert zu beschreiben, was ich erreichen möchte.
Tmakino
1
Wenn mir nichts fehlt, würde nichts, was Sie hinzugefügt haben, die Verwendung eines Schnittpunkts bedeuten. Beachten Sie, dass eine vorhergesagte Wahrscheinlichkeit eine eigene Fehlerrate liefert.
Frank Harrell
8

Der beste Ansatz, um das zu erreichen, was Sie beschreiben möchten, besteht wahrscheinlich darin, die logistischen Regressionsparameter direkt mit einer AUC-Verlustfunktion zu optimieren. Das Lehrbuch "Statistische Methoden in der diagnostischen Medizin" von Zhou beschreibt diese Methode.

Die AUC (Fläche unter der Betriebskennlinie des Empfängers - oder ROC) wird grob als die Wahrscheinlichkeit interpretiert, dass ein zufällig abgetasteter "Fall" einen höheren Markierungswert als eine "Kontrolle" hat. Dies ist ein Maß für die Modelldiskriminierung oder die Fähigkeit, das Ergebnis korrekt zu klassifizieren. Der ROC ist eine Kurve in der Einheitsebene, die die Sensitivität gegenüber der 1-Spezifität für alle möglichen Markerwerte (angepasste Ergebnisse) in einem Regressionsmodell zeigt.

Unter Verwendung der traditionellen Formulierung des logistischen Regressionsmodells

logit Pr(Y.=1|X.)=α+βX.

Mit Log Odds Ratios für Modellparameter können Sie eine AUC-basierte Verlustfunktion grob definieren, um optimale Parameter zu erhalten. Im Gegensatz zur wahrscheinlichkeitsbasierten logistischen Regression ist die AUC-Regression nicht regelmäßig und kann im Parameterraum zu lokalen Maxima konvergieren.

AdamO
quelle
1
Ich hätte gedacht, dass AUC hier nicht am besten ist, weil es einen kleinen Verlust für falsches Negativ gibt, aber einen großen Verlust für falsches Positiv.
Wahrscheinlichkeitslogik
Nun, das eigentliche Problem ist, dass OP ein kontinuierliches Ergebnis (ROI) hat und es als Verlust / Gewinn dichotomisiert. Aber das Aufteilen von Haaren, wobei die ROC-Regression im Allgemeinen "dumme" Marker-Cut-Off-Regionen tatsächlich für die AUC zählen. Sie können die partielle AUC verwenden, wenn Sie vorgeben, was als aussagekräftig gegenüber dummen Markerwerten gilt, und die partielle AUC-Regression dieselben Leistungsfähigkeiten (und Probleme) aufweist.
AdamO