Voraussetzung: Lineare Regression
Dieser Artikel behandelt die Grundlagen der logistischen Regression und ihre Implementierung in Python. Die logistische Regression ist im Grunde ein überwachter Klassifikationsalgorithmus. Bei einem Klassifizierungsproblem kann die Zielvariable (oder Ausgabe), y, nur diskrete Werte für einen gegebenen Satz von Merkmalen (oder Eingaben), X, annehmen.
Entgegen der landläufigen Meinung ist die logistische Regression ein Regressionsmodell. Das Modell erstellt ein Regressionsmodell, um die Wahrscheinlichkeit vorherzusagen, dass ein gegebener Dateneintrag zu der Kategorie mit der Nummer „1“ gehört. So wie die lineare Regression davon ausgeht, dass die Daten einer linearen Funktion folgen, modelliert die logistische Regression die Daten anhand der Sigmoidfunktion.
Die logistische Regression wird erst dann zu einer Klassifizierungstechnik, wenn ein Entscheidungsschwellenwert ins Spiel gebracht wird. Die Festlegung des Schwellenwerts ist ein sehr wichtiger Aspekt der logistischen Regression und hängt vom Klassifizierungsproblem selbst ab.
Die Entscheidung über den Wert des Schwellenwerts wird in erster Linie von den Werten für Präzision und Recall beeinflusst. Im Idealfall sollen sowohl Precision als auch Recall 1 sein, was aber selten der Fall ist. Im Falle eines Kompromisses zwischen Precision und Recall verwenden wir die folgenden Argumente, um über den Schwellenwert zu entscheiden:-
1. Niedrige Precision/High Recall: Bei Anwendungen, bei denen wir die Anzahl der falsch-negativen Ergebnisse reduzieren wollen, ohne notwendigerweise die Anzahl der falsch-positiven Ergebnisse zu reduzieren, wählen wir einen Entscheidungswert, der einen niedrigen Wert für Precision oder einen hohen Wert für Recall hat. In einer Anwendung zur Krebsdiagnose möchten wir beispielsweise nicht, dass ein betroffener Patient als nicht betroffen eingestuft wird, ohne darauf zu achten, ob der Patient fälschlicherweise mit Krebs diagnostiziert wurde. Der Grund dafür ist, dass die Abwesenheit von Krebs durch weitere medizinische Erkrankungen festgestellt werden kann, das Vorhandensein der Krankheit jedoch bei einem bereits abgelehnten Kandidaten nicht erkannt werden kann.
2. Hohe Präzision/geringer Rückruf: In Anwendungen, in denen wir die Anzahl der falsch-positiven Ergebnisse reduzieren wollen, ohne notwendigerweise die Anzahl der falsch-negativen Ergebnisse zu reduzieren, wählen wir einen Entscheidungswert, der einen hohen Wert für die Präzision oder einen niedrigen Wert für den Rückruf hat. Wenn wir z.B. Kunden klassifizieren, ob sie positiv oder negativ auf eine personalisierte Werbung reagieren, wollen wir absolut sicher sein, dass der Kunde positiv auf die Werbung reagiert, da eine negative Reaktion andernfalls zu einem Verlust potenzieller Verkäufe des Kunden führen kann.
Basierend auf der Anzahl der Kategorien kann die logistische Regression klassifiziert werden als:
- Binomial: Zielvariable kann nur 2 mögliche Typen haben: „0“ oder „1“, die „Gewinn“ vs. „Verlust“, „bestanden“ vs. „durchgefallen“, „tot“ vs. „lebendig“ usw. darstellen können.
- multinomial: Die Zielvariable kann 3 oder mehr mögliche Typen haben, die nicht geordnet sind (d.h. die Typen haben keine quantitative Bedeutung), wie „Krankheit A“ vs. „Krankheit B“ vs. „Krankheit C“.
- ordinal: Es handelt sich um Zielvariablen mit geordneten Kategorien. Zum Beispiel kann ein Testergebnis kategorisiert werden als: „sehr schlecht“, „schlecht“, „gut“, „sehr gut“. Dabei kann jeder Kategorie ein Wert wie 0, 1, 2, 3 zugeordnet werden.
Zunächst wird die einfachste Form der logistischen Regression untersucht, nämlich die binomiale logistische Regression.
Binomiale logistische Regression
Betrachten wir einen Beispieldatensatz, der die Anzahl der Lernstunden mit dem Ergebnis einer Prüfung verknüpft. Das Ergebnis kann nur zwei Werte annehmen, nämlich bestanden (1) oder nicht bestanden (0):
Stunden(x) | 0.50 | 0.75 | 1.00 | 1.25 | 1.50 | 1.75 | 2.00 | 2.25 | 2.50 | 2.75 | 3.00 | 3.25 | 3.50 | 3.75 | 4.00 | 4.25 | 4.50 | 4.75 | 5.00 | 5.50 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Pass(y) | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
So, haben wir
i.e. y ist eine kategoriale Zielvariable, die nur zwei mögliche Typen annehmen kann: „0“ oder „1“.
Um unser Modell zu verallgemeinern, gehen wir davon aus, dass:
- Der Datensatz hat „p“ Merkmalsvariablen und „n“ Beobachtungen.
- Die Merkmalsmatrix wird wie folgt dargestellt:
Hier stehen die Werte der Merkmale für die Beobachtungen.
Hier halten wir uns an die Konvention, dass der Wert = 1 ist. (Lesen Sie weiter, Sie werden die Logik in wenigen Augenblicken verstehen). - Die Beobachtung kann wie folgt dargestellt werden:
- stellt die vorhergesagte Antwort für die Beobachtung dar, d.h. . Die Formel, die wir für die Berechnung verwenden, wird Hypothese genannt.
Wenn Sie die lineare Regression durchgenommen haben, sollten Sie sich daran erinnern, dass bei der linearen Regression die Hypothese, die wir für die Vorhersage verwendet haben, war:
wobei, die Regressionskoeffizienten sind.
Die Regressionskoeffizientenmatrix/der Regressionsvektor sei:
Dann, in einer kompakteren Form,
Der Grund für die Annahme von = 1 ist jetzt ziemlich klar.
Wir mussten ein Matrixprodukt erstellen, aber in der ursprünglichen Hypothesenformel war kein
Multiplikator vorhanden. Also haben wir = 1 definiert.
Wenn wir nun versuchen, die lineare Regression auf das obige Problem anzuwenden, werden wir wahrscheinlich kontinuierliche Werte erhalten, wenn wir die Hypothese verwenden, die wir oben diskutiert haben. Außerdem macht es keinen Sinn, Werte größer als 1 oder kleiner als 0 zu nehmen.
So werden einige Änderungen an der Hypothese für die Klassifizierung vorgenommen:
wobei,
die logistische Funktion oder die Sigmoidfunktion genannt wird.
Hier ist ein Diagramm, das g(z) zeigt:
Wir können aus dem obigen Diagramm schließen, dass:
- g(z) gegen 1 tendiert, da
- g(z) gegen 0 tendiert, da
- g(z) immer zwischen 0 und 1 begrenzt ist
So können wir jetzt bedingte Wahrscheinlichkeiten für 2 Etiketten (0 und 1) für die Beobachtung definieren als:
Wir können es kompakter schreiben als:
Nun definieren wir einen anderen Begriff, die Wahrscheinlichkeit von Parametern als:
Die Wahrscheinlichkeit ist nichts anderes als die Wahrscheinlichkeit von Daten (Trainingsbeispielen), gegeben ein Modell und bestimmte Parameterwerte (hier, ). Sie misst die Unterstützung, die die Daten für jeden möglichen Wert der Parameter bieten. Wir erhalten sie durch Multiplikation aller für gegebenen
Und zur einfacheren Berechnung nehmen wir die log Likelihood:
Die Kostenfunktion für die logistische Regression ist proportional zum Kehrwert der Likelihood der Parameter. Daher können wir einen Ausdruck für die Kostenfunktion J erhalten, indem wir die Log-Likelihood-Gleichung wie folgt verwenden:
Und unser Ziel ist es, so zu schätzen, dass die Kostenfunktion minimiert wird!!!
Mit dem Gradientenabstiegsalgorithmus
Zunächst nehmen wir partielle Ableitungen von w.um die stochastische Gradientenabstiegsregel abzuleiten (wir stellen hier nur den endgültigen abgeleiteten Wert dar):
Hier stellen y und h(x) den Antwortvektor und den vorhergesagten Antwortvektor dar (bzw.). Auch ist der Vektor, der die Beobachtungswerte für feature.
Now, um zu erhalten min ,
where heißt Lernrate und muss explizit eingestellt werden.
Lassen Sie uns sehen, die Python-Implementierung der oben genannten Technik auf einem Beispiel-Datensatz (download es von hier):
Hinweis: Der Gradientenabstieg ist eine der vielen Möglichkeiten zur Schätzung.
Grundsätzlich sind dies fortgeschrittenere Algorithmen, die leicht in Python ausgeführt werden können, sobald Sie Ihre Kostenfunktion und Ihre Gradienten definiert haben. Diese Algorithmen sind:
- BFGS(Broyden-Fletcher-Goldfarb-Shanno Algorithmus)
- L-BFGS(Wie BFGS aber mit begrenztem Speicher)
- Conjugate Gradient
Vorteile/Nachteile der Verwendung eines dieser Algorithmen gegenüber dem Gradientenabstieg:
- Vorteile
- Müssen keine Lernrate wählen
- Laufen oft schneller (nicht immer der Fall)
- Können den Gradienten für Sie numerisch annähern (funktioniert nicht immer gut)
- Nachteile
- Komplexer
- Mehr eine Black Box, es sei denn, man lernt die Besonderheiten
Multinomiale logistische Regression
In der multinomialen logistischen Regression, kann die Ausgangsvariable mehr als zwei mögliche diskrete Ausgänge haben. Betrachten Sie den Datensatz der Ziffern. Hier ist die Ausgangsvariable der Ziffernwert, der Werte aus (0, 12, 3, 4, 5, 6, 7, 8, 9) annehmen kann.
Nachfolgend ist die Implementierung der Multinomialen Logistischen Regression unter Verwendung von Scikit-Learn dargestellt, um Vorhersagen für Zifferndatensätze zu treffen.
Logistic Regression model accuracy(in %): 95.6884561892
Zuletzt noch einige Punkte zur logistischen Regression, über die man nachdenken sollte:
- Sie geht NICHT von einer linearen Beziehung zwischen der abhängigen Variablen und den unabhängigen Variablen aus, sondern von einer linearen Beziehung zwischen dem Logit der erklärenden Variablen und der Antwort.
- Unabhängige Variablen können sogar die Potenzterme oder andere nichtlineare Transformationen der ursprünglichen unabhängigen Variablen sein.
- Die abhängige Variable muss NICHT normalverteilt sein, aber sie nimmt typischerweise eine Verteilung aus einer Exponentialfamilie an (z.B. Binomial, Poisson, Multinomial, Normal,…); die binäre logistische Regression nimmt eine Binomialverteilung der Antwort an.
- Die Homogenität der Varianz muss NICHT erfüllt sein.
- Die Fehler müssen unabhängig, aber NICHT normalverteilt sein.
- Es wird die Maximum-Likelihood-Schätzung (MLE) anstelle der gewöhnlichen kleinsten Quadrate (OLS) verwendet, um die Parameter zu schätzen, und stützt sich daher auf Annäherungen für große Stichproben.
Dieser Artikel wurde von Nikhil Kumar verfasst. Wenn Ihnen GeeksforGeeks gefällt und Sie einen Beitrag leisten möchten, können Sie auch einen Artikel unter contribute.geeksforgeeks.org verfassen oder Ihren Artikel an [email protected] schicken. Dein Artikel wird auf der GeeksforGeeks-Hauptseite erscheinen und anderen Geeks helfen.