Tygger på logistisk regression

Tygger på logistisk regression

I denne artikel vil vi analysere de teoretiske beregninger af transformationen lineære regressionsfunktioner в invers logit-transformationsfunktion (også kaldet logistisk responsfunktion). Brug derefter arsenalet maksimal sandsynlighed metode, i overensstemmelse med den logistiske regressionsmodel udleder vi tabsfunktionen Logistisk tab, eller med andre ord vil vi definere en funktion, hvormed vægtvektorens parametre vælges i den logistiske regressionsmodel Tygger på logistisk regression.

Artikeloversigt:

  1. Lad os gentage den lineære sammenhæng mellem to variable
  2. Lad os identificere behovet for transformation lineære regressionsfunktioner Tygger på logistisk regression в logistisk responsfunktion Tygger på logistisk regression
  3. Lad os udføre transformationerne og outputtet logistisk responsfunktion
  4. Lad os prøve at forstå, hvorfor mindste kvadraters metode er dårlig, når du vælger parametre Tygger på logistisk regression funktioner Logistisk tab
  5. Vi bruger maksimal sandsynlighed metode til at bestemme parametervalgsfunktioner Tygger på logistisk regression:

    5.1. Case 1: funktion Logistisk tab for genstande med klassebetegnelser 0 и 1:

    Tygger på logistisk regression

    5.2. Case 2: funktion Logistisk tab for genstande med klassebetegnelser -1 и +1:

    Tygger på logistisk regression


Artiklen er fyldt med enkle eksempler, hvor alle udregninger er nemme at lave mundtligt eller på papir; i nogle tilfælde kan en lommeregner være påkrævet. Så gør dig klar :)

Denne artikel er primært beregnet til dataforskere med et indledende niveau af viden om det grundlæggende i maskinlæring.

Artiklen vil også give kode til at tegne grafer og beregninger. Al kode er skrevet på sproget python 2.7. Lad mig forklare på forhånd om "nyheden" af den brugte version - dette er en af ​​betingelserne for at tage det velkendte kursus fra Yandex på en lige så kendt online uddannelsesplatform Coursera, og som man kunne antage, blev materialet udarbejdet på baggrund af dette kursus.

01. Ligelinjet afhængighed

Det er ganske rimeligt at stille spørgsmålet - hvad har lineær afhængighed og logistisk regression med det at gøre?

Det er simpelt! Logistisk regression er en af ​​de modeller, der hører til den lineære klassifikator. Med enkle ord er opgaven for en lineær klassifikator at forudsige målværdier Tygger på logistisk regression fra variabler (regressorer) Tygger på logistisk regression. Det menes, at afhængigheden mellem egenskaberne Tygger på logistisk regression og målværdier Tygger på logistisk regression lineær. Deraf navnet på klassificereren - lineær. For at sige det meget groft er den logistiske regressionsmodel baseret på den antagelse, at der er en lineær sammenhæng mellem karakteristikkerne Tygger på logistisk regression og målværdier Tygger på logistisk regression. Dette er forbindelsen.

Der er det første eksempel i studiet, og det handler, korrekt, om den retlinede afhængighed af de mængder, der undersøges. I processen med at forberede artiklen stødte jeg på et eksempel, der allerede har sat mange mennesker på kant - spændingens afhængighed af strøm ("Anvendt regressionsanalyse", N. Draper, G. Smith). Vi vil også se på det her.

I overensstemmelse med Ohms lov:

Tygger på logistisk regressionHvor Tygger på logistisk regression - nuværende styrke, Tygger på logistisk regression - spænding, Tygger på logistisk regression - modstand.

Hvis vi ikke vidste det Ohms lov, så kunne vi finde afhængigheden empirisk ved at ændre Tygger på logistisk regression og måling Tygger på logistisk regression, mens du støtter Tygger på logistisk regression fast. Så ville vi se, at afhængighedsgrafen Tygger på logistisk regression fra Tygger på logistisk regression giver en mere eller mindre lige linje gennem oprindelsen. Vi siger "mere eller mindre", fordi selvom forholdet faktisk er nøjagtigt, kan vores målinger indeholde små fejl, og derfor falder punkterne på grafen muligvis ikke nøjagtigt på linjen, men vil blive spredt rundt om den tilfældigt.

Graf 1 "Afhængighed" Tygger på logistisk regression fra Tygger på logistisk regression»

Tygger på logistisk regression

Kode for diagramtegning

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. Behovet for at transformere den lineære regressionsligning

Lad os se på et andet eksempel. Lad os forestille os, at vi arbejder i en bank, og vores opgave er at bestemme sandsynligheden for, at låntageren tilbagebetaler lånet afhængigt af visse faktorer. For at forenkle opgaven vil vi kun overveje to faktorer: låntagerens månedlige løn og det månedlige tilbagebetalingsbeløb.

Opgaven er meget betinget, men med dette eksempel kan vi forstå, hvorfor det ikke er nok at bruge lineære regressionsfunktioner, og find også ud af hvilke transformationer der skal udføres med funktionen.

