[PYTHON] Logistische Rückgabe

In diesem Artikel werde ich die Grundidee der logistischen Regression und des praktischen Codes in Python vorstellen! Ich beabsichtige, das, was ich als Student studiert habe, auf sehr leicht verständliche Weise zusammenzufassen. Ich hoffe, dass jeder, vom Anfänger bis zu denen, die normalerweise Code schreiben, darauf verweisen kann.

Grundkonzept der logistischen Regression

Die logistische Regression ist eine Methode, die üblicherweise für die binäre Klassifizierung verwendet wird. Um die Idee der logistischen Regression zu erklären, betrachten Sie beispielsweise das berühmte Titanic-Beispiel.

logit

n Variablen $ (x_0, x_1, x_2 ,, x_n) $ (PassengerID im Titanic-Beispiel)

X =
\begin{bmatrix}
x_0 \\
x_1 \\
x_2 \\
\vdots \\
x_n \\
\end{bmatrix}
W =
\begin{bmatrix}
β_0 \\
β_1 \\
β_2 \\
\vdots \\
β_n \\
\end{bmatrix}

Wie

Z=β_0+β_1x_1+β_2x_2+...+β_nx_n …① \\
= w^{T}X

In diesem Fall drückt die logistische Regression die Wahrscheinlichkeit p wie folgt aus.

p=\frac{1}{1+e^{-(β_0+β_1x_1+β_2x_2+...+β_nx_n)}}
=\frac{1}{1+e^{-Z}} …②

Und für die erhaltenen p $ y = \begin{cases} 1 & x ≧ 0.5 \\\ 0 & x < 0.5 \end{cases} $

Der grundlegende Ablauf der logistischen Regression besteht darin, zu klassifizieren, ob p den Bereichswert (bestimmte Linie) überschreitet oder nicht.

(1) wird durch Gleichwerttransformation zur folgenden Formel.

\log\frac{p}{1-p}=β_0+β_1x_1+β_2x_2+...+β_nx_n

p=\frac{e^Z}{1+e^Z}\\
⇔e^Z=p(1+e^Z)\\
⇔e^Z=\frac{p}{1-p}\\
⇔\log\frac{p}{1-p}=Z=β_0+β_1x_1+β_2x_2+...+β_nx_n …③

Die linke Seite von ③, das heißt

\log\frac{p}{1-p}

Wird als "Log Odds" (oder "Logit") bezeichnet. Die logistische Regression ist mit anderen Worten ein gegebener Faktor

x_1,x_2,x_3,...x_n

Andererseits erfüllt der optimale Parameter, so dass die Zielvariable p die Gleichung (3) erfüllt.

β_1,β_2,β_3,...β_n

Es ist eine Berechnung zu finden.

Übrigens lautet die Formel (2) in der Grafik wie folgt. sigmoid Wie Sie in der Grafik sehen können, nimmt der Eingabewert $ Z $ $ -∞ ≤ Z ≤ ∞ $, während der Ausgabewert $ y $ $ 0 <y <1 $ nimmt.

Unterschied zur multiplen Regressionsanalyse

Im Gegensatz zur multiplen Regressionsanalyse, die grundsätzlich eine normale Analyse von Residuen voraussetzt, geht die logistische Regression zweckmäßigerweise nicht von einer Normalverteilung für die Fehlerverteilung aus.

Optimale Parameterschätzmethode nach der wahrscheinlichsten Methode

Wie finden Sie die optimalen Parameter? Der Berechnungsteil dieses Kapitels wird automatisch berechnet, wenn Sie LogisticRegression () in Python verwenden, aber wenn Sie es für die Analyse im tatsächlichen Geschäft verwenden: "Es ist passiert, als ich mithilfe der Bibliothek berechnet habe, so dass Wenn Sie sagen "Ich weiß nicht, wie es funktioniert", wird es eine Black Box sein.

Es gibt verschiedene Methoden zur Optimierung von Parametern, aber hier möchte ich die "Newton-Methode" vorstellen.

Schauen wir uns noch einmal die Formel (1) oben an.

