
In diesem Artikel werden wir die theoretischen Grundlagen der Transformation analysieren der linearen Regressionsfunktion in die inverse Logit-Transformation (auch als logistische Antwortfunktion bezeichnet). Anschließend nutzen wir den Werkzeugkasten des Maximum-Likelihood-Verfahrens, um gemäß dem Modell der logistischen Regression die Verlustfunktion abzuleiten Logistic Loss, oder in anderen Worten, wir definieren die Funktion mit Hilfe derer in der logistischen Regression die Parameter des Gewichtungsvektors angepasst werden
.
Artikelübersicht:
- Wiederholen wir die lineare Abhängigkeit zwischen zwei Variablen
- Ermitteln wir die Notwendigkeit der Transformation der linearen Regressionsfunktion
in der logistischen Antwortfunktion 
- Wir führen die Transformationen durch und leiten ab der logistischen Antwortfunktion
- Wir versuchen zu verstehen, warum die Methode der kleinsten Quadrate bei der Anpassung von Parametern unzureichend ist
Funktionen Logistic Loss - Wir verwenden das Maximum-Likelihood-Verfahren um die Funktionsanpassung zu bestimmen
:5.1. Fall 1: Funktion Logistic Loss für Objekte mit Klassenbezeichnung 0 und 1:

5.2. Fall 2: Funktion Logistic Loss für Objekte mit Klassenbezeichnung -1 und +1:

Der Artikel enthält einfache Beispiele, bei denen alle Berechnungen leicht mündlich oder schriftlich vorgenommen werden können; in einigen Fällen könnte ein Taschenrechner erforderlich sein. Also bereiten Sie sich vor 🙂
Dieser Artikel richtet sich vor allem an Data Scientists mit Grundkenntnissen in den Grundlagen des maschinellen Lernens.
Im Artikel wird auch Code zur Erstellung von Grafiken und Berechnungen bereitgestellt. Der gesamte Code ist in python 2.7geschrieben. Ich möchte im Voraus auf die „Neuheit“ der verwendeten Version hinweisen – dies ist eine Voraussetzung für den Besuch eines bekannten Kurses von Yandex auf einer ebenso bekannten Online-Bildungsplattform Coursera, und wie man annehmen kann, wurde das Material basierend auf diesem Kurs vorbereitet.
01. Lineare Abhängigkeit
Es ist durchaus vernünftig, sich zu fragen – was hat die lineare Abhängigkeit mit der logistischen Regression zu tun?
Ganz einfach! Die logistische Regression ist ein Modell, das zu den linearen Klassifikatoren gehört. Mit einfachen Worten ist die Aufgabe eines linearen Klassifikators die Vorhersage von Zielwerten
aus den Variablen (Regressoren).
Dabei wird angenommen, dass die Abhängigkeit zwischen den Merkmalen
und den Zielwerten besteht.
linear. Daher stammt auch der Name des Klassifikators – linear. Grob zusammengefasst basiert das Modell der logistischen Regression auf der Annahme einer linearen Beziehung zwischen den Merkmalen.
und den Zielwerten besteht.
Hier ist sie – die Verbindung.
Im Studio das erste Beispiel, und es geht, wie sollte es anders sein, um die lineare Abhängigkeit der untersuchten Größen. Bei der Vorbereitung des Artikels bin ich auf ein Beispiel gestoßen, das vielen bereits bekannt ist – die Abhängigkeit der Stromstärke von der Spannung. ('Angewandte Regressionsanalyse', N. Draper, G. Smith). Hier betrachten wir es ebenfalls.
Gemäß dem Ohmschen Gesetz:
, wobei
– Stromstärke,
– Spannung,
– Widerstand.
Hätten wir das Ohmsche Gesetznicht gewusst, könnten wir die Abhängigkeit empirisch ermitteln, indem wir
variieren und
messen, wobei wir
konstant halten. Dann würden wir sehen, dass der Graph der Abhängigkeit
ab
eine mehr oder weniger gerade Linie zeigt, die durch den Ursprung verläuft. Wir sagen «mehr oder weniger», da, obwohl die Abhängigkeit tatsächlich genau ist, unsere Messungen kleine Fehler enthalten können, und daher könnten die Punkte auf dem Graphen nicht exakt auf der Linie liegen, sondern zufällig um sie herum verstreut sein.
Grafik 1 „Abhängigkeit“
ab
»

Code zur Darstellung des Diagramms
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 = 'Tatsächliche Ergebnisse')
plt.xlabel('I', size = 16)
plt.ylabel('U', size = 16)
plt.legend(prop = {'size': 14})
plt.show()02. Notwendigkeit der Transformationen der linearen Regressionsgleichung
Betrachten wir ein weiteres Beispiel. Stellen wir uns vor, wir arbeiten in einer Bank und haben die Aufgabe, die Wahrscheinlichkeit der Rückzahlung eines Kredits durch den Kreditnehmer in Abhängigkeit von bestimmten Faktoren zu bestimmen. Zur Vereinfachung der Aufgabe betrachten wir nur zwei Faktoren: das monatliche Gehalt des Kreditnehmers und die monatliche Rate zur Rückzahlung des Kredits.
Die Aufgabe ist sehr hypothetisch, aber anhand dieses Beispiels können wir verstehen, warum die Anwendung von der linearen Regressionsfunktion, nicht ausreicht und welche Transformationen mit der Funktion durchgeführt werden müssen.
Kehren wir zum Beispiel zurück. Es ist klar, dass je höher das Gehalt, desto mehr der Kreditnehmer monatlich zur Tilgung des Kredits aufbringen kann. Für einen bestimmten Gehaltsbereich wird diese Abhängigkeit jedoch durchaus linear sein. Nehmen wir zum Beispiel einen Gehaltsbereich von 60.000 € bis 200.000 € an und gehen wir davon aus, dass in diesem Gehaltsbereich die Beziehung zwischen der Höhe der monatlichen Zahlung und dem Gehalt linear ist. Angenommen, für den angegebenen Gehaltsbereich wurde festgestellt, dass das Verhältnis von Gehalt zu Zahlung nicht unter 3 fallen kann und der Kreditnehmer zudem einen Puffer von 5.000 € behalten muss. Nur in diesem Fall werden wir davon ausgehen, dass der Kreditnehmer den Kredit an die Bank zurückzahlt. Dann wird die Gleichung der linearen Regression wie folgt aussehen:

