Bei der Arbeit verwende ich häufig die logistische Regression, aber es fällt mir oft schwer, zu den gewünschten Informationen zu gelangen, wenn ich ein wenig Bedenken habe. Daher möchte ich die logistische Regression als mein eigenes Memo zusammenfassen.
Logistische Regression scheint im medizinischen Bereich häufig eingesetzt zu werden. Natürlich wird es aufgrund seiner hohen Interpretierbarkeit, Einfachheit des Modells und hohen Genauigkeit häufig in anderen Bereichen eingesetzt.
Betrachten Sie nun das Problem der Vorhersage, ob der Eingabevektor $ x $ den beiden Klassen $ C_0 oder C_1 $ zugeordnet wird.
Sei $ y ∈ \ {0,1 \} $ die Zielvariable (Ausgabe) und $ x ∈ R ^ d $ die erklärende Variable (Eingabe). Hier ist $ y = 0 $, wenn es $ C_0 $ zugewiesen ist, und $ y = 1 $, wenn es $ C_1 $ zugewiesen ist.
python
import matplotlib.pyplot as plt
x = [1.3, 2.5, 3.1, 4, 5.8, 6, 7.5, 8.4, 9.9, 10, 11.1, 12.2, 13.8, 14.4, 15.6, 16, 17.7, 18.1, 19.5, 20]
y = [0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1]
plt.scatter(x, y)
plt.xlabel("x")
plt.ylabel("y")
plt.show
Ich denke, der einfachste Ansatz für das Klassifizierungsproblem ist die lineare Diskriminierung.
Im linearen Modell ist die Ausgabe $ y $ in Bezug auf die Eingabe $ x $ ($ y (x) = \ beta_0 + \ beta_1 x $) linear, und $ y $ ist ein reeller Wert. Hier ist ein weiterer Schritt zur Anpassung an das Klassifizierungsproblem.
Beispielsweise können Sie eine lineare Funktion mit der nichtlinearen Funktion $ f (・) $ transformieren.
y(x) = f(\beta_0 + \beta_1 x)
In diesem Fall kann beispielsweise die folgende Aktivierungsfunktion in Betracht gezogen werden.
f(z) = \left\{
\begin{array}{ll}
1 & (z \geq 0.5) \\
0 & (z \lt 0.5)
\end{array}
\right.
Nun, dieses Mal werden wir mit dieser Aktivierungsfunktion eine Vorhersage treffen. Zuerst werden wir das lineare Modell trainieren. Wir werden die Methode der kleinsten Quadrate verwenden, um die Parameter zu schätzen.
Abgesehen davon wird dieses Buch als Ausgangspunkt für den Start des maschinellen Lernens dringend empfohlen. Es beginnt mit dem Minimum an Mathematik, um maschinelles Lernen zu lernen. Diese Art von Buch ist etwas unbekannt. Es ist ein ziemlich gutes Buch. Außerdem ist der Code sehr einfach zu lesen. Ich denke, dass ich die Bibliothek in der Praxis nutzen werde, aber ich denke, dass es das Beste ist, wenn man für das Lernen von Grund auf neu schreibt.
Der Originalcode wird auf der Support-Seite veröffentlicht.
import matplotlib.pyplot as plt
import numpy as np
def reg(x,y):
n = len(x)
a = ((np.dot(x,y) - y.sum() * x.sum() / n) /
((x**2).sum() - x.sum()**2 / n))
b = (y.sum() - a * x.sum()) / n
return a,b
x = np.array(x)
y = np.array(y)
a, b = reg(x,y)
print('y =', b,'+', a, 'x')
fig = plt.scatter(x, y)
xmax = x.max()
plt.plot([0, xmax], [b, a * xmax + b])
plt.axhline(0.5, ls = "--", color = "r")
plt.axhline(0, linewidth = 1, ls = "--", color = "black")
plt.axhline(1, linewidth = 1, ls = "--", color = "black")
plt.xlabel("x")
plt.ylabel("y")
plt.show
Das geschätzte Modell ist
ist geworden.
In Anbetracht der Konvertierung durch die zuvor definierte Aktivierungsfunktion scheint die Grenzlinie ungefähr $ x = 10 $ zu sein.
Nun gibt es einige Probleme mit dieser Methode. Die Methode der kleinsten Quadrate entspricht der wahrscheinlichsten Methode, wenn für die bedingte Wahrscheinlichkeitsverteilung eine Normalverteilung angenommen wird.
Andererseits verursacht ein binärer objektiver Variablenvektor wie dieser verschiedene Probleme, da er eindeutig weit von der Normalverteilung entfernt ist. Einzelheiten finden Sie unter "Mustererkennung und maschinelles Lernen (Bischof)", jedoch hauptsächlich
-Die Approximationsgenauigkeit des Klassen-Posterior-Wahrscheinlichkeitsvektors ist schlecht. -Die Flexibilität des linearen Modells ist gering. ⇒Der Wert der Wahrscheinlichkeit überschreitet aufgrund dieser beiden Werte $ [0,1] $.
・ Bestrafen Sie zu korrekte Vorhersagen.
Kann zur Verfügung gestellt werden. Daher nehmen wir ein geeignetes Wahrscheinlichkeitsmodell an und betrachten einen Klassifizierungsalgorithmus, der bessere Eigenschaften als die Methode der kleinsten Quadrate aufweist.
Bevor wir uns mit der logistischen Regression befassen, sollten wir uns eingehend mit der logistischen Verteilung befassen. Bei gegebenem Eingabevektor $ x $ ist die bedingte Wahrscheinlichkeit der Klasse $ C_1 $
\begin{eqnarray}
P(y=1|x)&=&\frac{P(x|y=1)P(y=1)}{P(x|y=1)P(y=1)+P(x|y=0)P(y=0)}\\
\\
&=&\frac{1}{1+\frac{P(x|y=0)P(y=0)}{P(x|y=1)P(y=1)}}\\
\\
&=&\frac{1}{1+e^{-\log\frac{P(x|y=0)P(y=0)}{P(x|y=1)P(y=1)}}}\\
\end{eqnarray}
P(y=1|x)=\frac{1}{1+e^{-a}}\\
Wird sein. Dies wird als logistische Verteilung bezeichnet und durch $ \ sigma (a) $ dargestellt.
Die Form der Verteilungsfunktion ist wie folgt.
import numpy as np
from matplotlib import pyplot as plt
a = np.arange(-8., 8., 0.001)
y = 1 / (1+np.exp(-a))
plt.plot(a, y)
plt.axhline(0, linewidth = 1, ls = "--", color = "black")
plt.axhline(1, linewidth = 1, ls = "--", color = "black")
plt.xlabel("a")
plt.ylabel("σ (a)")
plt.show()
Sie können sehen, dass der Wertebereich innerhalb von $ (0,1) $ liegt.
\sigma(x)=\frac{1}{1+e^{-x}}
Es wird vertreten durch. Die Wahrscheinlichkeitsdichtefunktion $ f (x) $ unterscheidet $ \ sigma (x) $ und
\begin{eqnarray}
f(x)&=&\frac{d}{dx}\frac{1}{1+e^{-x}}\\
\\
&=&\frac{e^{-x}}{(1+e^{-x})^2}
\end{eqnarray}
Es wird sein. Die Form der Wahrscheinlichkeitsdichtefunktion ist wie folgt.
import numpy as np
from matplotlib import pyplot as plt
x = np.arange(-8., 8., 0.001)
y = np.exp(-x) / ((1+np.exp(-x))**2)
plt.plot(x, y)
plt.xlabel("x")
plt.ylabel("f (x)")
plt.show()
Bei einer gegebenen Verteilung möchten die Menschen den Mittelwert und die Varianz kennen. Ich werde es sofort berechnen. Die Produktfaktormatrix $ M (t) $ ist
M(t) = \int_{-\infty}^{\infty}e^{tx}\frac{e^{-x}}{(1+e^{-x})^2}dx
Durch Ersetzen von $ \ frac {1} {(1 + e ^ {-x})} = y $
\begin{eqnarray}
M(t) &=& \int_{0}^{1}e^{-t\log(\frac{1}{y}-1)}dy\\
\\
&=& \int_{0}^{1}(\frac{1}{y}-1)^{-t}dy\\
\\
&=& \int_{0}^{1}(\frac{1-y}{y})^{-t}dy\\
\\
&=& \int_{0}^{1}(\frac{1}{y})^{-t}(1-y)^{-t}dy\\
\\
&=& \int_{0}^{1}y^t(1-y)^{-t}dy\\
\\
&=& \int_{0}^{1}y^{(t+1)-1}(1-y)^{(-t+1)-1}dy\\
\\
&=& Beta(t+1,1-t)\\
\\
&=& \frac{\Gamma(t+1)\Gamma(1-t)}{\Gamma((t+1)+(1-t))}\\
\\
&=& \frac{\Gamma(t+1)\Gamma(1-t)}{\Gamma(2)}=\Gamma(t+1)\Gamma(1-t)
\end{eqnarray}
(Shindo ...!)
Wenn der Auftragsaustausch von Differenzierung und Integration erlaubt ist (der Auftrag kann ohne Beweis ausgetauscht werden), ist die Differenzierung erster Ordnung dieser Produktfaktormatrix
\begin{eqnarray}
\frac{dM(t)}{dt}=\Gamma'(t+1)\Gamma(1-t)-\Gamma(t+1)\Gamma'(1-t)
\end{eqnarray}
Und wenn $ t = 0 $,
\begin{eqnarray}
M'(0)=\Gamma'(1)\Gamma(1)-\Gamma(1)\Gamma'(1)=0
\end{eqnarray}
Das heißt, $ E [X] = M '(0) = 0 $. Dann finden Sie $ E [X ^ 2] $.
\begin{eqnarray}
\frac{d^2M(t)}{dt^2}&=&\Gamma''(t+1)\Gamma(1-t)-\Gamma'(t+1)\Gamma'(1-t)-\Gamma'(t+1)\Gamma'(1-t)+\Gamma'(t+1)\Gamma''(1-t)\\
\\
&=& \Gamma''(t+1)\Gamma(1-t)-2\Gamma'(t+1)\Gamma'(1-t)+\Gamma(t+1)\Gamma''(1-t)
\end{eqnarray}
Wenn $ t = 0 $,
\begin{eqnarray}
M''(0)&=&\Gamma''(1)-2\Gamma'(1)^2+\Gamma''(1)\\
\\
&=& 2\Gamma''(1)-2\Gamma'(1)^2
\end{eqnarray}
Geben Sie hier $ \ psi (x) = \ frac {d} {dx} \ log \ Gamma (x) = \ frac {\ Gamma '(x)} {\ Gamma (x)} $ ein und differenzieren Sie dies. Dann
\begin{eqnarray}
\frac{d}{dx}\psi(x)=\frac{\Gamma''(x)\Gamma(x)-\Gamma'(x)^2}{\Gamma(x)^2}
\end{eqnarray}
Das heißt, $ \ psi '(0) = \ Gamma' '(1) - \ Gamma' (1) ^ 2 $. Übrigens, $ \ psi '(0) = \ zeta (2) $ [wahrscheinlich](https://ja.wikipedia.org/wiki/%E3%83%9D%E3%83%AA%E3%82 % AC% E3% 83% B3% E3% 83% 9E% E9% 96% A2% E6% 95% B0) [^ 1] Also $ \ psi '(0) = \ frac {\ pi ^ 2} Es wird als 6} $ berechnet.
Daher ist $ M '' (0) = 2 × \ frac {\ pi ^ 2} {6} $ und $ E [X ^ 2] = M '' (0) = \ frac {\ pi ^ 2} { Ich konnte um 3} $ bitten. Als das,
\begin{eqnarray}
V[X]&=&E[X^2]-E[X]^2\\
\\
&=& \frac{\pi^2}{3} - 0\\
\\
&=& \frac{\pi^2}{3}
\end{eqnarray}
Es stellt sich heraus, dass der erwartete Wert der logistischen Verteilung $ 0 $ und die Varianz $ \ frac {\ pi ^ 2} {3} $ beträgt.
Übrigens scheint die Ableitung der logarithmischen Gammafunktion als Polygammafunktion bezeichnet zu werden. Insbesondere soll die Ableitung erster Ordnung die Digammafunktion sein.
(Es war hart und plötzlich kam die $ ζ $ -Funktion heraus und ich war mir nicht sicher, also kann ich nicht sagen, dass ich es berechnen könnte ...)
Betrachten Sie nun $ p = \ sigma (\ beta x) $, wenn die Parameter der logistischen Verteilung durch eine lineare Verbindung dargestellt werden. Lösen Sie dies für $ \ beta x $
\begin{eqnarray}
p &=& \frac{1}{1+e^{-\beta x}}\\
\\
(1+e^{-\beta x})p &=& 1\\
\\
p+e^{-\beta x}p &=& 1\\
\\
e^{-\beta x} &=& \frac{1-p}{p}\\
\\
-\beta x &=& \log\frac{1-p}{p}\\
\\
\beta x &=& \log\frac{p}{1-p}\\
\\
\end{eqnarray}
(Gleiche Positionen sind ausgerichtet, aber es ist etwas schwer zu sehen ...)
Die rechte Seite wird im Bereich Statistik als Log Odds bezeichnet.
Was ich sagen möchte ist, dass umgekehrt, wenn Sie die logarithmischen Quoten linear zurückführen und nach $ p $ auflösen, Sie eine Schätzung der Wahrscheinlichkeit erhalten, dass jede Klasse zugewiesen wird.
Übrigens sind für $ p \ in [0,1] $ die Gewinnchancen $ \ frac {p} {1-p} \ in [0, \ infty) $ und die logarithmischen Gewinnchancen sind $ \ log \ frac { Da es p} {1-p} \ in (- \ infty, \ infty) $ ist, können wir auch sehen, dass der Bereich der logarithmischen Quoten dem Bereich der linearen Funktionen entspricht.
Y = \left(
\begin{array}{c}
y_1\\
\vdots\\
y_n
\end{array}
\right),\quad y_i \in \{ 0,1 \},(i=1,...n)
In Bezug auf $ X $ möchte ich einen konstanten Term in den Parameter aufnehmen, aber es ist schwierig, die Notation zu ändern
X = \left(
\begin{array}{cccc}
1 & x_{11} & \cdots & x_{1d}\\\
\vdots & \vdots & \ddots & \vdots \\\
1 & x_{n1} & \cdots & x_{nd}
\end{array}
\right)
Ich würde gerne sagen, dass. Für $ i = 1, ..., n $ sei $ x_i = (1, x_ {i1}, ..., x_ {id}) ^ T $ (dh $ x_i $ ist $ X. Inversion der Zeilenkomponente von $)).
Die Wahrscheinlichkeitsfunktion für den Parametervektor $ \ beta = (\ beta_0, \ beta_1, ..., \ beta_d) $
L(\beta) = P(Y | \beta)= \prod_{i=1}^{n} \sigma(\beta x_i)^{y_i}\{1-\sigma(\beta x_i)\}^{1-y_i}
Kann geschrieben werden als, die logarithmische Wahrscheinlichkeitsfunktion,
E(\beta)=-\log L(\beta)= -\sum_{i=1}^{n}\{y_i\log \sigma(\beta x_i)+(1-y_i)\log(1-\sigma(\beta x_i))\}
Kann geschrieben werden als. Suchen Sie den Parameter $ \ beta $, indem Sie dieses Minimierungsproblem lösen.
Aufgrund der Nichtlinearität von $ \ sigma $ kann die wahrscheinlichste Lösung jedoch nicht analytisch abgeleitet werden.
Da $ E $ jedoch eine konvexe Funktion ist, hat es nur die kleinste Lösung. Finden Sie diese Mindestlösung nach der Newton-Methode.
Die Newton-Methode wird auch als Newton-Rafson-Methode bezeichnet. Ich werde Ihnen viel über die Newton-Methode erzählen, wenn ich den Google-Lehrer frage, ohne ein Memo zu machen, also werde ich die Erklärung dort belassen. Die frühe Geschichte ist, wie man die Lösung einer Gleichung durch numerische Berechnung findet. In dem Buch habe ich
・ P247 der Essenz des maschinellen Lernens (Kato) ・ Mustererkennung und maschinelles Lernen (Bischof) P207 ・ P140 der Grundlagen des statistischen Lernens (Hastie) ・ P74 der Galois-Theorie (Fujita), die gelöst werden kann
Es gibt eine Erklärung in etc.
[^ 1]: Wenn Sie nachschlagen, werden Sie verschiedene Dinge finden, aber da es viele direkte PDF-Links wie Vorlesungsmaterialien gibt, habe ich einen Wikipedia-Link.
Recommended Posts