p=\frac{1}{1+e^{-(β_0+β_1x_1+β_2x_2+...+β_nx_n)}}
=\frac{1}{1+e^{-Z}} …②

n Datensätze (p und $ x_0, x_1, ... x_n $)

Die logarithmische Wahrscheinlichkeitsfunktion ist

L(w)=log(\prod_{i = 0}^{n}p^Y(1-p)^{1-Y})\\\
⇔L(w)=Y\sum_{i=0}^{n}log{p}+(1-Y)\sum_{i=0}^{n}log{(1-p)}\\\
⇔L(w)=Y\sum_{i=0}^{n}log{\frac{1}{1+e^{-w^Tx}}}+(1-Y)\sum_{i=0}^{n}log{(1-\frac{1}{1+e^{-w^Tx}})}\\\

Sie können $ w $ finden, das dies maximiert. Dies ist gleichbedeutend mit der Minimierung von $ -L (w) $ (= $ E (w) $).

Wie können wir also den Parameter $ w $ finden, der $ E (w) $ minimiert? Hier wird zu Beginn vorläufig ein bestimmtes $ w ^ {(t)} $ gesetzt, und je nach Situation wird $ w ^ {(t + 1)} ← w ^ {(t)} - d ^ {(t)} Lassen Sie uns darüber nachdenken, wie Sie der optimalen Matrix näher kommen, indem Sie $ w $ wie $ aktualisieren. Wie finden Sie $ d ^ {(t)} $? Durch Taylor-Einsatz

E(w+d)∼E(w)+\frac{δE(w)}{δw}d^{(t)}+\frac{1}{2}\frac{δ^2E(w)}{δwδw}{d^{(t)}}^2 …④

Da es ausreicht, d ^ {(t)} zu finden, das dies minimiert, wird es teilweise durch $ d ^ {(t)} $ differenziert.

\frac{δE(w)}{δw}+\frac{δ^2E(w)}{δwδw}{d^{(t)}}=0 \\\
⇔{d^{(t)}}=\left(\frac{δ^2E(w)}{δwδw}\right)^{-1}\frac{δE(w)}{δw}
w^{(t+1)}←w^{(t)}-\left(\frac{δ^2E(w)}{δwδw}\right)^{-1}\frac{δE(w)}{δw} …⑤

Dies ist die Newton-Methode.

Hier,

\frac{δE(w)}{δp}=-\frac{δY\sum_{i=0}^{n}log{p}+(1-Y)\sum_{i=0}^{n}log{(1-p)}}{δp}\\\
=-\frac{Y}{p}+\frac{1-Y}{1-p} \\\
=\frac{p-Y}{p(1-p)}
\frac{δp}{δw}=\frac{δ}{δw}\frac{1}{1+e^{-w^Tx}} \\\
=\frac{δ}{δw}(1+e^{-w^Tx})^{-1} \\\
=\frac{xe^{-w^Tx}}{(1+e^{-w^Tx})^2} \\\
=\frac{xe^{-w^Tx}}{(1+e^{-w^Tx})^2} \\\
=px(1-p)

Deshalb,

\frac{δE(w)}{δw}=\frac{p-Y}{p(1-p)}px(1-p)=x(p-Y) …⑥

Auch die Differenzierung zweiter Ordnung von $ E (w) $ ist

\frac{δ^2E(w)}{δwδw}=\frac{δ}{δw}x\left(\frac{1}{1+e^{-w^Tx}}-Y\right) \\\
=px^2(1-p) …⑦

⑥ Ersetzen Sie ab ⑦ durch ⑤

w^{(t+1)}←w^{(t)}-\frac{1}{px^2(1-p)}x(p-Y) …⑧
L(w+d)∼L(w)+L'(w)h

