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:
- Passen Sie das logistische Standardregressionsmodell an
- Identifizieren Sie alle positiven Vorhersagen unter Verwendung des Vorhersageschwellenwerts von 0,5
- Weisen Sie Gewicht 1 für positiv vorhergesagte Beobachtungen und 0 für alle anderen zu
- 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:
- Daten in Training / Test aufteilen
- Passen Sie das Modell an das Training an, machen Sie Vorhersagen im Testsatz und berechnen Sie den Unterschied zwischen wahr / falsch-positiv
- 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?
quelle
Antworten:
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 seinY.ich
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 .X.ich β X.ichβ> 0 ich X.ichβ> 0 1X.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 = 1ich Y.ich= 1 1X.ichβ> 0= 1 ich Y.ich= 0 1X.ichβ> 0= 1 β
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:
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.
quelle
Bei diesem Ansatz sind mehrere Dinge falsch, darunter:
quelle
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
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.
quelle