Lad os vende tilbage til eksemplet. Det er underforstået, at jo højere løn, jo mere vil låntager være i stand til at afsætte månedligt til at tilbagebetale lånet. Samtidig vil dette forhold for et vist løninterval være ret lineært. Lad os for eksempel tage et løninterval fra 60.000 RUR til 200.000 RUR og antage, at i det angivne løninterval er afhængigheden af ​​størrelsen af ​​den månedlige betaling af lønnens størrelse lineær. Lad os sige, at for det angivne løninterval blev det afsløret, at løn-til-betalingsforholdet ikke kan falde til under 3, og låntageren skal stadig have 5.000 RUR i reserve. Og kun i dette tilfælde vil vi antage, at låntageren vil tilbagebetale lånet til banken. Derefter vil den lineære regressionsligning have formen:

Tygger på logistisk regression

где Tygger på logistisk regression, Tygger på logistisk regression, Tygger på logistisk regression, Tygger på logistisk regressionløn Tygger på logistisk regression-th låntager, Tygger på logistisk regressionudbetaling af lån Tygger på logistisk regression-th låntager.

Substitution af løn og lånebetaling med faste parametre i ligningen Tygger på logistisk regression Du kan beslutte, om du vil udstede eller afslå et lån.

Ser vi fremad, bemærker vi, at med de givne parametre Tygger på logistisk regression lineær regressionsfunktion, brugt i logistiske responsfunktioner vil producere store værdier, der vil komplicere beregninger for at bestemme sandsynligheden for tilbagebetaling af lån. Derfor foreslås det at reducere vores koefficienter, lad os sige, med 25.000 gange. Denne transformation af koefficienterne vil ikke ændre beslutningen om at udstede et lån. Lad os huske dette punkt for fremtiden, men lad os nu, for at gøre det endnu tydeligere, hvad vi taler om, overveje situationen med tre potentielle låntagere.

Tabel 1 "Potentielle låntagere"

Tygger på logistisk regression

Kode til generering af tabellen

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']]

I overensstemmelse med dataene i tabellen ønsker Vasya, med en løn på 120.000 RUR, at modtage et lån, så han kan tilbagebetale det månedligt til 3.000 RUR. Vi fastslog, at for at kunne godkende lånet skal Vasyas løn overstige tre gange beløbet for betalingen, og der skal stadig være 5.000 RUR tilbage. Vasya opfylder dette krav: Tygger på logistisk regression. Selv 106.000 RUR er tilbage. På trods af at der ved beregning Tygger på logistisk regression vi har reduceret oddsene Tygger på logistisk regression 25.000 gange blev resultatet det samme – lånet kan godkendes. Fedya vil også modtage et lån, men Lesha, på trods af at han får mest, bliver nødt til at dæmpe lysten.

Lad os tegne en graf for denne sag.

Figur 2 "Klassificering af låntagere"

Tygger på logistisk regression

Kode til at tegne grafen

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()

Så vores lige linje, konstrueret i overensstemmelse med funktionen Tygger på logistisk regression, adskiller "dårlige" låntagere fra "gode" låntagere. De låntagere, hvis ønsker ikke falder sammen med deres evner, er over linjen (Lesha), mens de, der ifølge parametrene i vores model er i stand til at tilbagebetale lånet, er under linjen (Vasya og Fedya). Med andre ord kan vi sige dette: Vores direkte linje opdeler låntagere i to klasser. Lad os betegne dem som følger: til klasse Tygger på logistisk regression Vi vil klassificere de låntagere, der har størst sandsynlighed for at tilbagebetale lånet som Tygger på logistisk regression eller Tygger på logistisk regression Vi vil inkludere de låntagere, som højst sandsynligt ikke vil være i stand til at tilbagebetale lånet.

Lad os opsummere konklusionerne fra dette simple eksempel. Lad os tage et punkt Tygger på logistisk regression og substituere koordinaterne for punktet i den tilsvarende ligning for linjen Tygger på logistisk regression, overvej tre muligheder:

  1. Hvis punktet er under stregen, og vi tildeler det til klassen Tygger på logistisk regression, derefter værdien af ​​funktionen Tygger på logistisk regression vil være positiv fra Tygger på logistisk regression til Tygger på logistisk regression. Det betyder, at vi kan antage, at sandsynligheden for at tilbagebetale lånet er indenfor Tygger på logistisk regression. Jo større funktionsværdien er, jo højere er sandsynligheden.
  2. Hvis et punkt er over en linje, og vi tildeler det til klassen Tygger på logistisk regression eller Tygger på logistisk regression, så vil værdien af ​​funktionen være negativ fra Tygger på logistisk regression til Tygger på logistisk regression. Så vil vi antage, at sandsynligheden for tilbagebetaling af gæld er indenfor Tygger på logistisk regression og jo større den absolutte værdi af funktionen er, jo højere er vores tillid.
  3. Punktet er på en lige linje, på grænsen mellem to klasser. I dette tilfælde værdien af ​​funktionen Tygger på logistisk regression vil være lige Tygger på logistisk regression og sandsynligheden for at tilbagebetale lånet er lig med Tygger på logistisk regression.

Lad os nu forestille os, at vi ikke har to faktorer, men snesevis og ikke tre, men tusindvis af låntagere. Så i stedet for en lige linje vil vi have m-dimensional plan og koefficienter Tygger på logistisk regression vi bliver ikke taget ud af den blå luft, men afledt efter alle regler, og på baggrund af akkumulerede data om låntagere, der har eller ikke har tilbagebetalt lånet. Og bemærk, at vi nu udvælger låntagere ved hjælp af allerede kendte koefficienter Tygger på logistisk regression. Faktisk er opgaven med den logistiske regressionsmodel netop at bestemme parametrene Tygger på logistisk regression, hvor værdien af ​​tabet fungerer Logistisk tab vil tendere til et minimum. Men om hvordan vektoren beregnes Tygger på logistisk regression, vil vi finde ud af mere i artiklens 5. afsnit. I mellemtiden vender vi tilbage til det forjættede land - til vores bankmand og hans tre klienter.

