In diesem Artikel analysieren wir die theoretischen Berechnungen der Transformation lineare Regressionsfunktionen в inverse Logit-Transformationsfunktion (auch logistische Antwortfunktion genannt). Dann das Arsenal nutzen Maximum-Likelihood-MethodeGemäß dem logistischen Regressionsmodell leiten wir die Verlustfunktion ab Logistischer Verlust, oder mit anderen Worten, wir definieren eine Funktion, mit der die Parameter des Gewichtsvektors im logistischen Regressionsmodell ausgewählt werden .
Artikelübersicht:
- Wiederholen wir die lineare Beziehung zwischen zwei Variablen
- Lassen Sie uns den Bedarf an Transformation identifizieren lineare Regressionsfunktionen в logistische Antwortfunktion
- Lassen Sie uns die Transformationen und Ausgaben durchführen logistische Antwortfunktion
- Versuchen wir zu verstehen, warum die Methode der kleinsten Quadrate bei der Auswahl von Parametern schlecht ist Funktionen Logistischer Verlust
- Wir gebrauchen Maximum-Likelihood-Methode um zu bestimmen, Parameterauswahlfunktionen :
5.1. Fall 1: Funktion Logistischer Verlust für Objekte mit Klassenbezeichnungen 0 и 1:
5.2. Fall 2: Funktion Logistischer Verlust für Objekte mit Klassenbezeichnungen -1 и +1:
Der Artikel enthält viele einfache Beispiele, in denen alle Berechnungen leicht mündlich oder auf Papier durchgeführt werden können. In einigen Fällen ist möglicherweise ein Taschenrechner erforderlich. Also mach dich fertig :)
Dieser Artikel richtet sich in erster Linie an Datenwissenschaftler mit ersten Kenntnissen in den Grundlagen des maschinellen Lernens.
Der Artikel enthält auch Code zum Zeichnen von Diagrammen und Berechnungen. Der gesamte Code ist in der Sprache geschrieben Python 2.7. Lassen Sie mich vorab die „Neuheit“ der verwendeten Version erläutern – dies ist eine der Voraussetzungen für die Belegung des bekannten Kurses Yandex auf einer ebenso bekannten Online-Bildungsplattform Coursera, und wie man annehmen könnte, wurde das Material auf der Grundlage dieses Kurses erstellt.
01. Lineare Abhängigkeit
Es ist durchaus sinnvoll, die Frage zu stellen: Was haben lineare Abhängigkeit und logistische Regression damit zu tun?
Es ist einfach! Die logistische Regression ist eines der Modelle, die zum linearen Klassifikator gehören. Vereinfacht ausgedrückt besteht die Aufgabe eines linearen Klassifikators darin, Zielwerte vorherzusagen aus Variablen (Regressoren) . Es wird angenommen, dass die Abhängigkeit zwischen den Merkmalen besteht und Zielwerte linear. Daher der Name des Klassifikators – linear. Ganz grob ausgedrückt basiert das logistische Regressionsmodell auf der Annahme, dass zwischen den Merkmalen ein linearer Zusammenhang besteht und Zielwerte . Das ist die Verbindung.
Es gibt das erste Beispiel im Studio, und es geht richtigerweise um die geradlinige Abhängigkeit der untersuchten Größen. Bei der Erstellung des Artikels bin ich auf ein Beispiel gestoßen, das bereits viele Menschen verunsichert hat – die Abhängigkeit des Stroms von der Spannung („Angewandte Regressionsanalyse“, N. Draper, G. Smith). Wir werden es uns auch hier ansehen.
Gemäß Ohm'sches Gesetz:
Wo - aktuelle Stärke, - Stromspannung, - Widerstand.
Wenn wir es nicht wüssten Ohm'sches Gesetz, dann könnten wir die Abhängigkeit empirisch finden, indem wir sie ändern und messen , während er unterstützt Fest. Dann würden wir das Abhängigkeitsdiagramm sehen aus ergibt eine mehr oder weniger gerade Linie durch den Ursprung. Wir sagen „mehr oder weniger“, weil die Beziehung zwar tatsächlich genau ist, unsere Messungen jedoch kleine Fehler enthalten können und die Punkte im Diagramm daher möglicherweise nicht genau auf der Linie liegen, sondern zufällig um sie herum verstreut sind.
Grafik 1 „Abhängigkeit“ aus »
Diagrammzeichnungscode
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
import random
R = 13.75
x_line = np.arange(0,220,1)
y_line = []
for i in x_line:
y_line.append(i/R)
y_dot = []
for i in y_line:
y_dot.append(i+random.uniform(-0.9,0.9))
fig, axes = plt.subplots(figsize = (14,6), dpi = 80)
plt.plot(x_line,y_line,color = 'purple',lw = 3, label = 'I = U/R')
plt.scatter(x_line,y_dot,color = 'red', label = 'Actual results')
plt.xlabel('I', size = 16)
plt.ylabel('U', size = 16)
plt.legend(prop = {'size': 14})
plt.show()
02. Die Notwendigkeit, die lineare Regressionsgleichung umzuwandeln
Schauen wir uns ein anderes Beispiel an. Stellen wir uns vor, wir arbeiten in einer Bank und unsere Aufgabe besteht darin, abhängig von bestimmten Faktoren die Wahrscheinlichkeit der Rückzahlung des Kredits durch den Kreditnehmer zu ermitteln. Um die Aufgabe zu vereinfachen, betrachten wir nur zwei Faktoren: das monatliche Gehalt des Kreditnehmers und den monatlichen Rückzahlungsbetrag des Kredits.
Die Aufgabe ist sehr bedingt, aber anhand dieses Beispiels können wir verstehen, warum die Verwendung nicht ausreicht lineare Regressionsfunktionen, und finden Sie auch heraus, welche Transformationen mit der Funktion durchgeführt werden müssen.
Kehren wir zum Beispiel zurück. Es versteht sich, dass je höher das Gehalt ist, desto mehr kann der Kreditnehmer monatlich für die Rückzahlung des Darlehens bereitstellen. Gleichzeitig wird dieser Zusammenhang für eine bestimmte Gehaltsspanne recht linear sein. Nehmen wir zum Beispiel eine Gehaltsspanne von 60.000 RUR bis 200.000 RUR und gehen davon aus, dass in der angegebenen Gehaltsspanne die Abhängigkeit der Höhe der monatlichen Zahlung von der Höhe des Gehalts linear ist. Nehmen wir an, für die angegebene Lohnspanne wurde festgestellt, dass das Verhältnis von Gehalt zu Auszahlung nicht unter 3 fallen kann und der Kreditnehmer immer noch über 5.000 RUR als Reserve verfügen muss. Und nur in diesem Fall gehen wir davon aus, dass der Kreditnehmer den Kredit an die Bank zurückzahlt. Dann nimmt die lineare Regressionsgleichung die Form an:
wo , , , - Gehalt -ter Kreditnehmer, - Kredit bezahlung -ter Kreditnehmer.
Einsetzen von Gehalt und Kreditzahlung durch feste Parameter in die Gleichung Sie können entscheiden, ob Sie einen Kredit gewähren oder ablehnen.
Mit Blick auf die Zukunft stellen wir fest, dass dies mit den gegebenen Parametern der Fall ist lineare Regressionsfunktion, benutzt in logistische Reaktionsfunktionen wird zu großen Werten führen, die die Berechnungen zur Bestimmung der Wahrscheinlichkeiten der Kreditrückzahlung erschweren. Daher wird vorgeschlagen, unsere Koeffizienten beispielsweise um das 25.000-fache zu reduzieren. Diese Transformation der Koeffizienten ändert nichts an der Entscheidung zur Kreditvergabe. Merken wir uns diesen Punkt für die Zukunft, aber um noch klarer zu machen, wovon wir sprechen, betrachten wir nun die Situation mit drei potenziellen Kreditnehmern.
Tabelle 1 „Potenzielle Kreditnehmer“
Code zum Generieren der Tabelle
import pandas as pd
r = 25000.0
w_0 = -5000.0/r
w_1 = 1.0/r
w_2 = -3.0/r
data = {'The borrower':np.array(['Vasya', 'Fedya', 'Lesha']),
'Salary':np.array([120000,180000,210000]),
'Payment':np.array([3000,50000,70000])}
df = pd.DataFrame(data)
df['f(w,x)'] = w_0 + df['Salary']*w_1 + df['Payment']*w_2
decision = []
for i in df['f(w,x)']:
if i > 0:
dec = 'Approved'
decision.append(dec)
else:
dec = 'Refusal'
decision.append(dec)
df['Decision'] = decision
df[['The borrower', 'Salary', 'Payment', 'f(w,x)', 'Decision']]
Gemäß den Angaben in der Tabelle möchte Vasya mit einem Gehalt von 120.000 RUR einen Kredit aufnehmen, damit er ihn monatlich in Höhe von 3.000 RUR zurückzahlen kann. Wir haben festgestellt, dass für die Genehmigung des Darlehens das Gehalt von Vasya das Dreifache des Betrags der Zahlung übersteigen muss und dass noch 5.000 RUR übrig sein müssen. Vasya erfüllt diese Anforderung: . Sogar 106.000 RUR bleiben übrig. Trotz der Tatsache, dass bei der Berechnung Wir haben die Chancen reduziert 25.000 Mal war das Ergebnis das gleiche – der Kredit kann bewilligt werden. Fedya wird ebenfalls einen Kredit erhalten, aber Lesha muss seinen Appetit zügeln, obwohl er den meisten Kredit erhält.
Lassen Sie uns für diesen Fall ein Diagramm zeichnen.
Grafik 2 „Klassifizierung der Kreditnehmer“
Code zum Zeichnen des Diagramms
salary = np.arange(60000,240000,20000)
payment = (-w_0-w_1*salary)/w_2
fig, axes = plt.subplots(figsize = (14,6), dpi = 80)
plt.plot(salary, payment, color = 'grey', lw = 2, label = '$f(w,x_i)=w_0 + w_1x_{i1} + w_2x_{i2}$')
plt.plot(df[df['Decision'] == 'Approved']['Salary'], df[df['Decision'] == 'Approved']['Payment'],
'o', color ='green', markersize = 12, label = 'Decision - Loan approved')
plt.plot(df[df['Decision'] == 'Refusal']['Salary'], df[df['Decision'] == 'Refusal']['Payment'],
's', color = 'red', markersize = 12, label = 'Decision - Loan refusal')
plt.xlabel('Salary', size = 16)
plt.ylabel('Payment', size = 16)
plt.legend(prop = {'size': 14})
plt.show()
Also unsere Gerade, entsprechend der Funktion konstruiert , trennt „schlechte“ Kreditnehmer von „guten“. Diejenigen Kreditnehmer, deren Wünsche nicht mit ihren Fähigkeiten übereinstimmen, liegen oberhalb der Linie (Lesha), während diejenigen, die nach den Parametern unseres Modells in der Lage sind, den Kredit zurückzuzahlen, unterhalb der Linie liegen (Vasya und Fedya). Mit anderen Worten können wir Folgendes sagen: Unser direkter Draht teilt Kreditnehmer in zwei Klassen. Bezeichnen wir sie wie folgt: zur Klasse Wir klassifizieren diejenigen Kreditnehmer, die den Kredit am wahrscheinlichsten zurückzahlen werden oder Wir beziehen diejenigen Kreditnehmer mit ein, die den Kredit höchstwahrscheinlich nicht zurückzahlen können.
Fassen wir die Schlussfolgerungen aus diesem einfachen Beispiel zusammen. Nehmen wir einen Punkt und Einsetzen der Koordinaten des Punktes in die entsprechende Geradengleichung Betrachten Sie drei Optionen:
- Wenn der Punkt unter der Linie liegt, weisen wir ihn der Klasse zu , dann der Wert der Funktion wird positiv sein von auf . Das bedeutet, dass wir davon ausgehen können, dass die Wahrscheinlichkeit der Rückzahlung des Kredits im Rahmen liegt . Je größer der Funktionswert, desto höher die Wahrscheinlichkeit.
- Wenn ein Punkt über einer Linie liegt, weisen wir ihn der Klasse zu oder , dann ist der Wert der Funktion negativ von auf . Dann gehen wir davon aus, dass die Wahrscheinlichkeit einer Schuldenrückzahlung innerhalb liegt und je größer der Absolutwert der Funktion ist, desto höher ist unser Vertrauen.
- Der Punkt liegt auf einer Geraden, auf der Grenze zwischen zwei Klassen. In diesem Fall der Wert der Funktion wird gleich sein und die Wahrscheinlichkeit, den Kredit zurückzuzahlen, ist gleich .
Stellen wir uns nun vor, dass wir nicht zwei Faktoren, sondern Dutzende und nicht drei, sondern Tausende von Kreditnehmern haben. Dann haben wir statt einer geraden Linie m-dimensional Ebene und Koeffizienten Wir werden nicht aus dem Nichts genommen, sondern nach allen Regeln und auf der Grundlage gesammelter Daten über Kreditnehmer abgeleitet, die den Kredit zurückgezahlt haben oder nicht. Beachten Sie, dass wir die Kreditnehmer jetzt anhand bereits bekannter Koeffizienten auswählen . Tatsächlich besteht die Aufgabe des logistischen Regressionsmodells genau darin, die Parameter zu bestimmen , bei dem der Wert der Verlustfunktion Logistischer Verlust tendiert zum Minimum. Aber darüber, wie der Vektor berechnet wird , mehr erfahren wir im 5. Abschnitt des Artikels. In der Zwischenzeit kehren wir in das gelobte Land zurück – zu unserem Bankier und seinen drei Kunden.
Dank der Funktion Wir wissen, wem ein Kredit gewährt werden kann und wem er verweigert werden muss. Mit solchen Informationen können Sie jedoch nicht zum Direktor gehen, da dieser von uns die Wahrscheinlichkeit der Rückzahlung des Kredits durch jeden Kreditnehmer erfahren wollte. Was zu tun ist? Die Antwort ist einfach: Wir müssen die Funktion irgendwie transformieren , deren Werte im Bereich liegen zu einer Funktion, deren Werte im Bereich liegen . Und eine solche Funktion existiert, sie heißt logistische Antwortfunktion oder inverse Logit-Transformation. Treffen:
Sehen wir uns Schritt für Schritt an, wie es funktioniert logistische Antwortfunktion. Beachten Sie, dass wir in die entgegengesetzte Richtung gehen, d. h. Wir gehen davon aus, dass wir den Wahrscheinlichkeitswert kennen, der im Bereich von liegt auf und dann „entwickeln“ wir diesen Wert auf den gesamten Zahlenbereich ab auf .
03. Wir leiten die logistische Antwortfunktion ab
Schritt 1. Konvertieren Sie die Wahrscheinlichkeitswerte in einen Bereich
Während der Transformation der Funktion в logistische Antwortfunktion Wir lassen unseren Kreditanalysten in Ruhe und machen stattdessen einen Rundgang durch die Buchmacher. Nein, natürlich werden wir keine Wetten platzieren, uns interessiert dort nur die Bedeutung des Ausdrucks, zum Beispiel ist die Chance 4 zu 1. Die allen Wettenden vertraute Quote ist das Verhältnis von „Erfolgen“ zu „ Misserfolge“. In Bezug auf die Wahrscheinlichkeit sind Quoten die Wahrscheinlichkeit, dass ein Ereignis eintritt, geteilt durch die Wahrscheinlichkeit, dass das Ereignis nicht eintritt. Schreiben wir die Formel für die Wahrscheinlichkeit des Eintretens eines Ereignisses auf :
Wo - Wahrscheinlichkeit des Eintretens eines Ereignisses, — Wahrscheinlichkeit, dass ein Ereignis NICHT eintritt
Wenn zum Beispiel die Wahrscheinlichkeit, dass ein junges, starkes und verspieltes Pferd mit dem Spitznamen „Veterok“ bei einem Rennen eine alte und schlaffe alte Frau namens „Matilda“ schlägt, gleich ist , dann sind die Erfolgsaussichten für „Veterok“ groß к und umgekehrt wird es für uns nicht schwierig sein, die Wahrscheinlichkeit zu berechnen, wenn wir die Chancen kennen :
So haben wir gelernt, Wahrscheinlichkeiten in Chancen zu „übersetzen“, die Werte annehmen auf . Gehen wir noch einen Schritt weiter und lernen, die Wahrscheinlichkeit auf den gesamten Zahlenstrahl zu „übersetzen“. auf .
Schritt 2. Konvertieren Sie die Wahrscheinlichkeitswerte in einen Bereich
Dieser Schritt ist sehr einfach: Nehmen wir den Logarithmus der Quote zur Basis der Eulerschen Zahl und wir bekommen:
Jetzt wissen wir, dass wenn , dann berechnen Sie den Wert wird sehr einfach sein und darüber hinaus sollte es positiv sein: . So ist das.
Lassen Sie uns aus Neugier prüfen, was wäre, wenn , dann erwarten wir einen negativen Wert . Wir überprüfen: . Alles ist richtig.
Jetzt wissen wir, wie man den Wahrscheinlichkeitswert umwandelt auf entlang des gesamten Zahlenstrahls von auf . Im nächsten Schritt machen wir das Gegenteil.
Im Moment stellen wir fest, dass wir den Wert der Funktion gemäß den Regeln des Logarithmus kennen , können Sie die Quoten berechnen:
Diese Methode zur Bestimmung der Quoten wird uns im nächsten Schritt nützlich sein.
Schritt 3. Lassen Sie uns eine Formel zur Bestimmung ableiten
Also haben wir gelernt, wissend , Funktionswerte finden . Tatsächlich brauchen wir jedoch genau das Gegenteil – die Kenntnis des Wertes finden . Wenden wir uns dazu einem Konzept wie der inversen Quotenfunktion zu, nach der:
In dem Artikel werden wir die obige Formel nicht herleiten, sondern sie anhand der Zahlen aus dem obigen Beispiel überprüfen. Wir wissen, dass bei einer Quote von 4 zu 1 (), beträgt die Eintrittswahrscheinlichkeit des Ereignisses 0.8 (). Machen wir eine Substitution: . Dies deckt sich mit unseren zuvor durchgeführten Berechnungen. Lass uns weitermachen.
Im letzten Schritt haben wir das abgeleitet , was bedeutet, dass Sie eine Ersetzung in der Umkehrquotenfunktion vornehmen können. Wir bekommen:
Teilen Sie Zähler und Nenner durch , Dann:
Um sicherzustellen, dass wir nirgendwo einen Fehler gemacht haben, führen wir noch eine kleine Überprüfung durch. In Schritt 2, wir für das festgestellt . Dann ersetzen Sie den Wert in die logistische Antwortfunktion, die wir erwarten . Wir ersetzen und erhalten:
Herzlichen Glückwunsch, lieber Leser, wir haben gerade die logistische Antwortfunktion abgeleitet und getestet. Schauen wir uns den Graphen der Funktion an.
Grafik 3 „Logistische Antwortfunktion“
Code zum Zeichnen des Diagramms
import math
def logit (f):
return 1/(1+math.exp(-f))
f = np.arange(-7,7,0.05)
p = []
for i in f:
p.append(logit(i))
fig, axes = plt.subplots(figsize = (14,6), dpi = 80)
plt.plot(f, p, color = 'grey', label = '$ 1 / (1+e^{-w^Tx_i})$')
plt.xlabel('$f(w,x_i) = w^Tx_i$', size = 16)
plt.ylabel('$p_{i+}$', size = 16)
plt.legend(prop = {'size': 14})
plt.show()
In der Literatur findet man den Namen dieser Funktion auch als Sigmoidfunktion. Die Grafik zeigt deutlich, dass die Hauptänderung der Wahrscheinlichkeit, dass ein Objekt zu einer Klasse gehört, innerhalb eines relativ kleinen Bereichs auftritt , irgendwo von auf .
Ich schlage vor, zu unserem Kreditanalysten zurückzukehren und ihm bei der Berechnung der Wahrscheinlichkeit einer Kreditrückzahlung zu helfen, sonst besteht die Gefahr, dass er ohne Bonus dasteht :)
Tabelle 2 „Potenzielle Kreditnehmer“
Code zum Generieren der Tabelle
proba = []
for i in df['f(w,x)']:
proba.append(round(logit(i),2))
df['Probability'] = proba
df[['The borrower', 'Salary', 'Payment', 'f(w,x)', 'Decision', 'Probability']]
Wir haben also die Wahrscheinlichkeit der Kreditrückzahlung ermittelt. Im Allgemeinen scheint dies wahr zu sein.
Tatsächlich liegt die Wahrscheinlichkeit, dass Vasya mit einem Gehalt von 120.000 RUR jeden Monat 3.000 RUR an die Bank zahlen kann, bei nahezu 100 %. Übrigens müssen wir verstehen, dass eine Bank Lesha einen Kredit gewähren kann, wenn die Richtlinien der Bank beispielsweise eine Kreditvergabe an Kunden mit einer Wahrscheinlichkeit der Kreditrückzahlung von mehr als beispielsweise 0.3 vorsehen. Nur wird die Bank in diesem Fall eine größere Rücklage für mögliche Verluste bilden.
Es ist auch zu beachten, dass von der Obergrenze ein Gehalts-Zahlungs-Verhältnis von mindestens 3 und mit einer Marge von 5.000 RUR übernommen wurde. Daher konnten wir den Gewichtsvektor nicht in seiner ursprünglichen Form verwenden . Wir mussten die Koeffizienten stark reduzieren und haben in diesem Fall jeden Koeffizienten durch 25.000 dividiert, also im Wesentlichen das Ergebnis angepasst. Dies geschah jedoch speziell, um das Verständnis des Materials in der Anfangsphase zu erleichtern. Im Leben müssen wir Koeffizienten nicht erfinden und anpassen, sondern sie finden. In den nächsten Abschnitten des Artikels werden wir die Gleichungen ableiten, mit denen die Parameter ausgewählt werden .
04. Methode der kleinsten Quadrate zur Bestimmung des Gewichtsvektors in der logistischen Antwortfunktion
Wir kennen diese Methode zur Auswahl eines Gewichtsvektors bereits Als Methode der kleinsten Quadrate (LSM) Und warum verwenden wir es dann nicht auch bei binären Klassifizierungsproblemen? Tatsächlich hindert Sie nichts daran, es zu verwenden MNC, nur diese Methode liefert bei Klassifizierungsproblemen Ergebnisse, die weniger genau sind als Logistischer Verlust. Dafür gibt es eine theoretische Grundlage. Schauen wir uns zunächst ein einfaches Beispiel an.
Nehmen wir an, dass unsere Modelle (unter Verwendung von MSE и Logistischer Verlust) haben bereits mit der Auswahl des Gewichtsvektors begonnen und wir haben die Berechnung irgendwann abgebrochen. Egal ob in der Mitte, am Ende oder am Anfang, Hauptsache wir haben bereits einige Werte des Gewichtsvektors und gehen davon aus, dass in diesem Schritt der Gewichtsvektor vorliegt Bei beiden Modellen gibt es keine Unterschiede. Nehmen Sie dann die resultierenden Gewichte und ersetzen Sie sie logistische Antwortfunktion () für ein Objekt, das zur Klasse gehört . Wir untersuchen zwei Fälle, in denen unser Modell in Übereinstimmung mit dem ausgewählten Gewichtsvektor sehr falsch ist und umgekehrt – das Modell ist sich sehr sicher, dass das Objekt zur Klasse gehört . Mal sehen, welche Bußgelder bei der Verwendung verhängt werden MNC и Logistischer Verlust.
Code zur Berechnung von Strafen abhängig von der verwendeten Verlustfunktion
# класс объекта
y = 1
# вероятность отнесения объекта к классу в соответствии с параметрами w
proba_1 = 0.01
MSE_1 = (y - proba_1)**2
print 'Штраф MSE при грубой ошибке =', MSE_1
# напишем функцию для вычисления f(w,x) при известной вероятности отнесения объекта к классу +1 (f(w,x)=ln(odds+))
def f_w_x(proba):
return math.log(proba/(1-proba))
LogLoss_1 = math.log(1+math.exp(-y*f_w_x(proba_1)))
print 'Штраф Log Loss при грубой ошибке =', LogLoss_1
proba_2 = 0.99
MSE_2 = (y - proba_2)**2
LogLoss_2 = math.log(1+math.exp(-y*f_w_x(proba_2)))
print '**************************************************************'
print 'Штраф MSE при сильной уверенности =', MSE_2
print 'Штраф Log Loss при сильной уверенности =', LogLoss_2
Ein Fehler – Das Modell weist ein Objekt einer Klasse zu mit einer Wahrscheinlichkeit von 0,01
Strafe bei Benutzung MNC wird sein:
Strafe bei Benutzung Logistischer Verlust wird sein:
Ein Fall von starkem Vertrauen – Das Modell weist ein Objekt einer Klasse zu mit einer Wahrscheinlichkeit von 0,99
Strafe bei Benutzung MNC wird sein:
Strafe bei Benutzung Logistischer Verlust wird sein:
Dieses Beispiel veranschaulicht gut, dass im Falle eines groben Fehlers die Verlustfunktion Protokollverlust bestraft das Modell deutlich mehr als MSE. Lassen Sie uns nun verstehen, was der theoretische Hintergrund für die Verwendung der Verlustfunktion ist Protokollverlust bei Klassifikationsproblemen.
05. Maximum-Likelihood-Methode und logistische Regression
Wie zu Beginn versprochen, enthält der Artikel viele einfache Beispiele. Im Studio gibt es ein weiteres Beispiel und alte Gäste – Bankkreditnehmer: Vasya, Fedya und Lesha.
Für alle Fälle möchte ich Sie vor der Entwicklung des Beispiels daran erinnern, dass wir es im Leben mit einer Trainingsstichprobe von Tausenden oder Millionen von Objekten mit Dutzenden oder Hunderten von Funktionen zu tun haben. Hier sind die Zahlen jedoch so gewählt, dass sie problemlos in den Kopf eines unerfahrenen Datenwissenschaftlers passen.
Kehren wir zum Beispiel zurück. Stellen wir uns vor, dass der Direktor der Bank beschlossen hat, allen Bedürftigen einen Kredit zu gewähren, obwohl ihm der Algorithmus gesagt hatte, er solle den Kredit nicht an Lesha vergeben. Und nun ist genug Zeit vergangen und wir wissen, welcher der drei Helden den Kredit zurückgezahlt hat und welcher nicht. Was zu erwarten war: Vasya und Fedya zahlten den Kredit zurück, Lesha jedoch nicht. Stellen wir uns nun vor, dass dieses Ergebnis ein neues Trainingsbeispiel für uns sein wird und es gleichzeitig so ist, als ob alle Daten zu den Faktoren, die die Wahrscheinlichkeit der Rückzahlung des Kredits beeinflussen (Gehalt des Kreditnehmers, Höhe der monatlichen Zahlung), verschwunden wären. Dann können wir intuitiv davon ausgehen, dass jeder dritte Kreditnehmer den Kredit nicht an die Bank zurückzahlt, oder anders ausgedrückt: Die Wahrscheinlichkeit, dass der nächste Kreditnehmer den Kredit zurückzahlt . Diese intuitive Annahme hat eine theoretische Bestätigung und basiert auf Maximum-Likelihood-Methode, oft wird es in der Literatur genannt Maximum-Likelihood-Prinzip.
Machen wir uns zunächst mit dem konzeptionellen Apparat vertraut.
Stichprobenwahrscheinlichkeit ist die Wahrscheinlichkeit, genau eine solche Probe zu erhalten, genau solche Beobachtungen/Ergebnisse zu erhalten, d. h. das Produkt der Wahrscheinlichkeiten, jedes der Stichprobenergebnisse zu erhalten (z. B. ob das Darlehen von Vasya, Fedya und Lesha gleichzeitig zurückgezahlt wurde oder nicht).
Wahrscheinlichkeitsfunktion setzt die Wahrscheinlichkeit einer Stichprobe mit den Werten der Verteilungsparameter in Beziehung.
In unserem Fall handelt es sich bei der Trainingsstichprobe um ein verallgemeinertes Bernoulli-Schema, bei dem die Zufallsvariable nur zwei Werte annimmt: oder . Daher kann die Stichprobenwahrscheinlichkeit als Wahrscheinlichkeitsfunktion des Parameters geschrieben werden следующим обрахом:
Der obige Eintrag kann wie folgt interpretiert werden. Die gemeinsame Wahrscheinlichkeit, dass Vasya und Fedya den Kredit zurückzahlen, ist gleich , die Wahrscheinlichkeit, dass Lesha den Kredit NICHT zurückzahlt, ist gleich (da es NICHT die Rückzahlung des Kredits war), ist die gemeinsame Wahrscheinlichkeit aller drei Ereignisse gleich .
Maximum-Likelihood-Methode ist eine Methode zum Schätzen eines unbekannten Parameters durch Maximieren Wahrscheinlichkeitsfunktionen. In unserem Fall müssen wir einen solchen Wert finden an welchem erreicht sein Maximum.
Woher kommt die eigentliche Idee – nach dem Wert eines unbekannten Parameters zu suchen, bei dem die Wahrscheinlichkeitsfunktion ein Maximum erreicht? Der Ursprung der Idee liegt in der Vorstellung, dass eine Stichprobe die einzige uns zur Verfügung stehende Wissensquelle über die Bevölkerung ist. Alles, was wir über die Bevölkerung wissen, ist in der Stichprobe enthalten. Daher können wir nur sagen, dass eine Stichprobe das genaueste Abbild der Bevölkerung ist, die uns zur Verfügung steht. Daher müssen wir einen Parameter finden, bei dem die verfügbare Stichprobe am wahrscheinlichsten wird.
Offensichtlich haben wir es mit einem Optimierungsproblem zu tun, bei dem wir den Extrempunkt einer Funktion finden müssen. Um den Extrempunkt zu finden, ist es notwendig, die Bedingung erster Ordnung zu berücksichtigen, das heißt, die Ableitung der Funktion mit Null gleichzusetzen und die Gleichung in Bezug auf den gewünschten Parameter zu lösen. Die Suche nach der Ableitung eines Produkts aus einer großen Anzahl von Faktoren kann jedoch eine langwierige Aufgabe sein; um dies zu vermeiden, gibt es eine spezielle Technik – den Wechsel zum Logarithmus Wahrscheinlichkeitsfunktionen. Warum ist ein solcher Übergang möglich? Achten wir darauf, dass wir nicht nach dem Extremum der Funktion selbst suchen, und der Extrempunkt, also der Wert des unbekannten Parameters an welchem erreicht sein Maximum. Beim Übergang zu einem Logarithmus ändert sich der Extrempunkt nicht (obwohl der Extremwert selbst unterschiedlich sein wird), da der Logarithmus eine monotone Funktion ist.
Lassen Sie uns in Übereinstimmung mit dem oben Gesagten unser Beispiel mit Krediten von Vasya, Fedya und Lesha weiterentwickeln. Kommen wir zunächst zu Logarithmus der Likelihood-Funktion:
Jetzt können wir den Ausdruck leicht unterscheiden nach :
Und schließlich betrachten wir die Bedingung erster Ordnung – wir setzen die Ableitung der Funktion mit Null gleich:
Somit unsere intuitive Einschätzung der Wahrscheinlichkeit einer Kreditrückzahlung war theoretisch gerechtfertigt.
Großartig, aber was sollen wir jetzt mit diesen Informationen machen? Geht man davon aus, dass jeder dritte Kreditnehmer das Geld nicht an die Bank zurückzahlt, dann wird diese unweigerlich in die Pleite gehen. Das ist richtig, aber nur, wenn man die Wahrscheinlichkeit einer Kreditrückzahlung gleich einschätzt Wir haben die Faktoren, die die Kreditrückzahlung beeinflussen, nicht berücksichtigt: das Gehalt des Kreditnehmers und die Höhe der monatlichen Zahlung. Denken Sie daran, dass wir zuvor die Wahrscheinlichkeit der Rückzahlung des Kredits durch jeden Kunden unter Berücksichtigung derselben Faktoren berechnet haben. Es ist logisch, dass wir Wahrscheinlichkeiten erhalten haben, die sich von der Konstante unterscheiden .
Definieren wir die Wahrscheinlichkeit von Stichproben:
Code zur Berechnung der Stichprobenwahrscheinlichkeiten
from functools import reduce
def likelihood(y,p):
line_true_proba = []
for i in range(len(y)):
ltp_i = p[i]**y[i]*(1-p[i])**(1-y[i])
line_true_proba.append(ltp_i)
likelihood = []
return reduce(lambda a, b: a*b, line_true_proba)
y = [1.0,1.0,0.0]
p_log_response = df['Probability']
const = 2.0/3.0
p_const = [const, const, const]
print 'Правдоподобие выборки при константном значении p=2/3:', round(likelihood(y,p_const),3)
print '****************************************************************************************************'
print 'Правдоподобие выборки при расчетном значении p:', round(likelihood(y,p_log_response),3)
Stichprobenwahrscheinlichkeit bei einem konstanten Wert :
Stichprobenwahrscheinlichkeit bei der Berechnung der Wahrscheinlichkeit einer Kreditrückzahlung unter Berücksichtigung von Faktoren :
Die Wahrscheinlichkeit einer Stichprobe mit einer in Abhängigkeit von den Faktoren berechneten Wahrscheinlichkeit erwies sich als höher als die Wahrscheinlichkeit mit einem konstanten Wahrscheinlichkeitswert. Was bedeutet das? Dies deutet darauf hin, dass das Wissen über die Faktoren es ermöglichte, die Wahrscheinlichkeit der Kreditrückzahlung für jeden Kunden genauer auszuwählen. Daher wäre es bei der Vergabe des nächsten Kredits richtiger, das am Ende von Abschnitt 3 des Artikels vorgeschlagene Modell zur Beurteilung der Wahrscheinlichkeit der Schuldenrückzahlung zu verwenden.
Aber dann, wenn wir maximieren wollen Stichprobenwahrscheinlichkeitsfunktion, warum dann nicht einen Algorithmus verwenden, der Wahrscheinlichkeiten für Vasya, Fedya und Lesha erzeugt, beispielsweise gleich 0.99, 0.99 bzw. 0.01? Möglicherweise funktioniert ein solcher Algorithmus bei der Trainingsstichprobe gut, da er den Wahrscheinlichkeitswert der Stichprobe näher an ihn heranbringt , aber erstens wird ein solcher Algorithmus höchstwahrscheinlich Schwierigkeiten mit der Generalisierungsfähigkeit haben, und zweitens wird dieser Algorithmus definitiv nicht linear sein. Und wenn Methoden zur Bekämpfung von Übertraining (ebenso schwacher Generalisierungsfähigkeit) eindeutig nicht im Plan dieses Artikels enthalten sind, dann gehen wir den zweiten Punkt genauer durch. Beantworten Sie dazu einfach eine einfache Frage. Kann die Wahrscheinlichkeit, dass Vasya und Fedya den Kredit zurückzahlen, unter Berücksichtigung der uns bekannten Faktoren gleich sein? Aus der Sicht der vernünftigen Logik natürlich nicht, kann es nicht. Vasya zahlt also monatlich 2.5 % seines Gehalts für die Rückzahlung des Darlehens und Fedya fast 27,8 %. Auch in Grafik 2 „Klientenklassifizierung“ sehen wir, dass Vasya viel weiter von der Trennlinie zwischen den Klassen entfernt ist als Fedya. Und schließlich wissen wir, dass die Funktion für Vasya und Fedya nimmt unterschiedliche Werte an: 4.24 für Vasya und 1.0 für Fedya. Wenn nun Fedya zum Beispiel eine Größenordnung mehr verdienen würde oder einen kleineren Kredit beantragen würde, wären die Wahrscheinlichkeiten für die Rückzahlung des Kredits für Vasya und Fedya ähnlich. Mit anderen Worten: Die lineare Abhängigkeit lässt sich nicht täuschen. Und wenn wir die Chancen tatsächlich berechnet hätten , und sie nicht aus dem Nichts genommen haben, können wir mit Sicherheit sagen, dass unsere Werte Am besten können wir die Wahrscheinlichkeit der Rückzahlung des Kredits durch jeden Kreditnehmer abschätzen, aber da wir uns darauf geeinigt haben, davon auszugehen, dass die Koeffizienten bestimmt werden nach allen Regeln durchgeführt wurde, dann gehen wir davon aus - unsere Koeffizienten ermöglichen uns eine bessere Schätzung der Wahrscheinlichkeit :)
Wir schweifen jedoch ab. In diesem Abschnitt müssen wir verstehen, wie der Gewichtsvektor bestimmt wird , die notwendig ist, um die Wahrscheinlichkeit der Rückzahlung des Kredits durch jeden Kreditnehmer einzuschätzen.
Lassen Sie uns kurz zusammenfassen, mit welchem Arsenal wir nach Quoten suchen :
1. Wir gehen davon aus, dass der Zusammenhang zwischen der Zielgröße (Vorhersagewert) und dem das Ergebnis beeinflussenden Faktor linear ist. Aus diesem Grund wird es verwendet lineare Regressionsfunktion Spezies , deren Linie Objekte (Clients) in Klassen unterteilt и oder (Kunden, die in der Lage sind, den Kredit zurückzuzahlen, und solche, die es nicht können). In unserem Fall hat die Gleichung die Form .
2. Wir verwenden inverse Logit-Funktion Spezies um die Wahrscheinlichkeit zu bestimmen, dass ein Objekt zu einer Klasse gehört .
3. Wir betrachten unser Trainingsset als eine Implementierung einer verallgemeinerten Bernoulli-Schemata, das heißt, für jedes Objekt wird eine Zufallsvariable generiert, die mit Wahrscheinlichkeit (für jedes Objekt ein eigenes) nimmt den Wert 1 und mit Wahrscheinlichkeit an - 0.
4. Wir wissen, was wir maximieren müssen Stichprobenwahrscheinlichkeitsfunktion unter Berücksichtigung der akzeptierten Faktoren, damit die verfügbare Stichprobe am plausibelsten wird. Mit anderen Worten: Wir müssen Parameter auswählen, bei denen die Stichprobe am plausibelsten ist. In unserem Fall ist der gewählte Parameter die Wahrscheinlichkeit der Kreditrückzahlung , was wiederum von unbekannten Koeffizienten abhängt . Wir müssen also einen solchen Gewichtsvektor finden , bei dem die Wahrscheinlichkeit der Stichprobe maximal ist.
5. Wir wissen, was wir maximieren müssen Stichproben-Likelihood-Funktionen Sie können verwenden Maximum-Likelihood-Methode. Und wir kennen alle kniffligen Tricks, um mit dieser Methode zu arbeiten.
So stellt sich heraus, dass es sich um einen mehrstufigen Schritt handelt :)
Denken Sie daran, dass wir ganz am Anfang des Artikels zwei Arten von Verlustfunktionen ableiten wollten Logistischer Verlust abhängig davon, wie Objektklassen bezeichnet werden. So kam es, dass bei Klassifikationsproblemen mit zwei Klassen die Klassen als bezeichnet werden и oder . Abhängig von der Notation verfügt die Ausgabe über eine entsprechende Verlustfunktion.
Fall 1. Klassifizierung von Objekten in и
Früher wurde bei der Ermittlung der Wahrscheinlichkeit eine Stichprobe verwendet, bei der die Wahrscheinlichkeit der Schuldenrückzahlung durch den Kreditnehmer anhand von Faktoren und vorgegebenen Koeffizienten berechnet wurde , wir haben die Formel angewendet:
Tatsächlich ist die Bedeutung logistische Reaktionsfunktionen für einen gegebenen Gewichtsvektor
Dann hindert uns nichts daran, die Stichproben-Likelihood-Funktion wie folgt zu schreiben:
Es kommt vor, dass es für einige unerfahrene Analysten manchmal schwierig ist, sofort zu verstehen, wie diese Funktion funktioniert. Schauen wir uns 4 kurze Beispiele an, die alles klären:
1. wenn (d. h. laut Trainingsbeispiel gehört das Objekt zur Klasse +1) und unser Algorithmus bestimmt die Wahrscheinlichkeit, ein Objekt einer Klasse zuzuordnen gleich 0.9, dann wird die Wahrscheinlichkeit dieses Teils der Stichprobe wie folgt berechnet:
2. wenn Und , dann sieht die Berechnung so aus:
3. wenn Und , dann sieht die Berechnung so aus:
4. wenn Und , dann sieht die Berechnung so aus:
Es ist offensichtlich, dass die Wahrscheinlichkeitsfunktion in den Fällen 1 und 3 oder im allgemeinen Fall – bei richtig geschätzten Werten der Wahrscheinlichkeiten der Zuordnung eines Objekts zu einer Klasse – maximiert wird .
Aufgrund der Tatsache, dass bei der Bestimmung der Wahrscheinlichkeit der Zuordnung eines Objekts zu einer Klasse Wir kennen nur die Koeffizienten nicht , dann werden wir sie suchen. Wie oben erwähnt, handelt es sich hierbei um ein Optimierungsproblem, bei dem wir zunächst die Ableitung der Likelihood-Funktion nach dem Gewichtsvektor finden müssen . Zunächst ist es jedoch sinnvoll, die Aufgabe für uns selbst zu vereinfachen: Wir suchen nach der Ableitung des Logarithmus Wahrscheinlichkeitsfunktionen.
Warum nach Logarithmus, in Logistische Fehlerfunktionen, wir haben das Vorzeichen von geändert auf . Alles ist einfach, da es bei Problemen zur Beurteilung der Qualität eines Modells üblich ist, den Wert einer Funktion zu minimieren, indem wir die rechte Seite des Ausdrucks mit multiplizieren und dementsprechend minimieren wir nun die Funktion, anstatt sie zu maximieren.
Tatsächlich wurde gerade jetzt vor Ihren Augen die Verlustfunktion mühsam abgeleitet - Logistischer Verlust für einen Trainingssatz mit zwei Klassen: и .
Um nun die Koeffizienten zu finden, müssen wir nur noch die Ableitung finden Logistische Fehlerfunktionen Wählen Sie dann mithilfe numerischer Optimierungsmethoden wie Gradientenabstieg oder stochastischer Gradientenabstieg die optimalsten Koeffizienten aus . Angesichts des beträchtlichen Umfangs des Artikels wird jedoch empfohlen, die Differenzierung selbst durchzuführen, da dies möglicherweise ein Thema für den nächsten Artikel mit viel Arithmetik und ohne solche detaillierten Beispiele ist.
Fall 2. Klassifizierung von Objekten in и
Der Ansatz hier ist derselbe wie bei den Klassen и , sondern der Pfad selbst zur Ausgabe der Verlustfunktion Logistischer Verlust, wird verzierter sein. Lass uns anfangen. Für die Wahrscheinlichkeitsfunktion verwenden wir den Operator "wenn, dann...". Das heißt, wenn Das Objekt gehört zur Klasse , dann verwenden wir die Wahrscheinlichkeit, um die Wahrscheinlichkeit der Stichprobe zu berechnen , wenn das Objekt zur Klasse gehört , dann ersetzen wir in die Wahrscheinlichkeit . So sieht die Wahrscheinlichkeitsfunktion aus:
Lassen Sie uns an unseren Fingern beschreiben, wie es funktioniert. Betrachten wir 4 Fälle:
1. wenn и , dann wird die Stichprobenwahrscheinlichkeit „verschwinden“
2. wenn и , dann wird die Stichprobenwahrscheinlichkeit „verschwinden“
3. wenn и , dann wird die Stichprobenwahrscheinlichkeit „verschwinden“
4. wenn и , dann wird die Stichprobenwahrscheinlichkeit „verschwinden“
Es ist offensichtlich, dass in den Fällen 1 und 3, wenn die Wahrscheinlichkeiten vom Algorithmus korrekt bestimmt wurden, Wahrscheinlichkeitsfunktion maximiert wird, das heißt, das ist genau das, was wir erreichen wollten. Allerdings ist dieser Ansatz recht umständlich und als nächstes betrachten wir eine kompaktere Notation. Aber zuerst logarithmieren wir die Wahrscheinlichkeitsfunktion mit einem Vorzeichenwechsel, da wir sie jetzt minimieren werden.
Lassen Sie uns stattdessen ersetzen выражение :
Vereinfachen wir den richtigen Term mit einfachen arithmetischen Techniken durch den Logarithmus und erhalten wir:
Jetzt ist es an der Zeit, den Operator loszuwerden "wenn, dann...". Beachten Sie, dass bei einem Objekt gehört zur Klasse , dann im Ausdruck unter dem Logarithmus, im Nenner, zur Macht erhoben , wenn das Objekt zur Klasse gehört , dann wird $e$ potenziert . Daher lässt sich die Schreibweise des Abschlusses vereinfachen, indem man beide Fälle zu einem zusammenfasst: . dann Logistikfehlerfunktion wird die Form annehmen:
Nach den Regeln des Logarithmus drehen wir den Bruch um und setzen das Vorzeichen „" (minus) für den Logarithmus erhalten wir:
Hier ist die Verlustfunktion Logistikverlust, das im Trainingssatz mit Objekten verwendet wird, die Klassen zugewiesen sind: и .
Nun, an diesem Punkt verabschiede ich mich und wir schließen den Artikel ab.
Hilfsstoffe
1. Literatur
1) Angewandte Regressionsanalyse / N. Draper, G. Smith – 2. Aufl. – M.: Finanzen und Statistik, 1986 (Übersetzung aus dem Englischen)
2) Wahrscheinlichkeitstheorie und mathematische Statistik / V.E. Gmurman – 9. Auflage. - M.: Höhere Schule, 2003
3) Wahrscheinlichkeitstheorie / N.I. Tschernowa – Nowosibirsk: Staatliche Universität Nowosibirsk, 2007
4) Geschäftsanalyse: Von Daten zu Wissen / Paklin N. B., Oreshkov V. I. – 2. Aufl. — St. Petersburg: Peter, 2013
5) Data Science Data Science von Grund auf / Joel Gras – St. Petersburg: BHV Petersburg, 2017
6) Praktische Statistiken für Data Science-Spezialisten / P. Bruce, E. Bruce – St. Petersburg: BHV Petersburg, 2018
2. Vorlesungen, Kurse (Video)
1)
2)
3)
4)
5)
3. Internetquellen
1)
2)
4)
7)
Source: habr.com