wobei
,
,
,
— Gehalt
des Kreditnehmers,
— Zahlung des Kredits
des Kreditnehmers.
Indem man das Gehalt und die Zahlung des Kredits mit festen Parametern in die Gleichung einsetzt,
kann eine Entscheidung über die Genehmigung oder Ablehnung des Kredits getroffen werden.
Vorweggenommen sei, dass bei festgelegten Parametern
die Funktion der linearen Regression, die in der logistischen Reaktionsfunktion angewendet wird. Es besteht die Gefahr, dass große Werte zu Schwierigkeiten bei der Berechnung der Wahrscheinlichkeiten für die Rückzahlung eines Kredits führen. Daher wird vorgeschlagen, unsere Koeffizienten um das 25.000-fache zu reduzieren. Diese Umwandlung der Koeffizienten wird die Entscheidung über die Kreditvergabe nicht beeinflussen. Behalten wir diesen Punkt für die Zukunft im Hinterkopf. Um das Thema noch klarer zu machen, betrachten wir die Situation mit drei potenziellen Kreditnehmern.
Tabelle 1 „Potenzielle Kreditnehmer“

Code zur Erstellung 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 = {'Der Kreditnehmer': np.array(['Vasya', 'Fedya', 'Lesha']),
'Gehalt': np.array([120000, 180000, 210000]),
'Zahlung': np.array([3000, 50000, 70000])}
df = pd.DataFrame(data)
df['f(w,x)'] = w_0 + df['Gehalt']*w_1 + df['Zahlung']*w_2
decision = []
for i in df['f(w,x)']:
if i > 0:
dec = 'Genehmigt'
decision.append(dec)
else:
dec = 'Ablehnung'
decision.append(dec)
df['Entscheidung'] = decision
df[['Der Kreditnehmer', 'Gehalt', 'Zahlung', 'f(w,x)', 'Entscheidung']]In Übereinstimmung mit den Daten in der Tabelle möchte Vasja bei einem Gehalt von 120.000 R eine Kreditaufnahme, die er monatlich mit 3.000 R zurückzahlen kann. Es wurde festgestellt, dass das Gehalt von Vasja dreimal so hoch sein muss wie die Rückzahlungsrate, und es müssen zusätzlich noch 5.000 R vorhanden sein. Dieses Kriterium erfüllt Vasja:
. Es bleiben sogar 106.000 R übrig. Obwohl wir bei der Berechnung
die Koeffizienten
um das 25.000-fache reduziert haben, bleibt das Ergebnis dasselbe – der Kredit kann genehmigt werden. Fedya wird ebenfalls einen Kredit erhalten, während Lesha, obwohl er das höchste Gehalt hat, seine Ansprüche herunterschrauben muss.
Lassen Sie uns für diesen Fall ein Diagramm zeichnen.
Diagramm 2 „Klassifizierung der Kreditnehmer“

Code zur Erstellung 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='Entscheidung - Kredit genehmigt')
plt.plot(df[df['Decision'] == 'Refusal']['Salary'], df[df['Decision'] == 'Refusal']['Payment'],
's', color='red', markersize=12, label='Entscheidung - Kredit abgelehnt')
plt.xlabel('Gehalt', size=16)
plt.ylabel('Zahlung', size=16)
plt.legend(prop={'size': 14})
plt.show()Unsere Gerade, die gemäß der Funktion konstruiert wurde,
, trennt die ‘schlechten’ Kreditnehmer von den ‘guten’. Kreditnehmer, deren Wünsche nicht mit ihren Möglichkeiten übereinstimmen, liegen über der Geraden (Alex), während diejenigen, die in der Lage sind, gemäß den Parametern unseres Modells den Kredit zurückzuzahlen, unter der Geraden liegen (Vasja und Fedja). Anders gesagt — unsere Gerade teilt die Kreditnehmer in zwei Klassen ein. Wir bezeichnen diese Klassen wie folgt: zur Klasse
gehörte die Kreditnehmer, die wahrscheinlich den Kredit zurückzahlen werden, zur Klasse
oder
gehörte die Kreditnehmer, die wahrscheinlich den Kredit nicht zurückzahlen können.
Fassen wir die Schlussfolgerungen aus diesem einfachen Beispiel zusammen. Nehmen wir einen Punkt
und setzen die Koordinaten des Punktes in die entsprechende Gleichung der Geraden ein,
, betrachten wir drei Varianten:
- Wenn der Punkt unter der Geraden liegt und wir ihn der Klasse
zuordnen, wird der Funktionswert
positiv von
bis zu
. Das bedeutet, dass wir annehmen können, dass die Wahrscheinlichkeit der Rückzahlung des Kredits im Bereich von
liegt. Je höher der Funktionswert, desto größer die Wahrscheinlichkeit. - Wenn der Punkt über der Geraden liegt und wir ihn der Klasse
oder
zuordnen, wird der Funktionswert negativ von
bis zu
. Dann gehen wir davon aus, dass die Wahrscheinlichkeit der Rückzahlung der Schulden innerhalb liegt
und je größer der Betrag der Funktion ist, desto höher ist unser Vertrauen. - Der Punkt liegt auf der Linie, an der Grenze zwischen zwei Klassen. In diesem Fall wird der Funktionswert
gleich sein
und die Wahrscheinlichkeit der Rückzahlung des Kredits beträgt
.
Stellen wir uns jetzt vor, dass wir nicht zwei Faktoren, sondern Dutzende haben, und nicht drei, sondern Tausende von Kreditnehmern. Statt einer Linie haben wir eine m-dimensionale Ebene und die Koeffizienten
werden nicht aus der Luft gegriffen, sondern nach allen Regeln abgeleitet, basierend auf den gesammelten Daten der Kreditnehmer, die ihren Kredit zurückgezahlt oder nicht zurückgezahlt haben. Tatsächlich selektieren wir gerade Kreditnehmer bei bereits bekannten Koeffizienten
. In Wirklichkeit besteht die Aufgabe des Modells der logistischen Regression darin, die Parameter zu bestimmen
, bei denen der Wert der Verlustfunktion Logistic Loss zu einem Minimum strebt. Aber wie der Vektor berechnet wird
, das erfahren wir noch im 5. Abschnitt des Artikels. Doch jetzt kehren wir zurück zur verheißenen Erde — zu unserem Banker und seinen drei Kunden.
Dank der Funktion
Wir wissen, wem man Kredit gewähren kann und wem nicht. Doch mit solchen Informationen kann man nicht zum Direktor gehen, da wir die Rückzahlungswahrscheinlichkeit jedes Kreditnehmers liefern sollten. Was tun? Die Antwort ist einfach – wir müssen die Funktion umwandeln,
deren Werte im Bereich liegen,
in eine Funktion um, deren Werte im Bereich liegen werden,
. Diese Funktion existiert und wird genannt, Logistic-Reaktionsfunktion oder Logit-Transformation.Lernen Sie kennen:

Sehen wir uns Schritt für Schritt an, wie die entsteht, Logistic-Reaktionsfunktion.Wir werden dabei rückwärts vorgehen, d.h. wir nehmen an, dass uns der Wahrscheinlichkeitswert bekannt ist, der zwischen
bis zu
liegt, und dann werden wir diesen Wert über den gesamten Zahlenbereich von
bis zu
.
03 ausdehnen. Wir leiten die Logistic-Reaktionsfunktion
Schritt 1. Wir übertragen die Wahrscheinlichkeitswerte in den Bereich, 
für die Dauer der Funktionsumwandlung.
in der logistischen Antwortfunktion
Wir lassen unseren Kreditanalysten in Ruhe und schauen stattdessen bei den Wettbüros vorbei. Natürlich werden wir keine Wetten platzieren; alles, was uns dort interessiert, ist der Sinn des Ausdrucks, zum Beispiel die Quote von 4 zu 1. Die Quoten, die allen Wettspielern bekannt sind, stellen das Verhältnis von 'Erfolgen' zu 'Misserfolgen' dar. Aus der Perspektive der Wahrscheinlichkeiten ist die Quote die Wahrscheinlichkeit des Eintretens eines Ereignisses geteilt durch die Wahrscheinlichkeit, dass das Ereignis nicht eintritt. Schreiben wir die Formel für die Chance des Eintretens eines Ereignisses auf.
:

, wobei
— die Wahrscheinlichkeit des Eintretens eines Ereignisses,
— die Wahrscheinlichkeit des NICHT-Eintretens eines Ereignisses.
Zum Beispiel, wenn die Wahrscheinlichkeit, dass das junge, starke und lebhafte Pferd mit dem Spitznamen „Winder“ die alte und schlaffe Dame mit dem Namen „Matilda“ im Rennen überholt, beträgt
, dann betragen die Chancen auf den Erfolg von „Winder“
zu
und umgekehrt, wenn wir die Quoten kennen, wird es uns leicht fallen, die Wahrscheinlichkeit zu berechnen.
:

So haben wir gelernt, die Wahrscheinlichkeit in Quoten zu 'übersetzen', die Werte von
bis zu
annehmen. Lassen Sie uns einen weiteren Schritt machen und lernen, die Wahrscheinlichkeit auf die gesamte Zahlenlinie von
bis zu
.
zu übersetzen. 
Dieser Schritt ist sehr einfach – wir logarithmieren die Wahrscheinlichkeiten zur Basis der Eulerschen Zahl.
und erhalten:

Jetzt wissen wir, dass wenn
, dann ist die Berechnung des Wertes
sehr einfach und, mehr noch, er sollte positiv sein:
. Das ist richtig.
Aus Neugier überprüfen wir, dass wenn
, dann erwarten wir einen negativen Wert
. Überprüfen wir:
. Alles stimmt.
Nun wissen wir, wie man den Wahrscheinlichkeitswert von
bis zu
auf die gesamte Zahlenlinie von
bis zu
überträgt. Im nächsten Schritt machen wir alles umgekehrt.
Doch zuvor beachten wir, dass gemäß den Logarithmierungsregeln, wenn wir den Funktionswert kennen
, können wir die Wahrscheinlichkeiten berechnen:

Diese Methode zur Bestimmung der Wahrscheinlichkeiten wird uns im nächsten Schritt nützlich sein.
Schritt 3. Wir leiten die Formel zur Bestimmung von 
Also haben wir gelernt, dass wenn wir
kennen, können wir die Werte der Funktion
finden. Doch tatsächlich müssen wir alles genau umgekehrt machen – wenn wir den Wert
kennen, müssen wir
finden. Dafür wenden wir das Konzept der inversen Wahrscheinlichkeitsfunktion an, gemäß dem:

Im Artikel werden wir die oben genannte Formel nicht ableiten, aber wir werden mit Zahlen aus dem obigen Beispiel überprüfen. Wir wissen, dass bei Quoten von 4 zu 1 (
), die Wahrscheinlichkeit des Eintretens des Ereignisses 0,8 entspricht (
). Lassen Sie uns substituieren:
. Das stimmt mit unseren zuvor durchgeführten Berechnungen überein. Lass uns fortfahren.
Im vorherigen Schritt haben wir herausgefunden, dass
, was bedeutet, dass wir eine Rücktransformation in die Chancenfunktion vornehmen können. Wir erhalten:

Wir teilen sowohl Zähler als auch Nenner durch
, dann:

Zur Sicherheit, um sicherzustellen, dass wir keinen Fehler gemacht haben, werden wir eine weitere kleine Prüfung durchführen. Im Schritt 2 haben wir für
festgestellt, dass
. Dann, indem wir den Wert
in die logistische Reaktionsfunktion einsetzen, erwarten wir zu erhalten
. Wir setzen ein und erhalten: 
Herzlichen Glückwunsch, geschätzter Leser, wir haben gerade die logistische Reaktionsfunktion abgeleitet und getestet. Lassen Sie uns den Graphen der Funktion ansehen.
Graph 3 „Logistische Reaktionsfunktion“

Code zur Erstellung 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 kann man diese Funktion auch als Sigmoidfunktionbezeichnen. Am Graphen ist deutlich zu erkennen, dass die Hauptänderung der Wahrscheinlichkeit, dass ein Objekt zur Klasse gehört, in einem relativ kleinen Bereich stattfindet
, ungefähr von
bis zu
.
Ich schlage vor, zu unserem Kreditanalytiker zurückzukehren und ihm bei der Berechnung der Rückzahlungswahrscheinlichkeit zu helfen, da er sonst das Risiko eingeht, ohne Prämie dazustehen. 🙂
Tabelle 2 „Potenzielle Kreditnehmer“

Code zur Erstellung der Tabelle
proba = []
for i in df['f(w,x)']:
proba.append(round(logit(i),2))
df['Wahrscheinlichkeit'] = proba
df[['Der Kreditnehmer', 'Gehalt', 'Zahlung', 'f(w,x)', 'Entscheidung', 'Wahrscheinlichkeit']]So haben wir die Wahrscheinlichkeit der Kredittilgung ermittelt. Insgesamt scheint das wahr zu sein.
In der Tat liegt die Wahrscheinlichkeit, dass Vasja mit einem Gehalt von 120.000 ₽ monatlich 3.000 ₽ an die Bank zurückzahlen kann, nah bei 100 %. Übrigens sollten wir verstehen, dass die Bank auch Lesha einen Kredit geben kann, vorausgesetzt, die Bankpolitik sieht vor, beispielsweise Kunden zu kreditieren, deren Rückzahlungswahrscheinlichkeit über 0,3 liegt. In diesem Fall würde die Bank einfach größere Rücklagen für mögliche Verluste bilden.
Es ist auch zu beachten, dass das Verhältnis von Gehalt zu Zahlung von mindestens 3 und mit einem Puffer von 5.000 ₽ willkürlich festgelegt wurde. Daher konnten wir den ursprünglichen Gewichtsvektor nicht so verwenden.
. Wir mussten die Koeffizienten erheblich reduzieren, und in diesem Fall haben wir jeden Koeffizienten durch 25.000 geteilt, was im Grunde genommen bedeutet, dass wir das Ergebnis angepasst haben. Dies wurde jedoch absichtlich so gemacht, um das Verständnis des Materials in der Anfangsphase zu erleichtern. Im echten Leben müssen wir die Koeffizienten nicht erfinden oder anpassen, sondern sie finden. In den folgenden Abschnitten des Artikels werden wir die Gleichungen präsentieren, mit denen die Parameter bestimmt werden.
.
04. Methode der kleinsten Quadrate zur Bestimmung des Gewichtungsvektors
in der logistischen Antwortfunktion
Wir kennen bereits diese Methode zur Anpassung des Gewichtungsvektors
genannt, wie Methode der kleinsten Quadrate (MNLK) und warum sollten wir sie dann nicht in den Aufgaben der binären Klassifikation verwenden? Tatsächlich steht nichts im Wege, sie zu verwenden, MSE, nur dass diese Methode in Klassifikationsaufgaben weniger präzise Ergebnisse liefert als Logistic Loss. Dafür gibt es eine theoretische Begründung. Lassen Sie uns zunächst ein einfaches Beispiel betrachten.
Angenommen, unsere Modelle (die MSE und Logistic Loss) haben bereits mit der Anpassung des Gewichtungsvektors begonnen.
und wir haben die Berechnung an einem Punkt gestoppt. Es ist egal, ob es in der Mitte, am Ende oder am Anfang war, das Wichtigste ist, dass wir bereits einige Werte für den Gewichtungsvektor haben und annehmen, dass wir an diesem Punkt die Gewichtungsvektoren haben.
für beide Modelle keine Unterschiede aufweisen. Nehmen wir also die erhaltenen Gewichte und setzen sie in der logistischen Antwortfunktion (
) für ein beliebiges Objekt ein, das zur Klasse gehört
. Untersuchen wir zwei Fälle, in denen unsere Modell gemäß dem festgelegten Gewichtungsvektor starke Fehler macht und umgekehrt — das Modell sehr sicher ist, dass das Objekt zur Klasse gehört
. Lassen Sie uns anschauen, welche Strafen bei der Verwendung von MSE und Logistic Loss.
der Code zur Berechnung der Strafen in Abhängigkeit 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_2Fall mit grobem Fehler — das Modell ordnet das Objekt der Klasse zu
mit einer Wahrscheinlichkeit von 0,01
Die Strafe bei Verwendung von MSE beträgt:

Die Strafe bei Verwendung von Logistic Loss beträgt:

Fall mit starker Sicherheit — das Modell ordnet das Objekt der Klasse zu
mit einer Wahrscheinlichkeit von 0,99
Die Strafe bei Verwendung von MSE beträgt:

Die Strafe bei Verwendung von Logistic Loss beträgt:

Dieses Beispiel veranschaulicht gut, dass bei grobem Fehler die Verlustfunktion Log Loss das Modell erheblich stärker bestraft als MSE. Lassen Sie uns nun klären, was die theoretischen Voraussetzungen für die Verwendung der Verlustfunktion Log Loss in Klassifikationsaufgaben sind.
05. Methode der maximalen Wahrscheinlichkeit und logistische Regression
Wie versprochen enthält der Artikel zahlreiche einfache Beispiele. Im Studio sehen wir ein weiteres Beispiel und alte Bekannte – die Bankkunden: Vasja, Fedja und Lesha.
Zur Sicherheit, bevor ich das Beispiel weiter ausführe, möchte ich daran erinnern, dass wir im wirklichen Leben mit einem Trainingsdatensatz von Tausenden oder Millionen von Objekten mit Dutzenden oder Hunderten von Merkmalen arbeiten. Hier wurden die Zahlen jedoch so gewählt, dass sie leicht im Kopf eines angehenden Data Scientists bleiben.
Lassen Sie uns an das Beispiel zurückdenken. Stellen Sie sich vor, der Direktor einer Bank beschließt, Kredite an alle Bedüftigen zu vergeben, obwohl der Algorithmus empfohlen hat, Alex keinen Kredit zu gewähren. Nach einiger Zeit erfahren wir, wer von den drei Protagonisten den Kredit zurückgezahlt hat und wer nicht. Wie zu erwarten war, haben Vasja und Fedja den Kredit zurückgezahlt, Alex jedoch nicht. Nun stellen wir uns vor, dieses Ergebnis wird für uns zu einer neuen Trainingsdatenbasis, während gleichzeitig alle Daten zu den Faktoren, die die Rückzahlungswahrscheinlichkeit beeinflussen (z.B. das Einkommen des Kreditnehmers, die Höhe der monatlichen Raten), verschwunden sind. Intuitiv können wir annehmen, dass jeder dritte Kreditnehmer den Kredit nicht zurückzahlt, oder anders ausgedrückt, die Wahrscheinlichkeit, dass der nächste Kreditnehmer den Kredit zurückzahlt, beträgt
. Diese intuitive Annahme hat theoretische Bestätigung und basiert auf dem Maximum-Likelihood-Verfahren, das in der Literatur oft als Maximum-Likelihood-Prinzip.
bezeichnet wird. Zunächst lassen Sie uns mit dem begrifflichen Rahmen vertraut machen.
Die Likelihood der Stichprobe ist die Wahrscheinlichkeit, genau diese Stichprobe und genau diese Beobachtungen/Ergebnisse zu erhalten, d.h. das Produkt der Wahrscheinlichkeiten, dass jede der Ergebnisse der Stichprobe eintritt (z.B. ob der Kredit von Vasya, Fedya und Lesha gleichzeitig zurückgezahlt wird oder nicht).
Die Likelihood-Funktion verbindet die Likelihood der Stichprobe mit den Werten der Verteilungsparameter.
In unserem Fall stellt die Trainingsstichprobe ein verallgemeinertes Bernoulli-Schema dar, bei dem die Zufallsgröße nur zwei Werte annimmt:
oder
. Folglich kann die Likelihood der Stichprobe als Likelihood-Funktion des Parameters geschrieben werden
$ ../..../waf ...


Die oben angegebene Darstellung kann wie folgt interpretiert werden. Die gemeinsame Wahrscheinlichkeit, dass Vasya und Fedya den Kredit zurückzahlen, beträgt
, die Wahrscheinlichkeit, dass Lesha den Kredit NICHT zurückzahlt, beträgt
da tatsächlich das NICHT-Zurückzahlen des Kredits eingetreten ist; folglich beträgt die gemeinsame Wahrscheinlichkeit aller drei Ereignisse
.
Das Maximum-Likelihood-Verfahren ist eine Methode zur Schätzung eines unbekannten Parameters durch Maximierung der Likelihood-Funktion.In unserem Fall muss ein Wert gefunden werden
, für den
das Maximum erreicht wird.
Woher stammt eigentlich die Idee, den Wert eines unbekannten Parameters zu suchen, bei dem die Likelihood-Funktion ihr Maximum erreicht? Die Wurzeln dieser Idee liegen in der Vorstellung, dass die Stichprobe die einzige verfügbare Informationsquelle über die Grundgesamtheit ist. Alles, was wir über die Grundgesamtheit wissen, wird durch die Stichprobe repräsentiert. Daher können wir nur sagen, dass die Stichprobe das genaueste Abbild der Grundgesamtheit ist, das uns zur Verfügung steht. Folglich müssen wir einen Parameter finden, bei dem die gegebene Stichprobe am wahrscheinlichsten ist.
Offensichtlich haben wir es mit einem Optimierungsproblem zu tun, bei dem ein Extrempunkt der Funktion gefunden werden muss. Um diesen Extrempunkt zu ermitteln, ist es notwendig, die Bedingung erster Ordnung zu betrachten, das heißt, die Ableitung der Funktion gleich null zu setzen und die Gleichung nach dem gesuchten Parameter zu lösen. Allerdings kann die Suche nach der Ableitung eines Produkts vieler Faktoren langwierig sein; um dies zu vermeiden, gibt es eine spezielle Methode – den Übergang zum Logarithmus. der Likelihood-Funktion.. Warum ist ein solcher Übergang möglich? Beachten wir, dass wir nicht das Extremum der Funktion selbst suchen,
, sondern den Punkt des Extrems, also den Wert des unbekannten Parameters,
, für den
der ein Maximum erreicht. Bei der Umstellung auf den Logarithmus bleibt der Extrempunkt unverändert (obwohl sich das Extremum selbst unterscheiden wird), da der Logarithmus eine monotone Funktion ist.
Lassen Sie uns, entsprechend dem Vorhergehenden, unser Beispiel mit den Krediten von Wassja, Fedja und Lesha weiterentwickeln. Zunächst wechseln wir zu dem Logarithmus der Wahrscheinlichkeitsfunktion.:

Jetzt können wir den Ausdruck leicht nach
:

differenzieren, und schließlich betrachten wir die Bedingung erster Ordnung — wir setzen die Ableitung der Funktion gleich null:

So wurde unsere intuitive Einschätzung der Wahrscheinlichkeit der Rückzahlung des Kredits
theoretisch untermauert.
Gut, aber was sollen wir jetzt mit dieser Information machen? Wenn wir annehmen, dass jeder dritte Kreditnehmer das Geld nicht an die Bank zurückzahlt, wird sie zwangsläufig in die Insolvenz gehen. So ist es, aber bei der Einschätzung der Wahrscheinlichkeit der Rückzahlung des Kredits gleich
Wir haben die Faktoren, die die Rückzahlung des Kredits beeinflussen, nicht berücksichtigt: das Einkommen des Kreditnehmers und die Höhe der monatlichen Zahlung. Denken wir daran, dass wir zuvor die Rückzahlungswahrscheinlichkeit für jeden Kunden unter Berücksichtigung dieser Faktoren berechnet haben. Es ist logisch, dass auch die Wahrscheinlichkeiten von der konstanten Annahme abweichen.
.
Lassen Sie uns die Wahrscheinlichkeiten der Stichproben definieren:
Code zur Berechnung der Wahrscheinlichkeiten der Stichproben
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 'Wahrscheinlichkeit der Stichprobe bei konstantem Wert p=2/3:', round(likelihood(y,p_const),3)
print '****************************************************************************************************'
print 'Wahrscheinlichkeit der Stichprobe bei berechnetem Wert p:', round(likelihood(y,p_log_response),3)Wahrscheinlichkeit der Stichprobe bei konstantem Wert
:

Wahrscheinlichkeit der Stichprobe bei der Berechnung der Rückzahlungsquote unter Berücksichtigung der Faktoren
:


Die Plausibilität der Stichprobe mit einer Wahrscheinlichkeit, die in Abhängigkeit von Faktoren berechnet wurde, war höher als die Plausibilität bei konstantem Wahrscheinlichkeitswert. Was bedeutet das? Es zeigt, dass das Wissen über die Faktoren es ermöglicht hat, die Rückzahlungswahrscheinlichkeit für jeden Kunden genauer zu bestimmen. Daher wäre es beim Ausgeben eines neuen Kredits sinnvoller, das im Abschnitt 3 am Ende der Studie vorgeschlagene Modell zur Bewertung der Rückzahlungswahrscheinlichkeit zu verwenden.
Aber wenn wir dann die Maximierung der Stichprobenwahrscheinlichkeit, warum sollten wir dann nicht einen Algorithmus verwenden, der die Wahrscheinlichkeiten für Vassja, Fedja und Lesha zum Beispiel auf 0,99, 0,99 und 0,01 setzt? Möglicherweise wird ein solcher Algorithmus in der Trainingsstichprobe gut abschneiden, da er den Wert der Stichprobenwahrscheinlichkeit näher an
, aber zunächst einmal wird es diese Algorithmen mit hoher Wahrscheinlichkeit schwerfallen, zu generalisieren. Zweitens wird dieser Algorithmus definitiv nicht linear sein. Und wenn Methoden gegen Überanpassung (die gleichbedeutend mit schwacher Generalisierungsfähigkeit ist) offensichtlich nicht Teil dieser Abhandlung sind, dann lassen Sie uns den zweiten Punkt näher betrachten. Dazu genügt es, eine einfache Frage zu beantworten. Kann die Wahrscheinlichkeit der Kreditrückzahlung von Vasya und Fedya unter Berücksichtigung der uns bekannten Faktoren gleich sein? Aus der Sicht gesunden Menschenverstandes sicherlich nicht, das kann sie nicht. Bei der Rückzahlung des Kredits wird Vasya 2,5 % seines Gehalts im Monat abgeben, während Fedya fast 27,8 % abführt. Auf Diagramm 2 "Kundenklassifizierung" sehen wir, dass Vasya erheblich weiter von der Linie entfernt ist, die die Klassen trennt, als Fedya. Und schließlich wissen wir, dass die Funktion
für Vasya und Fedya unterschiedliche Werte annimmt: 4,24 für Vasya und 1,0 für Fedya. Wenn Fedya beispielsweise um ein Vielfaches mehr verdienen oder einen kleineren Kredit beantragen würde, dann wären die Wahrscheinlichkeiten der Kreditrückzahlung von Vasya und Fedya ähnlich. Mit anderen Worten, eine lineare Abhängigkeit kann man nicht täuschen. Und wenn wir tatsächlich die Koeffizienten berechnet hätten
, und wenn wir sie nicht aus der Luft gegriffen hätten, könnten wir mit Zuversicht behaupten, dass unsere Werte
die beste Möglichkeit bieten, die Rückzahlungswahrscheinlichkeit für jeden Kreditnehmer zu bewerten. Da wir jedoch davon ausgegangen sind, dass die Berechnung der Koeffizienten
nach allen Regeln der Kunst durchgeführt wurde, nehmen wir weiterhin an - unsere Koeffizienten ermöglichen eine präzisere Bewertung dieser Wahrscheinlichkeit 🙂
Allerdings sind wir etwas vom Thema abgekommen. In diesem Abschnitt müssen wir klären, wie der Gewichtungsvektor bestimmt wird,
, der notwendig ist, um die Rückzahlungswahrscheinlichkeit für jeden Kreditnehmer zu bewerten.
Fassen wir kurz zusammen, mit welchem Arsenal wir auf der Suche nach den Koeffizienten antreten.
:
1. Wir gehen davon aus, dass die Abhängigkeit zwischen der Zielvariablen (Prognosewert) und dem Einflussfaktor - linear ist. Aus diesem Grund wird angewendet die Funktion der linearen Regression der Form
, dessen Linie die Objekte (Kunden) in Klassen unterteilt
und
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 die Funktion der inversen Logit-Transformation der Form
zur Bestimmung der Wahrscheinlichkeit, dass ein Objekt zur Klasse gehört
.
3. Wir betrachten unsere Trainingsstichprobe als eine Realisierung einer verallgemeinerten Bernoulli-Schemata, das heißt, für jedes Objekt wird eine Zufallsvariable generiert, die mit einer Wahrscheinlichkeit
(eigen für jedes Objekt) den Wert 1 annimmt und mit einer Wahrscheinlichkeit
– 0.
4. Wir wissen, dass wir maximieren müssen der Stichprobenwahrscheinlichkeit , unter Berücksichtigung der angenommenen Faktoren, damit die vorhandene Stichprobe am glaubwürdigsten ist. Mit anderen Worten, wir müssen Parameter auswählen, bei denen die Stichprobe am wenigsten glaubwürdig ist. In unserem Fall ist der zu findende Parameter die Wahrscheinlichkeit der Kreditrückzahlung
, die wiederum von unbekannten Koeffizienten abhängt
. Das bedeutet, wir müssen einen Gewichtungsvektor finden
, bei dem die Glaubwürdigkeit der Stichprobe maximiert wird.
5. Wir wissen, dass zur Maximierung der Glaubwürdigkeitsfunktion der Stichprobe verwendet werden kann das Maximum-Likelihood-Verfahren. Und wir kennen alle raffinierten Tricks, um mit dieser Methode zu arbeiten.
So entsteht eine komplexe Strategie 🙂
Und jetzt erinnern wir uns, dass wir zu Beginn des Artikels zwei Arten von Verlustfunktionen ableiten wollten Logistic Loss , abhängig davon, wie die Klassen der Objekte bezeichnet werden. In Klassifikationsaufgaben mit zwei Klassen ist es üblich, die Klassen als
und
oder
. Je nach Bezeichnung wird die entsprechende Verlustfunktion ausgegeben.
Fall 1. Klassifizierung von Objekten in
und 
Früher, bei der Bestimmung der Wahrscheinlichkeit der Datenstichprobe, bei der die Rückzahlungswahrscheinlichkeit des Darlehensnehmers auf Basis von Faktoren und vorgegebenen Koeffizienten berechnet wurde,
, haben wir die Formel angewendet:

Tatsächlich
— ist dieser Wert der logistischen Antwortfunktion
bei vorgegebener Gewichtungsstruktur. 
Dann steht nichts im Weg, die Stichprobenwahrscheinlichkeitsfunktion so zu formulieren:

Es kommt häufig vor, dass einigen Anfängern in der Analyse es schwer fällt sofort zu verstehen, wie diese Funktion funktioniert. Lassen Sie uns 4 kurze Beispiele betrachten, die alles klären werden:
1. Wenn
(d.h. gemäß dem Trainingsdatensatz gehört das Objekt zur Klasse +1), während unser Algorithmus
die Wahrscheinlichkeit bestimmt, dass das Objekt zur Klasse
gleich 0.9, dann wird dieses Stück der Stichprobenwahrscheinlichkeit so berechnet:

2. Wenn
, und
, dann wird die Berechnung so aussehen:

3. Wenn
, und
, dann wird die Berechnung so aussehen:

4. Wenn
, und
, dann wird die Berechnung so aussehen:

Offensichtlich wird die Wahrscheinlichkeitsfunktion in den Fällen 1 und 3 maximiert oder im allgemeinen Fall — bei richtig erratenen Wahrscheinlichkeiten für die Zuordnung des Objekts zur Klasse.
.
Da wir bei der Bestimmung der Wahrscheinlichkeit, dass ein Objekt einer Klasse zugeordnet wird,
nur die Koeffizienten unbekannt sind,
werden wir nach ihnen suchen. Wie bereits erwähnt, handelt es sich um ein Optimierungsproblem, bei dem wir zunächst die Ableitung der Likelihood-Funktion bezüglich des Gewichtvektors benötigen.
Es ist jedoch sinnvoll, die Aufgabe vorher zu vereinfachen: Wir werden die Ableitung vom Logarithmus berechnen. der Likelihood-Funktion..