Takket være funktionen Tygger på logistisk regression vi ved, hvem der kan få et lån, og hvem der skal nægtes. Men du kan ikke gå til direktøren med sådanne oplysninger, fordi de ønskede at få fra os sandsynligheden for tilbagebetaling af lånet af hver låntager. Hvad skal man gøre? Svaret er enkelt - vi skal på en eller anden måde transformere funktionen Tygger på logistisk regression, hvis værdier ligger i området Tygger på logistisk regression til en funktion, hvis værdier vil ligge i området Tygger på logistisk regression. Og sådan en funktion findes, hedder det logistisk responsfunktion eller invers-logit-transformation. Møde:

Tygger på logistisk regression

Lad os se trin for trin, hvordan det fungerer logistisk responsfunktion. Bemærk at vi vil gå i den modsatte retning, dvs. vil vi antage, at vi kender sandsynlighedsværdien, som ligger i intervallet fra Tygger på logistisk regression til Tygger på logistisk regression og så vil vi "afvikle" denne værdi til hele rækken af ​​tal fra Tygger på logistisk regression til Tygger på logistisk regression.

03. Vi udleder den logistiske responsfunktion

Trin 1. Konverter sandsynlighedsværdierne til et interval Tygger på logistisk regression

Under transformationen af ​​funktionen Tygger på logistisk regression в logistisk responsfunktion Tygger på logistisk regression Vi lader vores kreditanalytiker være i fred og tager en rundvisning hos bookmakerne i stedet for. Nej, selvfølgelig vil vi ikke placere væddemål, det eneste, der interesserer os, er meningen med udtrykket, for eksempel er chancen 4 til 1. Oddsene, som alle spillere kender, er forholdet mellem "succeser" og " fiaskoer”. I sandsynlighedstermer er odds sandsynligheden for, at en begivenhed indtræffer divideret med sandsynligheden for, at begivenheden ikke indtræffer. Lad os nedskrive formlen for chancen for, at en begivenhed indtræffer Tygger på logistisk regression:

Tygger på logistisk regression

Hvor Tygger på logistisk regression - sandsynligheden for, at en begivenhed indtræffer, Tygger på logistisk regression — sandsynligheden for, at en begivenhed IKKE indtræffer

Hvis f.eks. sandsynligheden for, at en ung, stærk og legende hest med tilnavnet "Veterok" vil slå en gammel og slap gammel kvinde ved navn "Matilda" ved et løb, er lig med Tygger på logistisk regression, så vil chancerne for succes for “Veterok” være Tygger på logistisk regression к Tygger på logistisk regression Tygger på logistisk regression og vice versa, ved at kende oddsene, vil det ikke være svært for os at beregne sandsynligheden Tygger på logistisk regression:

Tygger på logistisk regression

Således har vi lært at "oversætte" sandsynlighed til chancer, som tager værdier fra Tygger på logistisk regression til Tygger på logistisk regression. Lad os tage et skridt mere og lære at "oversætte" sandsynligheden til hele tallinjen fra Tygger på logistisk regression til Tygger på logistisk regression.

Trin 2. Konverter sandsynlighedsværdierne til et interval Tygger på logistisk regression

Dette trin er meget enkelt - lad os tage logaritmen af ​​oddsene til bunden af ​​Eulers tal Tygger på logistisk regression og vi får:

Tygger på logistisk regression

Nu ved vi, at hvis Tygger på logistisk regression, og beregn derefter værdien Tygger på logistisk regression vil være meget enkel, og desuden bør det være positivt: Tygger på logistisk regression. Det er rigtigt.

Af nysgerrighed, lad os tjekke hvad nu hvis Tygger på logistisk regression, så forventer vi at se en negativ værdi Tygger på logistisk regression. Vi tjekker: Tygger på logistisk regression. Det er rigtigt.

Nu ved vi, hvordan man konverterer sandsynlighedsværdien fra Tygger på logistisk regression til Tygger på logistisk regression langs hele tallinjen fra Tygger på logistisk regression til Tygger på logistisk regression. I det næste trin gør vi det modsatte.

For nu bemærker vi, at i overensstemmelse med logaritmereglerne, at kende værdien af ​​funktionen Tygger på logistisk regression, kan du beregne oddsene:

Tygger på logistisk regression

Denne metode til at bestemme odds vil være nyttig for os i det næste trin.

Trin 3. Lad os udlede en formel til at bestemme Tygger på logistisk regression

Så vi lærte, vel vidende Tygger på logistisk regression, find funktionsværdier Tygger på logistisk regression. Men faktisk har vi brug for præcis det modsatte - at kende værdien Tygger på logistisk regression Find Tygger på logistisk regression. For at gøre dette, lad os vende os til et sådant koncept som den omvendte odds-funktion, ifølge hvilken:

Tygger på logistisk regression

I artiklen vil vi ikke udlede ovenstående formel, men vi vil kontrollere det ved hjælp af tallene fra eksemplet ovenfor. Vi ved det med odds 4 til 1 (Tygger på logistisk regression), er sandsynligheden for, at hændelsen indtræffer 0.8 (Tygger på logistisk regression). Lad os lave en erstatning: Tygger på logistisk regression. Dette falder sammen med vores tidligere beregninger. Lad os gå videre.

