Technologieaustausch

Logistische Regression (reine Theorie)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Was ist logistische Regression?

Die logistische Regression ist eine häufig verwendete statistische Lernmethode, die hauptsächlich zur Lösung von Klassifizierungsproblemen verwendet wird.Trotz des Wortes „Regression“ im Namen handelt es sich tatsächlich um einen Klassifizierungsalgorithmus

2. Warum muss maschinelles Lernen eine logistische Regression verwenden?

1. Binäre Klassifizierung

Dies ist die grundlegendste und häufigste Anwendung der logistischen Regression.Es kann vorhersagen, ob ein Ereignis eintritt, und das Ausgabeergebnis ist „Ja“ oder „Nein“.

Zum Beispiel:

  • Sagen Sie voraus, ob ein Nutzer auf eine Anzeige klickt
  • Stellen Sie fest, ob es sich bei einer E-Mail um Spam handelt
  • Diagnostizieren Sie, ob ein Patient eine Krankheit hat

Diese Beispiele haben alle ein gemeinsames Merkmal, das heißt, es gibt nur zwei Ergebnisse, wahr (1) und falsch (0).

2. Klassifizierung mehrerer Kategorien

Die logistische Regression kann durch Methoden wie One-vs-Rest oder Softmax auf Klassifizierungsprobleme mit mehreren Kategorien erweitert werden

Zum Beispiel:

  • Objektklassifizierung in der Bilderkennung
  • Textklassifizierung (Nachrichtenklassifizierung, Stimmungsanalyse usw.)

Diese Beispiele haben alle ein gemeinsames Merkmal: Das gleiche Objekt hat mehrere mögliche Ergebnisse, ähnlich wie bei unseren üblichen Multiple-Choice-Fragen. Es gibt mehrere Optionen, aber es gibt nur eine Option, die am besten zur Antwort passt.

3. Wahrscheinlichkeitsvorhersage

Die logistische Regression liefert nicht nur Klassifizierungsergebnisse, sondern gibt auch Wahrscheinlichkeitswerte aus, was in vielen Szenarien sehr nützlich ist.

Zum Beispiel:

  • Sagen Sie die Wahrscheinlichkeit voraus, dass ein Kunde ein Produkt kauft
  • Bewerten Sie die Ausfallwahrscheinlichkeit eines Kreditantragstellers

Diese Beispiele haben alle ein gemeinsames Merkmal: die Vorhersage, d. h. die Verwendung bekannter Ergebnisse zur Ableitung unbekannter Ergebnisse.

Wenn Sie die Rolle der logistischen Regression nicht verstanden haben, gebe ich Ihnen ein leicht verständliches Beispiel.

Stellen Sie sich vor, Sie sind Arzt und müssen feststellen, ob ein Patient an einer bestimmten Krankheit leidet. Die logistische Regression ist wie ein intelligenter Assistent, der Sie bei dieser Beurteilung unterstützt. So wie ein Arzt verschiedene körperliche Untersuchungsindikatoren eines Patienten untersucht, berücksichtigt die logistische Regression mehrere zusammengehörige Faktoren (wir nennen sie Merkmale). Einige Kennzahlen sind möglicherweise wichtiger als andere. Die logistische Regression weist jedem Faktor ein „Gewicht“ zu, das seine Bedeutung widerspiegelt. Anstatt einfach „Ja“ oder „Nein“ zu sagen, wird schließlich eine Wahrscheinlichkeit angegeben. Beispiel: „Die Wahrscheinlichkeit, dass dieser Patient an der Krankheit erkrankt, liegt bei 70 %.“ Sie können einen Standard festlegen. Wenn dieser beispielsweise 50 % überschreitet, gilt er als „Ja“, andernfalls als „Nein“. Die logistische Regression „lernt“ aus einer Vielzahl bekannter Beispiele. So wie ein Arzt durch eine Vielzahl von Fällen Erfahrungen sammelt.

Natürlich geht die Rolle der logistischen Regression weit darüber hinaus und ist räumlich begrenzt (Eigentlich möchte ich einfach nur faul sein), ich werde nicht zu sehr auf die Einführung eingehen.

3.OK, stellen wir die Formel der logistischen Regression vor

Ich persönlich mag es nicht, Ihnen auf lange Sicht viele mathematische Formeln zu geben und Ihnen dann zu sagen, dass die zugrunde liegenden Prinzipien diese mathematischen Formeln sind, und Sie sie langsam selbst verstehen zu lassen.Ich hoffe, dass ich in meinem Artikel einige Kernformeln analysieren kann und warum es notwendig ist, diese wenigen Formeln zu verwenden.

1. Lineare Regressionsformel

y = b0 + b1x1 + b2x2 + ... + bn*xn

  • jist die abhängige Variable, der Wert, den wir vorhersagen möchten.
  • b0ist der Achsenabschnitt, der den Wert der abhängigen Variablen angibt, wenn alle unabhängigen Variablen 0 sind
  • b1, b2, ..., bnist der Regressionskoeffizient, der den Grad des Einflusses jeder unabhängigen Variablen auf die abhängige Variable angibt
  • x1, x2, ..., xnist die unabhängige Variable, also der Wert, der zur Vorhersage der abhängigen Variablen verwendet wird

