Im vorangegangenen Artikel „Einführung in die Klassifikation und die logistische Regression“ habe ich die mathematischen Grundlagen des logistischen Regressionsalgorithmus skizziert, dessen Aufgabe es ist, die Dinge im Trainingsbeispiel zu trennen, indem die Entscheidungsgrenze berechnet wird.
Die Entscheidungsgrenze kann durch eine Gleichung beschrieben werden. Wie bei der linearen Regression ist der logistische Regressionsalgorithmus in der Lage, die besten \thetas-Parameter zu finden, damit die Entscheidungsgrenze die Datenpunkte tatsächlich korrekt trennt. In diesem Artikel wird gezeigt, wie diese \thetas berechnet werden.
Angenommen, wir haben einen allgemeinen Trainingssatz
\{ (x^{(1)}, y^{(1)}), (x^{(2)}, y^{(2)}), \dots, (x^{(m)}, y^{(m)}) \}
aus m Trainingsbeispielen, wobei (x^{(1)}, y^{(1)}) das erste Beispiel ist und so weiter. Genauer gesagt, ist x^{(m)} die Eingangsvariable des m-ten Beispiels, während y^{(m)} seine Ausgangsvariable ist. Da es sich um ein Klassifizierungsproblem handelt, ist die Ausgangsvariable y für jedes Beispiel zwischen 0 und 1 begrenzt, d. h. y \in {0,1}.
Jedes Beispiel wird wie üblich durch seinen Merkmalsvektor dargestellt
\vec{x} = \begin{bmatrix} x_0 \\\ x_1 \\\ \dots \\ x_n \end{bmatrix}
wobei x_0 = 1 (der gleiche alte Trick). Dies ist ein allgemeines Beispiel, wir kennen die genaue Anzahl der Merkmale nicht.
Schließlich haben wir die Hypothesenfunktion für die logistische Regression, wie im vorherigen Artikel gesehen:
h_\theta(x) = \frac{1}{1 + e^{\theta^{\top} x}}
Unsere Aufgabe ist es nun, die besten Parameter \thetas in der obigen Gleichung zu wählen, wenn die aktuelle Trainingsmenge gegeben ist, um Fehler zu minimieren. Denken Sie daran, dass \theta kein einzelner Parameter ist: Er erweitert sich zur Gleichung der Entscheidungsgrenze, die eine Linie oder eine komplexere Formel (mit mehr \thetas zum Schätzen) sein kann.
Das Verfahren ist ähnlich wie bei der linearen Regression: Definieren Sie eine Kostenfunktion und versuchen Sie, die bestmöglichen Werte für jedes \theta zu finden, indem Sie die Ausgabe der Kostenfunktion minimieren. Die Minimierung wird durch einen Gradientenabstiegsalgorithmus durchgeführt, dessen Aufgabe es ist, die Ausgabe der Kostenfunktion zu analysieren, bis er den niedrigsten Minimalpunkt findet.
Die in der linearen Regression verwendete Kostenfunktion wird hier nicht funktionieren
Sie erinnern sich vielleicht an die ursprüngliche Kostenfunktion J(\theta), die in der linearen Regression verwendet wurde. Ich kann Ihnen jetzt schon sagen, dass sie hier mit der logistischen Regression nicht funktionieren wird. Wenn Sie versuchen, die Kostenfunktion der linearen Regression zu verwenden, um J(\theta) in einem logistischen Regressionsproblem zu generieren, würden Sie eine nicht-konvexe Funktion erhalten: einen seltsam geformten Graphen ohne einen leicht zu findenden minimalen globalen Punkt, wie in der Abbildung unten zu sehen.
Dieses merkwürdige Ergebnis ist auf die Tatsache zurückzuführen, dass in der logistischen Regression die Sigmoidfunktion vorhanden ist, die nicht linear ist (d. h. keine Linie). Mit dem in Abbildung 1 dargestellten J(\theta) könnte der Gradientenabstiegsalgorithmus in einem lokalen Minimum stecken bleiben. Deshalb brauchen wir immer noch eine saubere konvexe Funktion wie bei der linearen Regression: eine schalenförmige Funktion, die der Gradientenabstiegsfunktion die Arbeit erleichtert, zum optimalen Minimalpunkt zu konvergieren.
Eine bessere Kostenfunktion für die logistische Regression
Lassen Sie mich kurz zu der Kostenfunktion zurückkehren, die wir bei der linearen Regression verwendet haben:
J(\vec{\theta}) = \frac{1}{2m} \sum_{i=1}^{m} (h_\theta(x^{(i)}) – y^{(i)})^2
, was auf eine etwas andere Weise umgeschrieben werden kann:
J(\vec{\theta}) = \frac{1}{m} \sum_{i=1}^{m} \frac{1}{2}(h_\theta(x^{(i)}) – y^{(i)})^2
Nichts Unheimliches ist passiert: Ich habe nur das \frac{1}{2} neben den Summationsteil verschoben. Jetzt machen wir es allgemeiner, indem wir eine neue Funktion
\mathrm{Cost}(h_\theta(x^{(i)}),y^{(i)}) = \frac{1}{2}(h_\theta(x^{(i)}) – y^{(i)})^2
In Worten, eine Funktion \mathrm{Cost}, die zwei Parameter als Eingabe benötigt: h_\theta(x^{(i)}) als Hypothesenfunktion und y^{(i)} als Ausgabe. Man kann es sich als die Kosten vorstellen, die der Algorithmus zu zahlen hat, wenn er eine Vorhersage h_\theta(x^{(i)}) macht, während die tatsächliche Bezeichnung y^{(i)} war.
Mit diesem neuen Teil des Puzzles kann ich die Kostenfunktion für die lineare Regression wie folgt umschreiben:
J(\theta) = \dfrac{1}{m} \sum_{i=1}^m \mathrm{Cost}(h_\theta(x^{(i)}),y^{(i)})
Wir wissen jedoch, dass die Kostenfunktion der linearen Regression nicht für logistische Regressionsprobleme verwendet werden kann. Woran liegt das also? Nun, es stellt sich heraus, dass wir für die logistische Regression einfach eine andere \mathrm{Cost}-Funktion finden müssen, während der Summationsteil der gleiche bleibt.
Logistische Regressionskostenfunktion
Für die logistische Regression ist die \mathrm{Cost}-Funktion definiert als:
\mathrm{Cost}(h_\theta(x),y) =\begin{cases}-\log(h_\theta(x)) & \text{if y = 1} \\-\log(1-h_\theta(x)) & \text{if y = 0}\end{cases}
Die i-Indizes wurden aus Gründen der Übersichtlichkeit entfernt. Mit anderen Worten, dies sind die Kosten, die der Algorithmus zahlt, wenn er einen Wert h_\theta(x) vorhersagt, während sich das tatsächliche Kostenlabel als y herausstellt. Durch die Verwendung dieser Funktion gewähren wir die Konvexität der Funktion, die der Gradientenabstiegsalgorithmus verarbeiten muss, wie oben beschrieben. Dafür gibt es auch einen mathematischen Beweis, der den Rahmen dieses Einführungskurses sprengen würde.
Im Fall y = 1 nähert sich der Output (d.h. die zu zahlenden Kosten) 0, wenn h_\theta(x) sich 1 nähert. Umgekehrt wachsen die zu zahlenden Kosten ins Unendliche, wenn h_\theta(x) sich 0 nähert. Dies ist in der Grafik 2. unten links deutlich zu sehen. Dies ist eine wünschenswerte Eigenschaft: Wir wollen eine größere Strafe, wenn der Algorithmus etwas vorhersagt, das weit vom tatsächlichen Wert entfernt ist. Wenn die Beschriftung y = 1 ist, der Algorithmus aber h_\theta(x) = 0 vorhersagt, ist das Ergebnis völlig falsch.
Umgekehrt gilt die gleiche Intuition, wenn y = 0 ist, wie in der Grafik 2. unten rechts dargestellt. Größere Strafen, wenn das Label y = 0 ist, der Algorithmus aber h_\theta(x) = 1 vorhersagt.
Zusätzliche Optimierungen der Kostenfunktion
Was wir gerade gesehen haben, ist die ausführliche Version der Kostenfunktion für logistische Regression. Wir können sie zu einem einzeiligen Ausdruck komprimieren: das wird helfen, langweilige if/else-Anweisungen zu vermeiden, wenn wir die Formel in einen Algorithmus umwandeln.
\mathrm{Cost}(h_\theta(x),y) = -y \log(h_\theta(x)) – (1 – y) \log(1-h_\theta(x))
Beweis: Versuchen Sie, y durch 0 und 1 zu ersetzen und Sie erhalten die beiden Teile der ursprünglichen Funktion.
Mit dieser Optimierung kann die Kostenfunktion der logistischen Regression wie folgt umgeschrieben werden:
\begin{align}J(\theta) & = \dfrac{1}{m} \sum_{i=1}^m \mathrm{Cost}(h_\theta(x^{(i)}),y^{(i)}) \\& = – \dfrac{1}{m} \\\\end{align}
Ich habe das Minuszeichen nach außen verschoben, um zusätzliche Klammern zu vermeiden.
Zusammenfügen der Kostenfunktion und des Gradientenabstiegs
Was bleibt übrig? Wir haben die Hypothesenfunktion und die Kostenfunktion: Wir sind fast fertig. Jetzt ist es an der Zeit, die besten Werte für \thetas Parameter in der Kostenfunktion zu finden, oder mit anderen Worten, die Kostenfunktion zu minimieren, indem wir den Gradientenabstiegsalgorithmus ausführen. Das Verfahren ist identisch mit dem, das wir bei der linearen Regression angewandt haben.
Formalerweise wollen wir die Kostenfunktion minimieren:
\min_{\theta} J(\theta)
Damit wird eine Reihe von Parametern \theta ausgegeben, die besten (d.h. mit weniger Fehler). Danach sind wir in der Lage, Vorhersagen für neue Eingabebeispiele mit ihren Merkmalen x zu treffen, indem wir die neuen \theta in der Hypothesenfunktion verwenden:
h_\theta(x) = \frac{1}{1 + e^{\theta^{\top} x}}
Wobei h_\theta(x) der Output, die Vorhersage, oder aber die Wahrscheinlichkeit ist, dass y = 1 ist.
Die Art und Weise, wie wir die Kostenfunktion minimieren werden, ist die Verwendung des Gradientenabstiegs. Die gute Nachricht ist, dass das Verfahren zu 99 % identisch ist mit dem, was wir für die lineare Regression gemacht haben.
Um die Kostenfunktion zu minimieren, müssen wir die Gradientenabstiegsfunktion für jeden Parameter ausführen:
\begin{align} \text{Wiederholen bis zur Konvergenz \{} \\\theta_j & := \theta_j – \alpha \frac{\partial}{\partial \theta_j} J(\theta) \\ \text{\}}\end{align}
Erinnern Sie sich daran, alle \theta_j gleichzeitig zu aktualisieren, wie wir es im Gegenstück zur linearen Regression getan haben: Wenn Sie n Merkmale haben, d.h. einen Merkmalsvektor \vec{\theta} = , müssen alle diese Parameter bei jeder Iteration gleichzeitig aktualisiert werden:
\begin{align} \text{repeat until convergence \{} \\\theta_0 & := \cdots \\\ \theta_1 & := \cdots \\\ \cdots \\\ \theta_n & : J(\theta), die wie folgt lautet:
\frac{\partial}{\partial \theta_j} J(\theta) = \dfrac{1}{m} \sum_{i=1}^{m} (h_\theta(x^{(i)}) – y^{(i)}) x_j^{(i)}
So kann die obige Schleife umgeschrieben werden als:
\begin{align} \text{repeat until convergence \{} \\\theta_j & := \theta_j – \alpha \dfrac{1}{m} \sum_{i=1}^{m} (h_\theta(x^{(i)}) – y^{(i)}) x_j^{(i)} \\ \text{\}}\end{align}
Überraschenderweise sieht es identisch aus mit dem, was wir für die multivariate lineare Regression gemacht haben. Was sich jedoch geändert hat, ist die Definition der Hypothese h_\theta(x): für die lineare Regression hatten wir h_\theta(x) = \theta^{\top}{x}, während wir für die logistische Regression h_\theta(x) = \frac{1}{1 + e^{\theta^{\top} x}}.
Von nun an können Sie die gleichen Techniken anwenden, um den Gradientenabstiegsalgorithmus zu optimieren, den wir für die lineare Regression gesehen haben, um sicherzustellen, dass die Umwandlung in den Minimalpunkt korrekt funktioniert. Im nächsten Kapitel werde ich mich mit einigen fortgeschrittenen Optimierungstricks befassen sowie mit der Definition und Vermeidung des Problems der Überanpassung.