I det sidste trin udledte vi det Tygger på logistisk regression, hvilket betyder, at du kan foretage en udskiftning i den omvendte odds-funktion. Vi får:

Tygger på logistisk regression

Divider både tæller og nævner med Tygger på logistisk regression, Derefter:

Tygger på logistisk regression

For en sikkerheds skyld, for at være sikker på, at vi ikke har lavet en fejl nogen steder, så lad os lave en lille kontrol mere. I trin 2 har vi for Tygger på logistisk regression bestemt det Tygger på logistisk regression. Derefter erstatter du værdien Tygger på logistisk regression ind i den logistiske responsfunktion, forventer vi at få Tygger på logistisk regression. Vi erstatter og får: Tygger på logistisk regression

Tillykke, kære læser, vi har netop udledt og testet den logistiske svarfunktion. Lad os se på grafen for funktionen.

Graf 3 "Logistisk responsfunktion"

Tygger på logistisk regression

Kode til at tegne grafen

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()

I litteraturen kan du også finde navnet på denne funktion som sigmoid funktion. Grafen viser tydeligt, at hovedændringen i sandsynligheden for et objekt, der tilhører en klasse, sker inden for et relativt lille område Tygger på logistisk regression, et sted fra Tygger på logistisk regression til Tygger på logistisk regression.

Jeg foreslår, at du vender tilbage til vores kreditanalytiker og hjælper ham med at beregne sandsynligheden for tilbagebetaling af lånet, ellers risikerer han at stå uden bonus :)

Tabel 2 "Potentielle låntagere"

Tygger på logistisk regression

Kode til generering af tabellen

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']]

Så vi har bestemt sandsynligheden for tilbagebetaling af lånet. Generelt ser dette ud til at være sandt.

Sandsynligheden for, at Vasya med en løn på 120.000 RUR vil være i stand til at give 3.000 RUR til banken hver måned er tæt på 100%. I øvrigt skal vi forstå, at en bank kan udstede et lån til Lesha, hvis bankens politik for eksempel giver mulighed for udlån til kunder med en sandsynlighed for tilbagebetaling af lån på mere end f.eks. 0.3. Det er bare, at i dette tilfælde vil banken skabe en større reserve for mulige tab.

Det skal også bemærkes, at løn-til-betaling-forholdet på mindst 3 og med en margin på 5.000 RUR blev taget fra loftet. Derfor kunne vi ikke bruge vektoren af ​​vægte i sin oprindelige form Tygger på logistisk regression. Vi var nødt til at reducere koefficienterne kraftigt, og i dette tilfælde dividerede vi hver koefficient med 25.000, det vil sige, at vi i det væsentlige justerede resultatet. Men dette blev gjort specifikt for at forenkle forståelsen af ​​materialet i den indledende fase. I livet behøver vi ikke opfinde og justere koefficienter, men finde dem. I de næste afsnit af artiklen vil vi udlede de ligninger, som parametrene er valgt med Tygger på logistisk regression.

04. Mindste kvadraters metode til bestemmelse af vektoren af ​​vægte Tygger på logistisk regression i den logistiske responsfunktion

Vi kender allerede denne metode til at vælge en vektor af vægte Tygger på logistisk regressionSom mindste kvadraters metode (LSM) og faktisk, hvorfor bruger vi det så ikke i binære klassifikationsproblemer? Intet forhindrer dig i at bruge MNC, kun denne metode i klassifikationsproblemer giver resultater, der er mindre nøjagtige end Logistisk tab. Det er der et teoretisk grundlag for. Lad os først se på et enkelt eksempel.

Lad os antage, at vores modeller (ved hjælp af MSE и Logistisk tab) er allerede begyndt at vælge vektoren af ​​vægte Tygger på logistisk regression og vi stoppede beregningen på et tidspunkt. Det er ligegyldigt om i midten, i slutningen eller i begyndelsen, det vigtigste er, at vi allerede har nogle værdier af vektoren af ​​vægte, og lad os antage, at på dette trin, vektoren af ​​vægte Tygger på logistisk regression for begge modeller er der ingen forskelle. Tag derefter de resulterende vægte og sæt dem i logistisk responsfunktion (Tygger på logistisk regression) for et eller andet objekt, der tilhører klassen Tygger på logistisk regression. Vi undersøger to tilfælde, hvor vores model i overensstemmelse med den valgte vektor af vægte tager meget fejl og omvendt - modellen er meget sikker på, at objektet tilhører klassen Tygger på logistisk regression. Lad os se, hvilke bøder der vil blive udstedt ved brug MNC и Logistisk tab.

Kode til at beregne bøder afhængigt af den anvendte tabsfunktion

# класс объекта
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

Et tilfælde af en bommert — modellen tildeler et objekt til en klasse Tygger på logistisk regression med en sandsynlighed på 0,01

Straf ved brug MNC vil være:
Tygger på logistisk regression

Straf ved brug Logistisk tab vil være:
Tygger på logistisk regression

Et tilfælde af stærk tillid — modellen tildeler et objekt til en klasse Tygger på logistisk regression med en sandsynlighed på 0,99

Straf ved brug MNC vil være:
Tygger på logistisk regression

Straf ved brug Logistisk tab vil være:
Tygger på logistisk regression