Warum ändern wir nach der Logarithmierung in der logistischen Fehlerfunktiondas Vorzeichen?
findet man
Das ist einfach, denn bei der Bewertung der Modellgüte wird üblicherweise der Wert der Funktion minimiert, weshalb wir den rechten Ausdruck mit
multipliziert haben und somit anstelle von Maximierung die Funktion jetzt minimieren.
Tatsächlich wurde vor Ihren Augen eine verlustreiche Funktion abgeleitet — Logistic Loss für den Trainingsdatensatz mit zwei Klassen:
und
.
Nun müssen wir nur die Ableitung finden, logistischen Fehlerfunktion und anschließend die optimalen Koeffizienten mit numerischen Optimierungsmethoden wie dem Gradientenabstieg oder dem stochastischen Gradientenabstieg bestimmen.
. Angesichts des bereits umfangreichen Artikels wird empfohlen, die Differenzierung selbst vorzunehmen oder vielleicht wird dies das Thema für den nächsten Artikel sein, der mehr Mathematik ohne so ausführliche Beispiele beinhaltet.
Fall 2. Klassifizierung von Objekten in
und 
Der Ansatz ist der gleiche wie bei den Klassen
und
, aber der Weg zur Berechnung der Verlustfunktion Logistic Loss, wird komplexer sein. Lass uns beginnen. Wir verwenden für die Likelihood-Funktion den Operator „wenn…, dann…“. Das heißt, wenn
-tes Objekt zur Klasse
gehört, verwenden wir für die Berechnung der Wahrscheinlichkeit der Stichprobe die Wahrscheinlichkeit
, wenn das Objekt zur Klasse
gehört, setzen wir in die Likelihood
. So sieht die Likelihood-Funktion aus:

Lass uns im Detail durchgehen, wie das funktioniert. Betrachten wir 4 Fälle:
1. Wenn
und
, dann wird in die Likelihood der Stichprobe „eingefügt“ 
2. Wenn
und
, dann wird in die Likelihood der Stichprobe „eingefügt“ 
3. Wenn
und
, dann wird in die Likelihood der Stichprobe „eingefügt“ 
4. Wenn
und
, dann wird in die Likelihood der Stichprobe „eingefügt“ 
Offensichtlich war in Fall 1 und 3, als die Wahrscheinlichkeiten korrekt vom Algorithmus bestimmt wurden, die Likelihood-Funktion wird maximiert, genau das wollten wir erreichen. Dieser Ansatz ist jedoch recht umständlich, und daher werden wir eine kompaktere Darstellung betrachten. Lassen Sie uns jedoch zunächst die Wahrscheinlichkeitsfunktion logarithmieren, indem wir das Vorzeichen ändern, da wir sie nun minimieren wollen.

Setzen wir statt
dem Ausdruck
:

Vereinfachen wir den rechten Summanden im Logarithmus, indem wir einfache arithmetische Verfahren anwenden, und erhalten:

Jetzt ist es an der Zeit, uns vom Operator „wenn…, dann…“. Beachten Sie, dass wenn das Objekt
zur Klasse
gehört, dann im Ausdruck unter dem Logarithmus, im Nenner,
hochgespielt wird
, wenn das Objekt zur Klasse
, dann wird $e$ hochgespielt
. Folglich kann die Schreibweise der Potenz vereinfacht werden – beide Fälle in einen zusammengeführt werden:
. Dann die Funktion des logistischen Fehlers die folgende Form:

Gemäß den Logarithmierungsregeln kehren wir den Bruch um und bringen das Zeichen "
" (Minus) vor den Logarithmus, erhalten wir:

Vor Ihnen steht die Verlustfunktion logistic Loss, die in der Trainingsstichprobe für Objekte angewendet wird, die den Klassen angehören:
und
.
Nun verabschiede ich mich an dieser Stelle und wir beenden den Artikel.
Vorherige Arbeit des Autors – „Die Gleichung der linearen Regression in matrixform bringen“
Hilfsmaterialien
1. Literatur
1) Angewandte Regressionsanalyse / N. Draper, G. Smith – 2. Auflage – Moskau: Finanzen und Statistik, 1986 (Übersetzung aus dem Englischen)
2) Wahrscheinlichkeitstheorie und mathematische Statistik / V.E. Gmurmam – 9. Auflage – Moskau: Hochschule, 2003
3) Wahrscheinlichkeitstheorie / N.I. Tschernowa – Nowosibirsk: Staatliche Universität Nowosibirsk, 2007
4) Business-Analyse: Von Daten zu Wissen / Pakhlin N. B., Oreshkov V. I. – 2. Auflage – Sankt Petersburg: Peter, 2013
5) Data Science: Wissenschaft der Daten von Grund auf / Joel Grass – Sankt Petersburg: BHV Peterburg, 2017
6) Praktische Statistik für Data Science-Spezialisten / P. Bruce, E. Bruce – Sankt Petersburg: BHV Peterburg, 2018
2. Vorlesungen, Kurse (Video)
1)
2)
3)
4)
5)
3. Internetquellen
1)
2)
3)
4)
5)
6)
7)
8)
Quelle: habr.com

in der logistischen Antwortfunktion 
Funktionen Logistic Loss
:

zuordnen, wird der Funktionswert
positiv von
bis zu
. Das bedeutet, dass wir annehmen können, dass die Wahrscheinlichkeit der Rückzahlung des Kredits im Bereich von
liegt. Je höher der Funktionswert, desto größer die Wahrscheinlichkeit.
oder
zuordnen, wird der Funktionswert negativ von
bis zu
. Dann gehen wir davon aus, dass die Wahrscheinlichkeit der Rückzahlung der Schulden innerhalb liegt
und je größer der Betrag der Funktion ist, desto höher ist unser Vertrauen.
gleich sein
und die Wahrscheinlichkeit der Rückzahlung des Kredits beträgt
.


in der logistischen Antwortfunktion
und 
und 