(Als Referenz verwende ich Kevin P Murphys Buch "Maschinelles Lernen: Eine probabilistische Perspektive" und implementiere mit MATLAN - ohne Toolboxen)
Ich habe einen Datensatz mit 392 Stichproben (Zeilen), jede Stichprobe hat 8 Merkmale (Spalten), von denen eines die Klasse definiert (dh Spalte 1 der Merkmale ist in drei gleiche Klassen unterteilt, die die drei Klassen definieren - niedrig, mittel und hoch ).
Es fällt mir wirklich schwer zu verstehen, wie ein logistisches Regressionsmodell erstellt wird, um eine Stichprobe in eine dieser drei Klassen einzuteilen.
Ich habe gerade das Lernen und Erstellen eines linearen Regressionsmodells abgeschlossen, in dem ich sowohl die Lösung für gewöhnliche kleinste Quadrate (geschlossene Form) für den Gewichtsvektor als auch die Lösung für Gradientenabstieg (offene Form) kennengelernt habe. Aber ich habe nie einen Gradientenabstieg implementiert, weil meine Daten perfekt mit der OLS-Lösung für Gewichtsvektoren übereinstimmen.
Ich bin äußerst verwirrt darüber, wie ein Gewichtsvektor für die logistische Regression erstellt wird. Ich verstehe, dass die Verwendung des Gradientenabstiegs erforderlich ist, da es keine geschlossene Lösung gibt. Ich habe auch über die Newton-Methode zur Berechnung der Gewichte gelesen, aber ich verstehe sie überhaupt nicht.
Und nachdem Sie diese Methoden zur Berechnung von Gewichten verwendet haben, wie wenden Sie die Gewichte auf die Probendaten an? Bei der linearen Regression lag dies einfach daran, dass Sie die Gewichte einfach mit den Merkmalen (und Merkmalen höherer Ordnung für die lineare Regression höherer Ordnung) multipliziert haben. Ist dies bei der logistischen Regression jedoch dasselbe?
Mein bisheriges Verständnis ist außerdem, dass dieses Modell nur für die binäre Klassifizierung funktioniert. Wie würde ich es also für drei Klassen tun?
Grundsätzlich läuft meine Frage darauf hinaus:
Wie genau finden Sie den Gewichtsvektor für die logistische Regression (entweder mit Gradientenabstieg oder mit der Newton-Methode, je nachdem, was einfacher ist) und wie wenden Sie den Gewichtsvektor auf die Stichprobe an, um daraus eine Klassifizierung für 3 Klassen (nicht nur zwei) zu erhalten. .
quelle
Antworten:
Wenn Sie habenn mögliche Klassen dann müssen Sie trainieren n Logistische Klassifizierer für Ihre Trainingsdaten, wobei jeder Klassifizierer als Ausgabe die Wahrscheinlichkeit erzeugt, dass eine bestimmte Stichprobe ein Mitglied der Klasse ist, für deren Erkennung der Klassifizierer trainiert ist. Sobald das Training abgeschlossen ist, lassen Sie alle trainierten Klassifikatoren versuchen, eine neue Stichprobe zu klassifizieren, und versuchen, das Urteil des Klassifikators zu akzeptieren, der den höchsten Wahrscheinlichkeitswert erzeugt. Dies wird als One-vs- All- oder One-vs-Rest- Klassifizierung bezeichnet und ist eine Standardmethode zur Verwendung von Binärklassifizierern für die Klassifizierung mehrerer Klassen.
Die Gewichte werden beim Klassifizieren neuer Daten genauso angewendet wie beim Trainieren des Klassifikators. Sie haben einen Gewichtsvektorθ enthält Koeffizienten, die in Kombination mit dem Merkmalsvektor einer Stichprobe vorliegen x einen Hypothesenwert ergeben. Für die lineare RegressionθT.x (erweitert: θ0+θ1x1+θ2x2+ ...) ergibt den Hypothesenwert. Zur logistischen RegressionθT.x wird als Exponent in der logistischen Funktion verwendet, um den Hypothesenwert zu erzeugen:
Der Gradientenabstieg funktioniert für die logistische Regression genauso wie für die lineare Regression. Sie versuchen immer noch, die Kostenfunktion zu minimieren, indem Sie die Gewichte mithilfe partieller Ableitungen der Kostenfunktion iterativ auf bessere Werte verschieben. Die Hypothesenfunktion ist für die logistische Regression unterschiedlich, aber die Art und Weise, wie sie beim Gradientenabstieg verwendet wird, ist dieselbe. Sobald Sie Code geschrieben haben, um den Gradientenabstieg für die lineare Regression durchzuführen, sollten Sie in der Lage sein, einfach eine andere Hypothesenfunktion anzuschließen und sie für die logistische Regression verwenden zu lassen.
Pseudocode für eine Iteration des Gradientenabfalls:
x ist eine Matrix mit Ihren Trainingsdaten, eine Stichprobe pro Zeile.
y ist ein Vektor, der die korrekte Klassifizierungsvorhersage für jede Stichprobe enthält, 1, wenn die Stichprobe in der Klasse ist, andernfalls 0.
m ist die Anzahl der Proben.
n ist die Anzahl der Merkmale.
Die Idee ist, dass Sie diesen Vorgang wiederholen, bis Sie über den Trainingssatz hinweg minimale und akzeptable Kosten (Fehler) erreicht haben.
quelle