Dette eksempel illustrerer godt, at tabsfunktionen i tilfælde af en grov fejl Logtab straffer modellen væsentligt mere end MSE. Lad os nu forstå, hvad den teoretiske baggrund er for at bruge tabsfunktionen Logtab i klassifikationsproblemer.

05. Maximum likelihood metode og logistisk regression

Som lovet i begyndelsen er artiklen fyldt med simple eksempler. I studiet er der et andet eksempel og gamle gæster - banklåntagere: Vasya, Fedya og Lesha.

For en sikkerheds skyld, før jeg udvikler eksemplet, lad mig minde dig om, at vi i livet har at gøre med en træningsprøve på tusinder eller millioner af objekter med titusinder eller hundredvis af funktioner. Men her er tallene taget, så de nemt kan passe ind i hovedet på en nybegynder dataforsker.

Lad os vende tilbage til eksemplet. Lad os forestille os, at direktøren for banken besluttede at udstede et lån til alle i nød, på trods af at algoritmen fortalte ham ikke at udstede det til Lesha. Og nu er der gået nok tid, og vi ved, hvem af de tre helte, der tilbagebetalte lånet, og hvem der ikke gjorde. Hvad kunne forventes: Vasya og Fedya tilbagebetalte lånet, men det gjorde Lesha ikke. Lad os nu forestille os, at dette resultat vil være en ny træningsprøve for os, og samtidig er det, som om alle data om de faktorer, der påvirker sandsynligheden for at tilbagebetale lånet (låntagers løn, størrelsen af ​​den månedlige betaling) er forsvundet. Så kan vi intuitivt antage, at hver tredje låntager ikke tilbagebetaler lånet til banken, eller med andre ord sandsynligheden for, at den næste låntager tilbagebetaler lånet Tygger på logistisk regression. Denne intuitive antagelse har teoretisk bekræftelse og er baseret på maksimal sandsynlighed metode, ofte i litteraturen kaldes det princippet om maksimal sandsynlighed.

Lad os først stifte bekendtskab med begrebsapparatet.

Sandsynlighed for prøveudtagning er sandsynligheden for at opnå præcis sådan en prøve, opnå præcis sådanne observationer/resultater, dvs. produktet af sandsynligheden for at opnå hvert af stikprøveresultaterne (f.eks. om lånet til Vasya, Fedya og Lesha blev tilbagebetalt eller ikke tilbagebetalt på samme tid).

Sandsynlighedsfunktion relaterer sandsynligheden for en prøve til værdierne af fordelingsparametrene.

I vores tilfælde er træningsprøven et generaliseret Bernoulli-skema, hvor den tilfældige variabel kun tager to værdier: Tygger på logistisk regression eller Tygger på logistisk regression. Derfor kan stikprøvesandsynligheden skrives som en sandsynlighedsfunktion af parameteren Tygger på logistisk regression som følger:

Tygger på logistisk regression
Tygger på logistisk regression

Ovenstående post kan fortolkes som følger. Den fælles sandsynlighed for, at Vasya og Fedya vil tilbagebetale lånet, er lig med Tygger på logistisk regression, er sandsynligheden for at Lesha IKKE tilbagebetaler lånet lig med Tygger på logistisk regression (da det IKKE var tilbagebetalingen af ​​lånet der fandt sted), derfor er den fælles sandsynlighed for alle tre hændelser lige stor Tygger på logistisk regression.

Maksimal sandsynlighed metode er en metode til at estimere en ukendt parameter ved at maksimere sandsynlighedsfunktioner. I vores tilfælde skal vi finde en sådan værdi Tygger på logistisk regression, hvorpå Tygger på logistisk regression når sit maksimum.

Hvor kommer den egentlige idé fra - at lede efter værdien af ​​en ukendt parameter, ved hvilken likelihood-funktionen når et maksimum? Oprindelsen af ​​ideen stammer fra ideen om, at en prøve er den eneste kilde til viden, der er tilgængelig for os om befolkningen. Alt, hvad vi ved om befolkningen, er repræsenteret i stikprøven. Derfor kan vi kun sige, at en stikprøve er den mest nøjagtige afspejling af befolkningen, der er tilgængelig for os. Derfor skal vi finde en parameter, hvor den tilgængelige prøve bliver den mest sandsynlige.

Det er klart, at vi har at gøre med et optimeringsproblem, hvor vi skal finde yderpunktet for en funktion. For at finde ekstremumpunktet er det nødvendigt at overveje førsteordensbetingelsen, det vil sige at sidestille den afledede af funktionen til nul og løse ligningen med hensyn til den ønskede parameter. At søge efter den afledte af et produkt af et stort antal faktorer kan dog være en langvarig opgave; for at undgå dette er der en speciel teknik - at skifte til logaritmen sandsynlighedsfunktioner. Hvorfor er sådan en overgang mulig? Lad os være opmærksomme på, at vi ikke leder efter det yderste af selve funktionenTygger på logistisk regression, og ekstremumpunktet, det vil sige værdien af ​​den ukendte parameter Tygger på logistisk regression, hvorpå Tygger på logistisk regression når sit maksimum. Når man flytter til en logaritme, ændres ekstremumpunktet ikke (selvom selve ekstremummet vil afvige), da logaritmen er en monoton funktion.

Lad os, i overensstemmelse med ovenstående, fortsætte med at udvikle vores eksempel med lån fra Vasya, Fedya og Lesha. Lad os først gå videre til logaritme af sandsynlighedsfunktionen:

