Ich kann eine logistische Regression in der R
Verwendung trainieren
glm(y ~ x, family=binomial(logit)))
IIUC optimiert dies jedoch für die Protokollwahrscheinlichkeit.
Gibt es eine Möglichkeit, das Modell mit der linearen ( ) Verlustfunktion zu trainieren (die in diesem Fall der gesamten Variationsentfernung entspricht )?
Das heißt, wenn ein numerischer Vektor und ein Bit (logischer) Vektor , möchte ich eine monotone (tatsächlich ansteigende) Funktion so konstruieren, dasswird minimiert.
Siehe auch
Antworten:
Was Sie tun möchten, existiert nicht, weil es mangels eines besseren Wortes mathematisch fehlerhaft ist.
Aber zuerst möchte ich betonen, warum ich die Prämissen Ihrer Frage für richtig halte. Ich werde dann versuchen zu erklären, warum ich denke, dass die Schlussfolgerungen, die Sie daraus ziehen, auf einem Missverständnis des logistischen Modells beruhen, und schließlich werde ich einen alternativen Ansatz vorschlagen.
Ich werde Ihre Beobachtungen (die kühneren Buchstaben bezeichnen Vektoren) bezeichnen, die im dimensionalen Raum liegen (der erste Eintrag von ist 1) mit , und ist eine monotone Funktion von , etwa wie die logistische Kurve Ideen zu fixieren. Aus Gründen der Zweckmäßigkeit gehe ich nur davon aus, dass im Vergleich zu ausreichend groß ist . np x{(xxi,yi)}ni=1 n p p<n y i ∈[0,1]f( xxxi p<n yi∈[0,1] xf(xxi)=f(xx′iββ) n pxx′iββ n p
Sie haben Recht, wenn Sie TVD als Kriterium zur Bewertung des angepassten Modells verwenden möchten , ist es vernünftig zu erwarten, dass Ihre Anpassung dasselbe Kriterium unter allen möglichen Kandidaten für Ihre Daten optimiert. Daher
Das Problem ist der Fehlerterm : und wenn wir erzwingen (wir wollen einfach, dass unser Modell asymptotisch unvoreingenommen ist ), dann muss sein heteroskedastischen . Dies liegt daran nur zwei Werte annehmen kann, 0 und 1. Daher gegeben , können auch nur zwei Werte annehmen: , wenn , tritt mit der Wahrscheinlichkeit und wennϵi=yi−f(xx′iββ) E(ϵϵ)=0 ϵi yi xxi ϵi 1−f(xx′iββ) yi=1 f(xx′iββ) −f(xx′iββ) yi=1 , die mit der Wahrscheinlichkeit .1−f(xx′iββ)
Diese Überlegungen zusammen implizieren Folgendes:
daher ist nicht konstant, sondern konkav und wird maximiert, wenn ist, dass .var(ϵϵ) xx E(y|xx)≈.5
Diese inhärente Heteroskedastizität der Residuen hat Konsequenzen . Dies impliziert unter anderem, dass Sie bei der Minimierung der Verlustfunktion einen Teil Ihrer Stichprobe asymptotisch übergewichten. Das heißt, das angepasste passt überhaupt nicht zu den Daten, sondern nur zu dem Teil davon, der um Orte gruppiert ist, an denen ist, dass . Dies sind die am wenigsten informativen Datenpunkte in Ihrer Stichprobe : Sie entsprechen den Beobachtungen, für die die Rauschkomponente am größten ist. Daher wird Ihre Anpassung in Richtung , z. B. irrelevant gemacht.l1 ββ∗ xx E(yy|xx)≈.5 ββ∗=ββ:f(xx′ββ)≈.5
Eine Lösung, wie aus der obigen Darstellung hervorgeht, besteht darin, das Erfordernis der Unparteilichkeit fallen zu lassen. Eine beliebte Methode, den Schätzer zu beeinflussen (mit einigen Bayes'schen Interpretationen), ist das Einfügen eines Schrumpfungsbegriffs. Wenn wir die Antwort neu skalieren:
und ersetzen Sie aus durch eine andere monotone Funktion --Es wird bequem sein , für die Fortsetzung der erste Komponente des Vektors der Parameter zu bezeichnen und die restlichen Einsen - und umfasst einen Schrumpfungs Term (zum Beispiel eine der Form ) wird das resultierende Optimierungsproblem:f(xx′ββ) g(xx,[c,γγ])=xx′[c,γγ] c p−1 γγ ||γγ||2
Beachten Sie, dass bei diesem neuen (ebenfalls konvexen) Optimierungsproblem die Strafe für korrekt klassifizierte Beobachtungen 0 ist und linear mit für eine klassifizierte Beobachtung wächst - wie in Verlust. Die Lösung für dieses zweite Optimierungsproblem sind die berühmten linearen svm-Koeffizienten (mit perfekter Trennung). Im Gegensatz zu ist es sinnvoll, diese aus den Daten mit einer TVD-Strafe zu lernen ('Typ' wegen des Bias-Terms). . Folglich ist diese Lösung weit verbreitet. Siehe zum Beispiel das R-Paket LiblineaR .xx′[[c,γ] l1 [c∗,γγ∗] ββ∗ [c∗,γγ∗]
quelle
Ich bin mir nicht sicher, warum Sie den L1-Verlust für etwas verwenden möchten, das zwischen 0 und 1 liegt. Je nachdem, was Ihr Ziel ist, möchten Sie möglicherweise stattdessen einen Scharnierverlust in Betracht ziehen, der dem L1-Verlust in eine Richtung und flach ähnelt in dem anderen.
In jedem Fall sollte der folgende Code das tun, wonach Sie gefragt haben. Beachten Sie, dass die optimale Antwort im Grunde eine Schrittfunktion ist.
quelle
Sie können das glmnet-Paket für die Montage von L1- und L2-Modellen verwenden. Es ist nicht auf logistische Regression beschränkt, sondern schließt sie ein.
Hier ist die Vignette: http://web.stanford.edu/~hastie/glmnet/glmnet_alpha.html
Es gibt auch ein Webminar: https://www.youtube.com/watch?v=BU2gjoLPfDc
Liblinear ist gut, aber ich habe festgestellt, dass glmnet einfacher zu starten ist. Glmnet enthält eine Funktion, die eine Kreuzvalidierung durchführt und einen Regularisierungsparameter für Sie auswählt, der auf verschiedenen Metriken wie der AUC basiert.
In Bezug auf die Theorie würde ich das Tibshiarini-Papier über Lasso (L1-Regularisierung) und das Kapitel über Elemente des statistischen Lernens lesen. http://statweb.stanford.edu/~tibs/lasso/lasso.pdf
Über den Protokollverlust geht es nur um die Bewertung von Modellen. Es ist keine Verlustfunktion für die Modellanpassung.
quelle