Basierend auf dem Obigen werden die Parameter durch den folgenden Algorithmus optimiert.

  1. Definieren Sie den Anfangsparameter $ w ^ {(0)} $.
  2. Aktualisieren Sie die logarithmische Wahrscheinlichkeitsfunktion mit der oben beschriebenen Methode.
  3. Aktualisieren Sie den Parameter $ w $ gemäß ⑧.
  4. Beginnen Sie basierend auf dem aktualisierten $ w $ erneut mit der Aktualisierung der logarithmischen Wahrscheinlichkeitsfunktion.
  5. Beenden Sie die Aktualisierung, wenn sich die Aktualisierung der logarithmischen Wahrscheinlichkeitsfunktion nicht ändert. Zu diesem Zeitpunkt ist $ w $ der optimale Parameter.

Bisher habe ich die Newton-Methode erklärt. Da diese Newton-Methode eine doppelte Differenzierung verwendet, hat sie den Nachteil, dass der Rechenaufwand sehr groß ist, während die Konvergenzgeschwindigkeit hoch ist.

Implementierung in Python

logistic.py


from sklearn.linear_model import LogisticRegression
lr = LogisticRegression(C=10, solver : {‘newton-cg’})
lr.fit(X_train, y_train)

In Python können Sie die logistische Regression mit dem oben genannten einfachen Code mithilfe einer Bibliothek namens scicit-learn implementieren. Im obigen Code bastele ich an den Zahlen für zwei Parameter, C und Solver. Von diesen legt der Löser das Verfahren zum Finden der oben beschriebenen optimalen Parameter fest. Hier wird die oben erläuterte Newton-Methode verwendet. Als nächstes folgt die Erklärung von C. Dieses C wird als Regularisierung bezeichnet und ist im Allgemeinen der am meisten gesteuerte Parameter.

Was ist C (Regularisierung)?

Anwendungsbeispiel der logistischen Regression

Bisher habe ich die mathematische Idee der logistischen Regression und das Schreiben von einfachem Code in Python am Beispiel der Titanic erklärt, aber tatsächlich wird die logistische Regression auch in verschiedenen Bereichen der Sozialwissenschaften angewendet.

Im Bereich Rechnungswesen wird beispielsweise bei der Untersuchung des Insolvenzrisikos eines Unternehmens neben dem PL-Zahlenwert wie der Betriebsgewinnmarge das Vorhandensein oder Fehlen eines Hinweises in Bezug auf GC (Going Concern: Übernahme eines fortbestehenden Unternehmens) als ein Faktor zur logischen Rückgabe des Insolvenzrisikos herangezogen. Forschung wird durchgeführt, um in zu analysieren.

Recommended Posts

Logistische Rückgabe
Logistische Rückgabe
Was ist eine logistische Regressionsanalyse?
Algorithmus für maschinelles Lernen (logistische Regression)
Implementierung der logistischen Regression mit NumPy
Wenden Sie die Einflussfunktion auf die logistische Regression an
Lineare Regression
Was ist eine mehrjährige logistische Regressionsanalyse?
Logistische Regressionsanalyse Selbst erstellt mit Python
PRML Kapitel 4 Bayesianische logistische Regression Python-Implementierung
<Subjekt> Maschinelles Lernen Kapitel 3: Logistisches Regressionsmodell
[Kaggle für Super-Anfänger] Titanic (Logistic Return)
Ich habe versucht, Couseras logistische Regression in Python zu implementieren
Poisson-Regressionsanalyse
Grundlegendes zur logistischen Regression (1) _ Informationen zu Gewinnchancen und logistischer Transformation
Probieren Sie Theano mit Kaggles MNIST-Daten ~ Logistic Return ~ aus
Methode der Regressionsanalyse
Implementieren Sie mit stan ein zeitdiskretes logistisches Regressionsmodell
Implementierung der logistischen Regression mit Partikelgruppenoptimierungsmethode
Vorsichtsmaßnahmen bei der Durchführung einer logistischen Regression mit Statsmodels
Coursera-Herausforderungen beim maschinellen Lernen in Python: ex2 (Logistic Return)
Lineare multiple Regression, logistische Regression, mehrschichtiges Perzeptron, Auto-Encoder, Chainer Yo!
Lösen des Irisproblems mit scikit-learn ver1.0 (logistische Regression)