Hier ist ein Beispiel für eine lineare Regression

Es spielt keine Rolle, ob Sie den Code nicht verstehen. Schauen Sie sich einfach das Bild an

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. import matplotlib.font_manager as fm
  4. # Generate some simulated house data
  5. np.random.seed(0)
  6. area = np.random.rand(100) * 200 + 50 # House area (square meters)
  7. price = 2 * area + 5000 + np.random.randn(100) * 500 # House price (ten thousand yuan)
  8. # Fit the data using linear regression
  9. from sklearn.linear_model import LinearRegression
  10. model = LinearRegression()
  11. model.fit(area.reshape(-1, 1), price)
  12. # Get the regression coefficients
  13. b0 = model.intercept_
  14. b1 = model.coef_[0]
  15. # Plot the scatter plot
  16. plt.scatter(area, price, label="House Data")
  17. # Plot the regression line
  18. plt.plot(area, b0 + b1*area, color="red", label="Linear Regression")
  19. # Set the plot title and axis labels
  20. plt.title("Linear Regression of House Area and Price")
  21. # Set the font to SimSun (楷体)
  22. font_prop = fm.FontProperties(fname=r"C:WindowsFontssimkai.ttf", size=12) # Replace with your SimSun font path
  23. plt.xlabel("House Area (Square Meters)", fontproperties=font_prop)
  24. plt.ylabel("House Price (Ten Thousand Yuan)", fontproperties=font_prop)
  25. # Add legend
  26. plt.legend()
  27. # Show the plot
  28. plt.show()

1. Generieren Sie 100 Haussimulationsdaten

  1. np.random.seed(0)
  2. area = np.random.rand(100) * 200 + 50
  3. price = 2 * area + 5000 + np.random.randn(100) * 500

2. Verwenden Sie die lineare Regression, um die Daten anzupassen

  1. from sklearn.linear_model import LinearRegression
  2. model = LinearRegression()
  3. model.fit(area.reshape(-1, 1), price)

3. Erhalten Sie den Regressionskoeffizienten (b0 ~ bn)

  1. b0 = model.intercept_
  2. b1 = model.coef_[0]

4. Zeichnen Sie ein Streudiagramm

plt.scatter(area, price, label="House Data")

5. Zeichnen Sie die Regressionslinie

plt.plot(area, b0 + b1*area, color="red", label="Linear Regression")

6. Legen Sie den Artikeltitel fest

plt.title("Linear Regression of House Area and Price")

7. Stellen Sie die Schriftart auf Kursivschrift und Schriftgröße (falls vorhanden) ein.

  1. font_prop = fm.FontProperties(fname=r"C:WindowsFontssimkai.ttf", size=12)
  2. plt.xlabel("House Area (Square Meters)", fontproperties=font_prop)
  3. plt.ylabel("House Price (Ten Thousand Yuan)", fontproperties=font_prop)

8. Fügen Sie eine Legende hinzu

plt.legend()

9. Diagramme anzeigen

plt.show()

Dieser Code verwendet lineare Regression, um die Beziehung zwischen Hausfläche und Preis anzupassen (die horizontalen und vertikalen Titel werden auf Englisch beschrieben, um Fehler zu vermeiden).

Die Laufergebnisse sind wie folgt:

Manche fragen sich vielleicht: Warum produzieren wir so große Datenmengen?

Gute Frage~

Mit diesen Daten können wir grob rechnen y = b0 + b1x1 + b2x2 + ... + bn*xn Was ist mit dem Koeffizienten?

Speziell:

  • y stellt die Zielvariable dar, die wir vorhersagen möchten, beispielsweise die Immobilienpreise.
  • x1, x2, ... xn stellen Faktoren dar, die die Zielvariable beeinflussen, wie z. B. Hausfläche, Anzahl der Räume, geografische Lage usw.
  • b0, b1, b2, ... bn stellen den Grad des Einflusses jedes Faktors auf die Zielvariable dar, bei der es sich um den Koeffizienten handelt, den wir berechnen möchten.

Durch das Sammeln einer großen Datenmenge können wir ein lineares Regressionsmodell verwenden, um diese Koeffizienten zu berechnen und ein Vorhersagemodell zu erstellen.Dieses Modell kann uns helfen, die Auswirkungen verschiedener Faktoren auf die Zielvariable zu verstehen und den Wert der Zielvariablen in der Zukunft vorherzusagen (ähnlich wie y = kx + b in der Mathematik). Mit spezifischem k und b können wir y vorhersagen, indem wir x erhalten , der Unterschied besteht darin, dass es hier mehr Koeffizienten k gibt)

2.Sigmoid-Funktionsformel

σ(x) = 1 / (1 + exp(-x))

Das Bild der Sig-Funktion sieht folgendermaßen aus:

Frage 1: Warum die Sigmoidfunktion wählen?