Tygger på logistisk regression

Nu kan vi nemt differentiere udtrykket ved Tygger på logistisk regression:

Tygger på logistisk regression

Og endelig, overvej førsteordens-betingelsen - vi sidestiller den afledede af funktionen til nul:

Tygger på logistisk regression

Således vores intuitive skøn over sandsynligheden for tilbagebetaling af lån Tygger på logistisk regression var teoretisk begrundet.

Godt, men hvad skal vi gøre med denne information nu? Hvis vi antager, at hver tredje låntager ikke returnerer pengene til banken, så vil sidstnævnte uundgåeligt gå konkurs. Det er rigtigt, men kun når man vurderer sandsynligheden for tilbagebetaling af lån lig med Tygger på logistisk regression Vi tog ikke højde for de faktorer, der påvirker tilbagebetalingen af ​​lånet: låntagers løn og størrelsen af ​​den månedlige ydelse. Lad os huske, at vi tidligere har beregnet sandsynligheden for tilbagebetaling af lånet af hver klient under hensyntagen til de samme faktorer. Det er logisk, at vi opnåede sandsynligheder, der er forskellige fra den konstante lig Tygger på logistisk regression.

Lad os definere sandsynligheden for prøver:

Kode til beregning af prøvesandsynligheder

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)

Prøvesandsynlighed ved en konstant værdi Tygger på logistisk regression:

Tygger på logistisk regression

Stikprøvesandsynlighed ved beregning af sandsynligheden for tilbagebetaling af lån under hensyntagen til faktorer Tygger på logistisk regression:

Tygger på logistisk regression
Tygger på logistisk regression

Sandsynligheden for en stikprøve med en sandsynlighed beregnet afhængigt af faktorerne viste sig at være højere end sandsynligheden med en konstant sandsynlighedsværdi. Hvad betyder det? Dette tyder på, at viden om faktorerne gjorde det muligt mere præcist at vælge sandsynligheden for tilbagebetaling af lån for hver enkelt kunde. Ved udstedelse af det næste lån vil det derfor være mere korrekt at anvende den model, der er foreslået sidst i artiklens afsnit 3, til vurdering af sandsynligheden for tilbagebetaling af gæld.

Men altså, hvis vi vil maksimere prøvesandsynlighedsfunktion, hvorfor så ikke bruge en eller anden algoritme, der vil producere sandsynligheder for Vasya, Fedya og Lesha, for eksempel, lig med henholdsvis 0.99, 0.99 og 0.01. Måske vil en sådan algoritme fungere godt på træningsprøven, da den vil bringe prøvesandsynlighedsværdien tættere på Tygger på logistisk regression, men for det første vil en sådan algoritme højst sandsynligt have vanskeligheder med generaliseringsevnen, og for det andet vil denne algoritme bestemt ikke være lineær. Og hvis metoder til at bekæmpe overtræning (lige så svage generaliseringsevner) tydeligvis ikke er inkluderet i planen for denne artikel, så lad os gennemgå det andet punkt mere detaljeret. For at gøre dette skal du blot besvare et simpelt spørgsmål. Kan sandsynligheden for, at Vasya og Fedya tilbagebetaler lånet, være den samme under hensyntagen til de faktorer, vi kender til? Ud fra et sund logisk synspunkt, selvfølgelig ikke, kan det ikke. Så Vasya vil betale 2.5% af sin løn om måneden for at tilbagebetale lånet, og Fedya - næsten 27,8%. Også i graf 2 "Klientklassificering" ser vi, at Vasya er meget længere fra linjen, der adskiller klasserne end Fedya. Og endelig ved vi, at funktionen Tygger på logistisk regression for Vasya og Fedya tager forskellige værdier: 4.24 for Vasya og 1.0 for Fedya. Nu, hvis Fedya, for eksempel, tjente en størrelsesorden mere eller bad om et mindre lån, så ville sandsynligheden for at tilbagebetale lånet for Vasya og Fedya være ens. Lineær afhængighed kan med andre ord ikke narre. Og hvis vi rent faktisk har beregnet oddsene Tygger på logistisk regression, og ikke tog dem ud af den blå luft, kunne vi roligt sige, at vores værdier Tygger på logistisk regression giver os bedst mulighed for at estimere sandsynligheden for tilbagebetaling af lånet af hver låntager, men da vi blev enige om at antage, at bestemmelsen af ​​koefficienterne Tygger på logistisk regression blev udført i henhold til alle reglerne, så vil vi antage det - vores koefficienter giver os mulighed for at give et bedre skøn over sandsynligheden :)

Vi afviger dog. I dette afsnit skal vi forstå, hvordan vektoren af ​​vægte bestemmes Tygger på logistisk regression, hvilket er nødvendigt for at vurdere sandsynligheden for tilbagebetaling af lånet af hver enkelt låntager.

Lad os kort opsummere med hvilket arsenal vi leder efter odds Tygger på logistisk regression:

1. Vi antager, at forholdet mellem målvariablen (forudsigelsesværdien) og den faktor, der påvirker resultatet, er lineær. Af denne grund bruges det lineær regressionsfunktion arten Tygger på logistisk regression, hvis linje opdeler objekter (klienter) i klasser Tygger på logistisk regression и Tygger på logistisk regression eller Tygger på logistisk regression (kunder, der er i stand til at tilbagebetale lånet, og dem, der ikke er). I vores tilfælde har ligningen formen Tygger på logistisk regression.

2. Vi bruger omvendt logit funktion arten Tygger på logistisk regression at bestemme sandsynligheden for, at et objekt tilhører en klasse Tygger på logistisk regression.

3. Vi betragter vores træningssæt som en implementering af en generaliseret Bernoulli planer, det vil sige, at der for hvert objekt genereres en stokastisk variabel, som med sandsynlighed Tygger på logistisk regression (sin egen for hvert objekt) tager værdien 1 og med sandsynlighed Tygger på logistisk regression - 0.

4. Vi ved, hvad vi skal maksimere prøvesandsynlighedsfunktion under hensyntagen til de accepterede faktorer, således at den tilgængelige prøve bliver den mest plausible. Med andre ord skal vi vælge parametre, hvor prøven vil være mest plausibel. I vores tilfælde er den valgte parameter sandsynligheden for tilbagebetaling af lån Tygger på logistisk regression, hvilket igen afhænger af ukendte koefficienter Tygger på logistisk regression. Så vi skal finde sådan en vektor af vægte Tygger på logistisk regression, hvor sandsynligheden for prøven vil være størst.

5. Vi ved, hvad vi skal maksimere eksempler på sandsynlighedsfunktioner kan bruge maksimal sandsynlighed metode. Og vi kender alle de vanskelige tricks til at arbejde med denne metode.

Sådan viser det sig at være et træk i flere trin :)

Husk nu, at vi i begyndelsen af ​​artiklen ønskede at udlede to typer tabsfunktioner Logistisk tab afhængig af hvordan objektklasser er udpeget. Det skete således, at i klassifikationsproblemer med to klasser betegnes klasserne som Tygger på logistisk regression и Tygger på logistisk regression eller Tygger på logistisk regression. Afhængigt af notationen vil outputtet have en tilsvarende tabsfunktion.

Case 1. Klassificering af genstande i Tygger på logistisk regression и Tygger på logistisk regression

Tidligere, ved bestemmelse af sandsynligheden for en stikprøve, hvor sandsynligheden for tilbagebetaling af gæld fra låntageren blev beregnet ud fra faktorer og givne koefficienter Tygger på logistisk regression, anvendte vi formlen:

Tygger på logistisk regression

Faktisk Tygger på logistisk regression er meningen logistiske responsfunktioner Tygger på logistisk regression for en given vektor af vægte Tygger på logistisk regression

Så er der intet, der forhindrer os i at skrive sample likelihood-funktionen som følger:

Tygger på logistisk regression

Det sker, at nogle gange er det svært for nogle nybegyndere analytikere straks at forstå, hvordan denne funktion fungerer. Lad os se på 4 korte eksempler, der vil opklare alt:

1. Hvis Tygger på logistisk regression (dvs. ifølge træningseksemplet tilhører objektet klasse +1) og vores algoritme Tygger på logistisk regression bestemmer sandsynligheden for at klassificere et objekt til en klasse Tygger på logistisk regression lig med 0.9, så vil denne prøvesandsynlighed blive beregnet som følger:

Tygger på logistisk regression

2. Hvis Tygger på logistisk regressionOg Tygger på logistisk regression, så bliver beregningen sådan:

Tygger på logistisk regression

3. Hvis Tygger på logistisk regressionOg Tygger på logistisk regression, så bliver beregningen sådan:

Tygger på logistisk regression

4. Hvis Tygger på logistisk regressionOg Tygger på logistisk regression, så bliver beregningen sådan:

Tygger på logistisk regression

Det er indlysende, at sandsynlighedsfunktionen vil blive maksimeret i tilfælde 1 og 3 eller i det generelle tilfælde - med korrekt gættede værdier af sandsynligheden for at tildele et objekt til en klasse Tygger på logistisk regression.

På grund af det faktum, at når man bestemmer sandsynligheden for at tildele et objekt til en klasse Tygger på logistisk regression Vi kender kun ikke koefficienterne Tygger på logistisk regression, så leder vi efter dem. Som nævnt ovenfor er dette et optimeringsproblem, hvor vi først skal finde den afledede af sandsynlighedsfunktionen med hensyn til vektoren af ​​vægte Tygger på logistisk regression. Men først giver det mening at forenkle opgaven for os selv: vi vil lede efter den afledede af logaritmen sandsynlighedsfunktioner.

Tygger på logistisk regression

Hvorfor efter logaritme, i logistiske fejlfunktioner, ændrede vi skiltet fra Tygger på logistisk regressionTygger på logistisk regression. Alt er enkelt, da det i problemer med at vurdere kvaliteten af ​​en model er sædvanligt at minimere værdien af ​​en funktion, multiplicerede vi højre side af udtrykket med Tygger på logistisk regression og derfor, i stedet for at maksimere, minimerer vi nu funktionen.

Faktisk, lige nu, foran dine øjne, blev tabsfunktionen møjsommeligt udledt - Logistisk tab for et træningssæt med to klasser: Tygger på logistisk regression и Tygger på logistisk regression.

For at finde koefficienterne skal vi bare finde den afledede logistiske fejlfunktioner og derefter, ved hjælp af numeriske optimeringsmetoder, såsom gradientnedstigning eller stokastisk gradientnedstigning, vælg de mest optimale koefficienter Tygger på logistisk regression. Men i betragtning af artiklens store volumen foreslås det at udføre differentieringen på egen hånd, eller måske vil dette være et emne for den næste artikel med en masse regnestykker uden så detaljerede eksempler.