Wie bereits erwähnt, besteht die grundlegendste Verwendung der logistischen Regression darin, binäre Klassifizierungsprobleme zu lösen.

Das Ziel der logistischen Regression besteht darin, die Ausgabe eines linearen Modells (das eine beliebige reelle Zahl sein kann) in einen Wahrscheinlichkeitswert umzuwandeln, der die Wahrscheinlichkeit des Eintretens eines Ereignisses darstellt. Der Wahrscheinlichkeitswert sollte natürlich zwischen 0 und 1 liegen.

Die Sigmoidfunktion erfüllt diese Aufgabe perfekt: Sie komprimiert die Ausgabe des linearen Modells auf einen Wert zwischen 0 und 1, und wenn der Eingabewert zunimmt, erhöht sich der Ausgabewert allmählich, was mit dem sich ändernden Trend des Wahrscheinlichkeitswerts übereinstimmt.

Schauen Sie sich die Funktion von sig an. Wenn sie sich der positiven Unendlichkeit nähert, nähert sie sich unendlich der negativen Unendlichkeit. Passt sie nicht einfach zu unserem Problem von 0 oder 1?

Frage 2: Wie werden Sigmoidfunktionen klassifiziert?

Dann möchte jemand noch einmal sagen, dass Sie sich irren, obwohl gesagt wird, dass die beiden Seiten unendlich nahe beieinander liegen können. Wenn zum Beispiel 0,5 zwischen 0 und 1 liegt, sagen Sie, dass 0,5 nahe bei 0 liegt. Oder nähert es sich 1?

Obwohl gesagt wird, dass die Zahlen in der Mitte nicht nahe beieinander liegen können, kann ich sie künstlich festlegen ~

Wenn ich beispielsweise die Zahlen >= 0,5 in die Kategorie 1 und die Zahlen < 0,5 in die Kategorie 0 einordne, wird das Problem gelöst~

Daher ist 0,5 kein kritischer Punkt, sondern ein von uns künstlich festgelegter Schwellenwert für die Klassifizierung.

3. Logistische Regressionsformel

p = σ(b0 + b1*x1 + b2*x2 + ... + bn*xn) = 1 / (1 + exp(-(b0 + b1*x1 + b2*x2 + ... + bn*xn)))

Wir haben schon so viel gesagt, nur um diese Formel vorzustellen

Bereitet es Ihnen Kopfschmerzen, wenn Sie es nur ansehen? Es bereitet mir Kopfschmerzen, wenn ich es mir nur ansehe. Warum vereinfachen wir es also nicht?

Sehen Sie, es fühlt sich so viel erfrischender an, genau wie ein hübscher Kerl, der sich nicht gerne schick macht. Er hat sein Aussehen ein wenig aufgeräumt, und dann haben Sie herausgefunden, wow, dieser Kerl sieht so gut aus

Ähm, ich schweife ab~ AlsoDie logistische Regression ist eigentlich eine lineare Regression + Sigmoidfunktion

z in der Sigmoidfunktion verwendet eine lineare Regression y = b0 + b1x1 + b2x2 + ... + bn*xn ersetzen

Was bewirkt das also?

OK, werfen wir einen Blick darauf

4. Das Wesen und die Funktion der logistischen Regression

Das Wesen der logistischen Regression istSagen Sie die Wahrscheinlichkeit des Eintretens eines Ereignisses voraus .Dabei werden die Daten nicht direkt klassifiziert, sondern die Ergebnisse der linearen Regression über eine Funktion (Sigmoidfunktion) auf das Intervall 0–1 abgebildet. Der Wert in diesem Intervall stellt die Möglichkeit des Eintretens eines Ereignisses dar.

Die Grundlage der logistischen Regression ist die lineare Regression. Bei der linearen Regression wird ein lineares Modell erstellt und versucht, die Daten mit einer linearen Funktion anzupassen, um einen vorhergesagten Wert zu erhalten.Dieser vorhergesagte Wert kann ein beliebiger Wert sein und ist nicht durch das Intervall 0–1 eingeschränkt.

Die Sigmoid-Funktion ist eine „magische“ Funktion, die den durch lineare Regression erhaltenen vorhergesagten Wert in das Intervall 0 bis 1 umwandelt, und die Werte in diesem Intervall können als Wahrscheinlichkeit des Auftretens des Ereignisses interpretiert werden.

Um eine binäre Klassifizierung durchzuführen, müssen wir einen Schwellenwert festlegen, normalerweise 0,5.Wenn die vorhergesagte Wahrscheinlichkeit größer als der Schwellenwert ist, wird sie als positive Klasse bestimmt, andernfalls wird sie als negative Klasse bestimmt.

Zum Beispiel:

Die Funktion links kann als lineare Regressionsfunktion angesehen werden und die Funktion rechts ist die abgebildete Sigmoidfunktion.

Alle Bilder in diesem Artikel stammen von[Maschinelles Lernen] Die logistische Regression kann in zehn Minuten erlernt werden und ist leicht zu verstehen (einschließlich Spark-Lösungsprozess)_bilibili_bilibili