Case 2. Klassificering af genstande i Tygger på logistisk regression и Tygger på logistisk regression

Fremgangsmåden her vil være den samme som ved klasser Tygger på logistisk regression и Tygger på logistisk regression, men selve stien til output af tabsfunktionen Logistisk tab, vil være mere udsmykket. Lad os komme igang. Til sandsynlighedsfunktionen vil vi bruge operatøren "hvis så...". Det vil sige, hvis Tygger på logistisk regressionDet th objekt tilhører klassen Tygger på logistisk regression, så for at beregne sandsynligheden for stikprøven bruger vi sandsynligheden Tygger på logistisk regression, hvis objektet tilhører klassen Tygger på logistisk regression, så erstatter vi i sandsynligheden Tygger på logistisk regression. Sådan ser sandsynlighedsfunktionen ud:

Tygger på logistisk regression

Lad os beskrive på fingrene, hvordan det fungerer. Lad os overveje 4 tilfælde:

1. Hvis Tygger på logistisk regression и Tygger på logistisk regression, så vil prøveudtagningssandsynligheden "gå" Tygger på logistisk regression

2. Hvis Tygger på logistisk regression и Tygger på logistisk regression, så vil prøveudtagningssandsynligheden "gå" Tygger på logistisk regression

3. Hvis Tygger på logistisk regression и Tygger på logistisk regression, så vil prøveudtagningssandsynligheden "gå" Tygger på logistisk regression

4. Hvis Tygger på logistisk regression и Tygger på logistisk regression, så vil prøveudtagningssandsynligheden "gå" Tygger på logistisk regression

Det er indlysende, at i tilfælde 1 og 3, når sandsynligheden var korrekt bestemt af algoritmen, sandsynlighedsfunktion vil blive maksimeret, det vil sige, det er præcis, hvad vi ønskede at få. Denne tilgang er dog ret besværlig, og dernæst vil vi overveje en mere kompakt notation. Men lad os først logaritme sandsynlighedsfunktionen med en ændring af fortegn, da vi nu vil minimere den.

Tygger på logistisk regression

Lad os erstatte i stedet Tygger på logistisk regression ekspression Tygger på logistisk regression:

Tygger på logistisk regression

Lad os forenkle det rigtige udtryk under logaritmen ved hjælp af simple regneteknikker og få:

Tygger på logistisk regression

Nu er det tid til at slippe af med operatøren "hvis så...". Bemærk, at når et objekt Tygger på logistisk regression hører til klassen Tygger på logistisk regression, derefter i udtrykket under logaritmen, i nævneren, Tygger på logistisk regression hævet til magten Tygger på logistisk regression, hvis objektet tilhører klassen Tygger på logistisk regression, så hæves $e$ til magten Tygger på logistisk regression. Derfor kan notationen for graden forenkles ved at kombinere begge tilfælde til én: Tygger på logistisk regression. Derefter logistisk fejlfunktion vil tage formen:

Tygger på logistisk regression

I overensstemmelse med logaritmereglerne vender vi brøken og sætter tegnet "Tygger på logistisk regression" (minus) for logaritmen får vi:

Tygger på logistisk regression

Her er tabsfunktionen logistisk tab, som bruges i træningssættet med objekter, der er tildelt klasser: Tygger på logistisk regression и Tygger på logistisk regression.

Nå, på dette tidspunkt tager jeg min afsked, og vi afslutter artiklen.

Tygger på logistisk regression Forfatterens tidligere arbejde er "Bringe den lineære regressionsligning til matrixform"

Hjælpematerialer

1. Litteratur

1) Anvendt regressionsanalyse / N. Draper, G. Smith - 2. udg. – M.: Finans og statistik, 1986 (oversættelse fra engelsk)

2) Sandsynlighedsteori og matematisk statistik / V.E. Gmurman - 9. udg. - M.: Videregående skole, 2003

3) Sandsynlighedsteori / N.I. Chernova - Novosibirsk: Novosibirsk State University, 2007

4) Forretningsanalyse: fra data til viden / Paklin N. B., Oreshkov V. I. - 2. udg. — Skt. Petersborg: Peter, 2013

5) Datavidenskab Datavidenskab fra bunden / Joel Gras - St. Petersburg: BHV Petersburg, 2017

6) Praktisk statistik for datavidenskabsspecialister / P. Bruce, E. Bruce - St. Petersburg: BHV Petersburg, 2018

2. Forelæsninger, kurser (video)

1) Essensen af ​​metoden med maksimal sandsynlighed, Boris Demeshev

2) Maksimal sandsynlighed metode i den kontinuerlige sag, Boris Demeshev

3) Logistisk regression. Åben ODS-bane, Yury Kashnitsky

4) Foredrag 4, Evgeny Sokolov (fra 47 minutters video)

5) Logistisk regression, Vyacheslav Vorontsov

3. Internetkilder

1) Lineære klassifikations- og regressionsmodeller

2) Hvordan man nemt forstår logistisk regression

3) Logistisk fejlfunktion

4) Uafhængige tests og Bernoulli formel

5) Ballade af MMP

6) Maksimal sandsynlighed metode

7) Formler og egenskaber ved logaritmer

8) Hvorfor nummer Tygger på logistisk regression?

9) Lineær klassifikator

Kilde: www.habr.com

Tilføj en kommentar