Tygger på logistisk regresjon

Tygger på logistisk regresjon

I denne artikkelen vil vi analysere de teoretiske beregningene av transformasjonen lineære regresjonsfunksjoner в invers logit-transformasjonsfunksjon (ellers kalt logistisk responsfunksjon). Deretter bruker du arsenalet metode for maksimal sannsynlighet, i samsvar med den logistiske regresjonsmodellen, utleder vi tapsfunksjonen Logistisk tap, eller med andre ord, vi vil definere en funksjon som parametrene til vektvektoren velges med i den logistiske regresjonsmodellen Tygger på logistisk regresjon.

Artikkeloversikt:

  1. La oss gjenta det lineære forholdet mellom to variabler
  2. La oss identifisere behovet for transformasjon lineære regresjonsfunksjoner Tygger på logistisk regresjon в logistisk responsfunksjon Tygger på logistisk regresjon
  3. La oss utføre transformasjonene og produksjonen logistisk responsfunksjon
  4. La oss prøve å forstå hvorfor minste kvadraters metode er dårlig når du velger parametere Tygger på logistisk regresjon funksjoner Logistisk tap
  5. Vi bruker metode for maksimal sannsynlighet for å bestemme funksjoner for parametervalg Tygger på logistisk regresjon:

    5.1. Tilfelle 1: funksjon Logistisk tap for objekter med klassebetegnelser 0 и 1:

    Tygger på logistisk regresjon

    5.2. Tilfelle 2: funksjon Logistisk tap for objekter med klassebetegnelser -1 и +1:

    Tygger på logistisk regresjon


Artikkelen er full av enkle eksempler der alle beregninger er enkle å gjøre muntlig eller på papir; i noen tilfeller kan det være nødvendig med en kalkulator. Så gjør deg klar :)

Denne artikkelen er først og fremst ment for dataforskere med et innledende kunnskapsnivå i det grunnleggende om maskinlæring.

Artikkelen vil også gi kode for å tegne grafer og beregninger. All kode er skrevet på språket python 2.7. La meg forklare på forhånd om "nyheten" til versjonen som brukes - dette er en av betingelsene for å ta det velkjente kurset fra Yandex på en like kjent nettbasert utdanningsplattform Coursera, og, som man kan anta, ble materialet utarbeidet basert på dette kurset.

01. Rettlinjet avhengighet

Det er ganske rimelig å stille spørsmålet - hva har lineær avhengighet og logistisk regresjon med det å gjøre?

Det er enkelt! Logistisk regresjon er en av modellene som tilhører den lineære klassifikatoren. Med enkle ord er oppgaven til en lineær klassifikator å forutsi målverdier Tygger på logistisk regresjon fra variabler (regressorer) Tygger på logistisk regresjon. Det antas at avhengigheten mellom egenskapene Tygger på logistisk regresjon og målverdier Tygger på logistisk regresjon lineær. Derav navnet på klassifisereren - lineær. For å si det veldig grovt, er den logistiske regresjonsmodellen basert på antakelsen om at det er en lineær sammenheng mellom egenskapene Tygger på logistisk regresjon og målverdier Tygger på logistisk regresjon. Dette er forbindelsen.

Det er det første eksemplet i studio, og det handler riktignok om den rettlinjede avhengigheten til mengdene som studeres. I prosessen med å utarbeide artikkelen kom jeg over et eksempel som allerede har satt mange mennesker på kanten - avhengigheten av strøm på spenning ("Anvendt regresjonsanalyse", N. Draper, G. Smith). Vi skal se på det her også.

I samsvar med Ohms lov:

Tygger på logistisk regresjonDer Tygger på logistisk regresjon - strømstyrke, Tygger på logistisk regresjon - Spenning, Tygger på logistisk regresjon - motstand.

Hvis vi ikke visste Ohms lov, så kunne vi finne avhengigheten empirisk ved å endre Tygger på logistisk regresjon og måling Tygger på logistisk regresjon, mens du støtter Tygger på logistisk regresjon fikset. Da ville vi se at avhengighetsgrafen Tygger på logistisk regresjon fra Tygger på logistisk regresjon gir en mer eller mindre rett linje gjennom origo. Vi sier "mer eller mindre" fordi selv om forholdet faktisk er nøyaktig, kan målingene våre inneholde små feil, og derfor kan det hende at punktene på grafen ikke faller nøyaktig på linjen, men vil bli spredt rundt den tilfeldig.

Graf 1 "Avhengighet" Tygger på logistisk regresjon fra Tygger på logistisk regresjon»

Tygger på logistisk regresjon

Karttegningskode

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 å transformere den lineære regresjonsligningen

La oss se på et annet eksempel. La oss forestille oss at vi jobber i en bank og vår oppgave er å bestemme sannsynligheten for at låntakeren betaler tilbake lånet avhengig av visse faktorer. For å forenkle oppgaven vil vi bare vurdere to faktorer: låntakerens månedlige lønn og det månedlige tilbakebetalingsbeløpet på lånet.

Oppgaven er veldig betinget, men med dette eksemplet kan vi forstå hvorfor det ikke er nok å bruke lineære regresjonsfunksjoner, og finn også ut hvilke transformasjoner som må utføres med funksjonen.

La oss gå tilbake til eksemplet. Det er underforstått at jo høyere lønn, jo mer vil låntakeren kunne bevilge månedlig for å tilbakebetale lånet. Samtidig vil dette forholdet for et visst lønnsområde være ganske lineært. La oss for eksempel ta et lønnsområde fra 60.000 200.000 RUR til 3 5.000 RUR og anta at i det angitte lønnsområdet er avhengigheten av størrelsen på den månedlige utbetalingen av størrelsen på lønnen lineær. La oss si at for det spesifiserte lønnsområdet ble det avslørt at lønn-til-betalingsforholdet ikke kan falle under XNUMX og låntakeren må fortsatt ha XNUMX RUR i reserve. Og bare i dette tilfellet vil vi anta at låntakeren vil tilbakebetale lånet til banken. Deretter vil den lineære regresjonsligningen ha formen:

Tygger på logistisk regresjon

der Tygger på logistisk regresjon, Tygger på logistisk regresjon, Tygger på logistisk regresjon, Tygger på logistisk regresjon - lønn Tygger på logistisk regresjon-th låntaker, Tygger på logistisk regresjon - betaling av lån Tygger på logistisk regresjon-th låntaker.

Erstatter lønn og lånebetaling med faste parametere i ligningen Tygger på logistisk regresjon Du kan bestemme om du vil utstede eller avslå et lån.

Ser vi fremover, merker vi at med de gitte parameterne Tygger på logistisk regresjon lineær regresjonsfunksjon, brukt i logistiske responsfunksjoner vil produsere store verdier som vil komplisere beregninger for å bestemme sannsynlighetene for tilbakebetaling av lån. Derfor foreslås det å redusere koeffisientene våre, la oss si, med 25.000 XNUMX ganger. Denne transformasjonen i koeffisientene vil ikke endre beslutningen om å utstede et lån. La oss huske dette punktet for fremtiden, men nå, for å gjøre det enda tydeligere hva vi snakker om, la oss vurdere situasjonen med tre potensielle låntakere.

Tabell 1 "Potensielle låntakere"

Tygger på logistisk regresjon

Kode for å generere 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 samsvar med dataene i tabellen ønsker Vasya, med en lønn på 120.000 3.000 RUR, å motta et lån slik at han kan tilbakebetale det månedlig til 5.000 XNUMX RUR. Vi bestemte at for å godkjenne lånet, må Vasyas lønn overstige tre ganger beløpet for betalingen, og det må fortsatt være XNUMX RUR igjen. Vasya tilfredsstiller dette kravet: Tygger på logistisk regresjon. Til og med 106.000 XNUMX RUR gjenstår. Til tross for at når man regner Tygger på logistisk regresjon vi har redusert oddsen Tygger på logistisk regresjon 25.000 ganger ble resultatet det samme – lånet kan godkjennes. Fedya vil også få et lån, men Lesha, til tross for at han får mest, må dempe appetitten.

La oss tegne en graf for dette tilfellet.

Figur 2 «Klassifisering av låntakere»

Tygger på logistisk regresjon

Kode for å 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å vår rette linje, konstruert i samsvar med funksjonen Tygger på logistisk regresjon, skiller "dårlige" låntakere fra "gode". De låntakerne hvis ønsker ikke sammenfaller med deres evner er over linjen (Lesha), mens de som, i henhold til parametrene til modellen vår, er i stand til å betale tilbake lånet, er under linjen (Vasya og Fedya). Med andre ord kan vi si dette: vår direkte linje deler låntakere i to klasser. La oss betegne dem som følger: til klassen Tygger på logistisk regresjon Vi vil klassifisere de låntakerne som har størst sannsynlighet for å betale tilbake lånet som Tygger på logistisk regresjon eller Tygger på logistisk regresjon Vi vil inkludere de låntakerne som mest sannsynlig ikke vil være i stand til å betale tilbake lånet.

La oss oppsummere konklusjonene fra dette enkle eksemplet. La oss ta et poeng Tygger på logistisk regresjon og erstatte koordinatene til punktet i den tilsvarende likningen til linjen Tygger på logistisk regresjon, vurder tre alternativer:

  1. Hvis punktet er under streken og vi tildeler det til klassen Tygger på logistisk regresjon, deretter verdien av funksjonen Tygger på logistisk regresjon vil være positiv fra Tygger på logistisk regresjon til Tygger på logistisk regresjon. Dette betyr at vi kan anta at sannsynligheten for å betale tilbake lånet er innenfor Tygger på logistisk regresjon. Jo større funksjonsverdi, jo høyere er sannsynligheten.
  2. Hvis et punkt er over en linje og vi tildeler det til klassen Tygger på logistisk regresjon eller Tygger på logistisk regresjon, så vil verdien til funksjonen være negativ fra Tygger på logistisk regresjon til Tygger på logistisk regresjon. Da vil vi anta at sannsynligheten for gjeldsnedbetaling er innenfor Tygger på logistisk regresjon og jo større absoluttverdi av funksjonen er, desto høyere er vår selvtillit.
  3. Punktet er på en rett linje, på grensen mellom to klasser. I dette tilfellet verdien av funksjonen Tygger på logistisk regresjon vil være lik Tygger på logistisk regresjon og sannsynligheten for å betale tilbake lånet er lik Tygger på logistisk regresjon.

La oss nå forestille oss at vi ikke har to faktorer, men dusinvis, og ikke tre, men tusenvis av låntakere. Da får vi i stedet for en rett linje m-dimensjonal plan og koeffisienter Tygger på logistisk regresjon vi vil ikke bli tatt ut av løse luften, men utledet i henhold til alle regler, og på grunnlag av akkumulerte data om låntakere som har eller ikke har nedbetalt lånet. Og faktisk, merk at vi nå velger låntakere ved å bruke allerede kjente koeffisienter Tygger på logistisk regresjon. Faktisk er oppgaven til den logistiske regresjonsmodellen nettopp å bestemme parametrene Tygger på logistisk regresjon, hvor verdien av tapet fungerer Logistisk tap vil tendere til et minimum. Men om hvordan vektoren beregnes Tygger på logistisk regresjon, vil vi finne ut mer i den femte delen av artikkelen. I mellomtiden vender vi tilbake til det lovede landet - til vår bankmann og hans tre klienter.

Takket være funksjonen Tygger på logistisk regresjon vi vet hvem som kan få lån og hvem som må nektes. Men du kan ikke gå til direktøren med slik informasjon, fordi de ønsket å få fra oss sannsynligheten for tilbakebetaling av lånet av hver låntaker. Hva å gjøre? Svaret er enkelt - vi må på en eller annen måte transformere funksjonen Tygger på logistisk regresjon, hvis verdier ligger i området Tygger på logistisk regresjon til en funksjon hvis verdier vil ligge i området Tygger på logistisk regresjon. Og en slik funksjon finnes, heter det logistisk responsfunksjon eller invers-logit-transformasjon. Møte:

Tygger på logistisk regresjon

La oss se steg for steg hvordan det fungerer logistisk responsfunksjon. Merk at vi skal gå i motsatt retning, dvs. vi vil anta at vi kjenner sannsynlighetsverdien, som ligger i området fra Tygger på logistisk regresjon til Tygger på logistisk regresjon og så vil vi "avvikle" denne verdien til hele rekkevidden av tall fra Tygger på logistisk regresjon til Tygger på logistisk regresjon.

03. Vi utleder logistisk responsfunksjon

Trinn 1. Konverter sannsynlighetsverdiene til et område Tygger på logistisk regresjon

Under transformasjonen av funksjonen Tygger på logistisk regresjon в logistisk responsfunksjon Tygger på logistisk regresjon Vi lar kredittanalytikeren vår være i fred og tar en tur til bookmakerne i stedet. Nei, selvfølgelig vil vi ikke plassere spill, alt som interesserer oss der er betydningen av uttrykket, for eksempel er sjansen 4 til 1. Oddsen, kjent for alle spillere, er forholdet mellom "suksesser" og " feil». I sannsynlighetstermer er odds sannsynligheten for at en hendelse inntreffer delt på sannsynligheten for at hendelsen ikke inntreffer. La oss skrive ned formelen for sjansen for at en hendelse inntreffer Tygger på logistisk regresjon:

Tygger på logistisk regresjon

Der Tygger på logistisk regresjon - sannsynligheten for at en hendelse inntreffer, Tygger på logistisk regresjon — sannsynligheten for at en hendelse IKKE inntreffer

For eksempel, hvis sannsynligheten for at en ung, sterk og leken hest med kallenavnet «Veterok» vil slå en gammel og slapp gammel kvinne ved navn «Matilda» på et løp er lik Tygger på logistisk regresjon, da vil sjansene for suksess for «Veterok» være Tygger på logistisk regresjon к Tygger på logistisk regresjon Tygger på logistisk regresjon og omvendt, med kjennskap til oddsen, vil det ikke være vanskelig for oss å beregne sannsynligheten Tygger på logistisk regresjon:

Tygger på logistisk regresjon

Dermed har vi lært å "oversette" sannsynlighet til sjanser, som tar verdier fra Tygger på logistisk regresjon til Tygger på logistisk regresjon. La oss ta ett steg til og lære å "oversette" sannsynligheten til hele tallinjen fra Tygger på logistisk regresjon til Tygger på logistisk regresjon.

Trinn 2. Konverter sannsynlighetsverdiene til et område Tygger på logistisk regresjon

Dette trinnet er veldig enkelt - la oss ta logaritmen til oddsen til basen av Eulers tall Tygger på logistisk regresjon og vi får:

Tygger på logistisk regresjon

Nå vet vi at hvis Tygger på logistisk regresjon, og beregn deretter verdien Tygger på logistisk regresjon vil være veldig enkelt, og dessuten bør det være positivt: Tygger på logistisk regresjon. Dette er sant.

Av nysgjerrighet, la oss sjekke hva hvis Tygger på logistisk regresjon, da forventer vi å se en negativ verdi Tygger på logistisk regresjon. Vi sjekker: Tygger på logistisk regresjon. Det er riktig.

Nå vet vi hvordan vi konverterer sannsynlighetsverdien fra Tygger på logistisk regresjon til Tygger på logistisk regresjon langs hele talllinjen fra Tygger på logistisk regresjon til Tygger på logistisk regresjon. I neste trinn vil vi gjøre det motsatte.

For nå merker vi at i samsvar med logaritmereglene, å vite verdien av funksjonen Tygger på logistisk regresjon, kan du beregne oddsen:

Tygger på logistisk regresjon

Denne metoden for å bestemme odds vil være nyttig for oss i neste trinn.

Trinn 3. La oss utlede en formel for å bestemme Tygger på logistisk regresjon

Så vi lærte, vel vitende Tygger på logistisk regresjon, finn funksjonsverdier Tygger på logistisk regresjon. Men faktisk trenger vi akkurat det motsatte - å vite verdien Tygger på logistisk regresjon finne Tygger på logistisk regresjon. For å gjøre dette, la oss gå til et slikt konsept som den inverse oddsfunksjonen, ifølge hvilken:

Tygger på logistisk regresjon

I artikkelen vil vi ikke utlede formelen ovenfor, men vi vil sjekke den ved å bruke tallene fra eksemplet ovenfor. Vi vet det med odds på 4 til 1 (Tygger på logistisk regresjon), er sannsynligheten for at hendelsen inntreffer 0.8 (Tygger på logistisk regresjon). La oss gjøre en erstatning: Tygger på logistisk regresjon. Dette er sammenfallende med våre tidligere beregninger. La oss gå videre.

I det siste trinnet utledet vi det Tygger på logistisk regresjon, som betyr at du kan gjøre en erstatning i den inverse oddsfunksjonen. Vi får:

Tygger på logistisk regresjon

Del både teller og nevner med Tygger på logistisk regresjon, Deretter:

Tygger på logistisk regresjon

Bare i tilfelle, for å være sikker på at vi ikke har gjort en feil noe sted, tar vi en liten sjekk til. I trinn 2 har vi for Tygger på logistisk regresjon bestemt det Tygger på logistisk regresjon. Deretter erstatter du verdien Tygger på logistisk regresjon inn i logistisk responsfunksjon, forventer vi å få Tygger på logistisk regresjon. Vi erstatter og får: Tygger på logistisk regresjon

Gratulerer, kjære leser, vi har nettopp utledet og testet den logistiske responsfunksjonen. La oss se på grafen til funksjonen.

Graf 3 "Logistisk responsfunksjon"

Tygger på logistisk regresjon

Kode for å 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å finne navnet på denne funksjonen som sigmoid funksjon. Grafen viser tydelig at hovedendringen i sannsynligheten for at et objekt tilhører en klasse skjer innenfor et relativt lite område Tygger på logistisk regresjon, et sted fra Tygger på logistisk regresjon til Tygger på logistisk regresjon.

Jeg foreslår at du går tilbake til kredittanalytikeren vår og hjelper ham med å beregne sannsynligheten for tilbakebetaling av lån, ellers risikerer han å stå uten bonus :)

Tabell 2 "Potensielle låntakere"

Tygger på logistisk regresjon

Kode for å generere 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 sannsynligheten for tilbakebetaling av lån. Generelt ser dette ut til å være sant.

Sannsynligheten for at Vasya, med en lønn på 120.000 3.000 RUR, vil være i stand til å gi 100 0.3 RUR til banken hver måned er nær XNUMX%. Forresten, vi må forstå at en bank kan utstede et lån til Lesha hvis bankens policy for eksempel gir utlån til kunder med en sannsynlighet for tilbakebetaling av lån på mer enn for eksempel XNUMX. Det er bare at i dette tilfellet vil banken opprette en større reserve for mulige tap.

Det skal også bemerkes at lønnsforholdet på minst 3 og med en margin på 5.000 RUR ble tatt fra taket. Derfor kunne vi ikke bruke vektvektoren i sin opprinnelige form Tygger på logistisk regresjon. Vi trengte å redusere koeffisientene kraftig, og i dette tilfellet delte vi hver koeffisient med 25.000 XNUMX, det vil si at vi i hovedsak justerte resultatet. Men dette ble gjort spesielt for å forenkle forståelsen av materialet i den innledende fasen. I livet trenger vi ikke å finne opp og justere koeffisienter, men finne dem. I de neste delene av artikkelen vil vi utlede likningene som parameterne er valgt med Tygger på logistisk regresjon.

04. Minste kvadraters metode for å bestemme vektoren av vekter Tygger på logistisk regresjon i logistisk responsfunksjon

Vi kjenner allerede denne metoden for å velge en vektor av vekter Tygger på logistisk regresjonsom minste kvadraters metode (LSM) og faktisk, hvorfor bruker vi det ikke i binære klassifiseringsproblemer? Faktisk er det ingenting som hindrer deg i å bruke MNC, bare denne metoden i klassifiseringsproblemer gir resultater som er mindre nøyaktige enn Logistisk tap. Det er et teoretisk grunnlag for dette. La oss først se på ett enkelt eksempel.

La oss anta at våre modeller (ved hjelp av MSE и Logistisk tap) har allerede begynt å velge vektoren av vekter Tygger på logistisk regresjon og vi stoppet beregningen på et tidspunkt. Det spiller ingen rolle om det er i midten, på slutten eller i begynnelsen, det viktigste er at vi allerede har noen verdier av vektvektoren og la oss anta at på dette trinnet er vektvektoren Tygger på logistisk regresjon for begge modellene er det ingen forskjeller. Ta deretter de resulterende vektene og bytt dem inn i logistisk responsfunksjon (Tygger på logistisk regresjon) for et objekt som tilhører klassen Tygger på logistisk regresjon. Vi undersøker to tilfeller når modellen vår, i samsvar med den valgte vektvektoren, tar veldig feil og omvendt - modellen er veldig sikker på at objektet tilhører klassen Tygger på logistisk regresjon. La oss se hvilke bøter som vil bli gitt ved bruk MNC и Logistisk tap.

Kode for å beregne straffer avhengig av tapsfunksjonen som brukes

# класс объекта
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 tilfelle av en tabbe — modellen tilordner et objekt til en klasse Tygger på logistisk regresjon med en sannsynlighet på 0,01

Straffe ved bruk MNC vil være:
Tygger på logistisk regresjon

Straffe ved bruk Logistisk tap vil være:
Tygger på logistisk regresjon

En sak med sterk tillit — modellen tilordner et objekt til en klasse Tygger på logistisk regresjon med en sannsynlighet på 0,99

Straffe ved bruk MNC vil være:
Tygger på logistisk regresjon

Straffe ved bruk Logistisk tap vil være:
Tygger på logistisk regresjon

Dette eksemplet illustrerer godt at ved en grov feil er tapsfunksjonen Loggtap straffer modellen betydelig mer enn MSE. La oss nå forstå hva den teoretiske bakgrunnen er for å bruke tapsfunksjonen Loggtap i klassifiseringsproblemer.

05. Maximum likelihood-metode og logistisk regresjon

Som lovet i begynnelsen, er artikkelen full av enkle eksempler. I studioet er det et annet eksempel og gamle gjester - banklåntakere: Vasya, Fedya og Lesha.

Bare i tilfelle, før jeg utvikler eksemplet, la meg minne deg på at vi i livet har å gjøre med en treningsprøve på tusenvis eller millioner av objekter med titalls eller hundrevis av funksjoner. Men her er tallene tatt slik at de enkelt kan passe inn i hodet til en nybegynner dataforsker.

La oss gå tilbake til eksemplet. La oss forestille oss at direktøren for banken bestemte seg for å utstede et lån til alle i nød, til tross for at algoritmen fortalte ham om ikke å utstede det til Lesha. Og nå har det gått nok tid og vi vet hvem av de tre heltene som betalte tilbake lånet og hvem som ikke gjorde det. Hva var å forvente: Vasya og Fedya tilbakebetalte lånet, men Lesha gjorde det ikke. La oss nå forestille oss at dette resultatet vil være et nytt treningsutvalg for oss, og samtidig er det som om alle data om faktorene som påvirker sannsynligheten for å tilbakebetale lånet (låntakers lønn, størrelsen på den månedlige betalingen) har forsvunnet. Da kan vi intuitivt anta at hver tredje låntaker ikke betaler tilbake lånet til banken, eller med andre ord sannsynligheten for at neste låntaker betaler tilbake lånet Tygger på logistisk regresjon. Denne intuitive antagelsen har teoretisk bekreftelse og er basert på metode for maksimal sannsynlighet, ofte i litteraturen heter det prinsippet om maksimal sannsynlighet.

La oss først bli kjent med det konseptuelle apparatet.

Sannsynlighet for prøvetaking er sannsynligheten for å få nøyaktig et slikt utvalg, oppnå nøyaktig slike observasjoner/resultater, dvs. produktet av sannsynlighetene for å oppnå hvert av prøveresultatene (for eksempel om lånet til Vasya, Fedya og Lesha ble tilbakebetalt eller ikke tilbakebetalt samtidig).

Sannsynlighetsfunksjon relaterer sannsynligheten for en prøve til verdiene til distribusjonsparametrene.

I vårt tilfelle er treningsutvalget et generalisert Bernoulli-skjema, der den tilfeldige variabelen bare tar to verdier: Tygger på logistisk regresjon eller Tygger på logistisk regresjon. Derfor kan prøvesannsynligheten skrives som en sannsynlighetsfunksjon av parameteren Tygger på logistisk regresjon som følger:

Tygger på logistisk regresjon
Tygger på logistisk regresjon

Oppføringen ovenfor kan tolkes som følger. Den felles sannsynligheten for at Vasya og Fedya vil tilbakebetale lånet er lik Tygger på logistisk regresjon, er sannsynligheten for at Lesha IKKE vil betale tilbake lånet lik Tygger på logistisk regresjon (siden det IKKE var nedbetalingen av lånet som fant sted), derfor er fellessannsynligheten for alle tre hendelsene lik Tygger på logistisk regresjon.

Maksimal sannsynlighetsmetode er en metode for å estimere en ukjent parameter ved å maksimere sannsynlighetsfunksjoner. I vårt tilfelle må vi finne en slik verdi Tygger på logistisk regresjonhvor Tygger på logistisk regresjon når sitt maksimum.

Hvor kommer selve ideen fra - å se etter verdien av en ukjent parameter der likelihood-funksjonen når et maksimum? Opprinnelsen til ideen stammer fra ideen om at et utvalg er den eneste kilden til kunnskap som er tilgjengelig for oss om befolkningen. Alt vi vet om populasjonen er representert i utvalget. Derfor er alt vi kan si at et utvalg er den mest nøyaktige gjenspeiling av populasjonen som er tilgjengelig for oss. Derfor må vi finne en parameter der den tilgjengelige prøven blir mest sannsynlig.

Det er åpenbart at vi har å gjøre med et optimaliseringsproblem der vi må finne ekstremumpunktet til en funksjon. For å finne ekstremumpunktet, er det nødvendig å vurdere førsteordens betingelsen, det vil si å likestille den deriverte av funksjonen til null og løse ligningen med hensyn til ønsket parameter. Imidlertid kan det være en langvarig oppgave å søke etter den deriverte av et produkt av et stort antall faktorer; for å unngå dette er det en spesiell teknikk - å bytte til logaritmen sannsynlighetsfunksjoner. Hvorfor er en slik overgang mulig? La oss ta hensyn til det faktum at vi ikke ser etter ytterpunktet av selve funksjonenTygger på logistisk regresjon, og ekstremumpunktet, det vil si verdien av den ukjente parameteren Tygger på logistisk regresjonhvor Tygger på logistisk regresjon når sitt maksimum. Når du flytter til en logaritme, endres ikke ekstremumpunktet (selv om ekstremumet i seg selv vil avvike), siden logaritmen er en monoton funksjon.

La oss, i samsvar med ovenstående, fortsette å utvikle vårt eksempel med lån fra Vasya, Fedya og Lesha. La oss først gå videre til logaritme av sannsynlighetsfunksjonen:

Tygger på logistisk regresjon

Nå kan vi enkelt differensiere uttrykket ved Tygger på logistisk regresjon:

Tygger på logistisk regresjon

Og til slutt, vurder førsteordens betingelsen - vi likestiller den deriverte av funksjonen til null:

Tygger på logistisk regresjon

Dermed vårt intuitive estimat av sannsynligheten for tilbakebetaling av lån Tygger på logistisk regresjon var teoretisk begrunnet.

Flott, men hva skal vi gjøre med denne informasjonen nå? Hvis vi antar at hver tredje låntaker ikke returnerer pengene til banken, vil sistnevnte uunngåelig gå konkurs. Det er riktig, men bare når man vurderer sannsynligheten for tilbakebetaling av lån lik Tygger på logistisk regresjon Vi tok ikke hensyn til faktorene som påvirker tilbakebetalingen av lån: Låntakerens lønn og størrelsen på den månedlige betalingen. La oss huske at vi tidligere beregnet sannsynligheten for tilbakebetaling av lånet av hver klient, tatt i betraktning de samme faktorene. Det er logisk at vi oppnådde sannsynligheter forskjellig fra konstanten lik Tygger på logistisk regresjon.

La oss definere sannsynligheten for prøver:

Kode for beregning av prøvesannsynligheter

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øvesannsynlighet ved en konstant verdi Tygger på logistisk regresjon:

Tygger på logistisk regresjon

Eksempelsannsynlighet ved beregning av sannsynligheten for tilbakebetaling av lån under hensyntagen til faktorer Tygger på logistisk regresjon:

Tygger på logistisk regresjon
Tygger på logistisk regresjon

Sannsynligheten for et utvalg med en sannsynlighet beregnet avhengig av faktorene viste seg å være høyere enn sannsynligheten med en konstant sannsynlighetsverdi. Hva betyr dette? Dette tyder på at kunnskap om faktorene gjorde det mulig å mer nøyaktig velge sannsynligheten for tilbakebetaling av lån for hver enkelt kunde. Ved utstedelse av neste lån vil det derfor være mer riktig å bruke modellen foreslått i slutten av avsnitt 3 i artikkelen for å vurdere sannsynligheten for gjeldsnedbetaling.

Men så, hvis vi ønsker å maksimere prøve sannsynlighetsfunksjon, hvorfor ikke bruke en eller annen algoritme som vil produsere sannsynligheter for Vasya, Fedya og Lesha, for eksempel, lik henholdsvis 0.99, 0.99 og 0.01. Kanskje en slik algoritme vil fungere godt på treningsutvalget, siden det vil bringe sample likelihood-verdien nærmere Tygger på logistisk regresjon, men for det første vil en slik algoritme mest sannsynlig ha vanskeligheter med generaliseringsevnen, og for det andre vil denne algoritmen definitivt ikke være lineær. Og hvis metoder for å bekjempe overtrening (like svak generaliseringsevne) tydeligvis ikke er inkludert i planen til denne artikkelen, så la oss gå gjennom det andre punktet mer detaljert. For å gjøre dette, bare svar på et enkelt spørsmål. Kan sannsynligheten for at Vasya og Fedya tilbakebetaler lånet være den samme, med tanke på faktorene vi kjenner til? Fra et synspunkt av sunn logikk, selvfølgelig ikke, kan det ikke. Så Vasya vil betale 2.5% av lønnen sin per måned for å tilbakebetale lånet, og Fedya - nesten 27,8%. Også i graf 2 “Klientklassifisering” ser vi at Vasya er mye lenger fra linjen som skiller klassene enn Fedya. Og til slutt vet vi at funksjonen Tygger på logistisk regresjon for Vasya og Fedya tar forskjellige verdier: 4.24 for Vasya og 1.0 for Fedya. Nå, hvis Fedya, for eksempel, tjente en størrelsesorden mer eller ba om et mindre lån, ville sannsynlighetene for å tilbakebetale lånet for Vasya og Fedya være like. Lineær avhengighet lar seg med andre ord ikke lure. Og hvis vi faktisk beregnet oddsen Tygger på logistisk regresjon, og ikke tok dem ut av løse luften, kan vi trygt si at våre verdier Tygger på logistisk regresjon best tillate oss å estimere sannsynligheten for tilbakebetaling av lånet av hver låntaker, men siden vi ble enige om å anta at bestemmelsen av koeffisientene Tygger på logistisk regresjon ble utført i henhold til alle reglene, så vil vi anta det - koeffisientene våre lar oss gi et bedre estimat av sannsynligheten :)

Vi går imidlertid bort. I denne delen må vi forstå hvordan vektoren av vekter bestemmes Tygger på logistisk regresjon, som er nødvendig for å vurdere sannsynligheten for tilbakebetaling av lånet av hver låntaker.

La oss kort oppsummere med hvilket arsenal vi leter etter odds Tygger på logistisk regresjon:

1. Vi antar at forholdet mellom målvariabelen (prediksjonsverdien) og faktoren som påvirker resultatet er lineær. Av denne grunn brukes den lineær regresjonsfunksjon av den typen Tygger på logistisk regresjon, hvis linje deler objekter (klienter) inn i klasser Tygger på logistisk regresjon и Tygger på logistisk regresjon eller Tygger på logistisk regresjon (kunder som er i stand til å betale tilbake lånet og de som ikke er det). I vårt tilfelle har ligningen formen Tygger på logistisk regresjon.

2. Vi bruker invers logit-funksjon av den typen Tygger på logistisk regresjon å bestemme sannsynligheten for at et objekt tilhører en klasse Tygger på logistisk regresjon.

3. Vi anser vårt treningssett som en implementering av en generalisert Bernoulli planer, det vil si at for hvert objekt genereres en tilfeldig variabel, som med sannsynlighet Tygger på logistisk regresjon (sin egen for hvert objekt) tar verdien 1 og med sannsynlighet Tygger på logistisk regresjon - 0.

4. Vi vet hva vi trenger for å maksimere prøve sannsynlighetsfunksjon tatt i betraktning de aksepterte faktorene slik at den tilgjengelige prøven blir den mest plausible. Med andre ord, vi må velge parametere der prøven vil være mest plausibel. I vårt tilfelle er den valgte parameteren sannsynligheten for tilbakebetaling av lån Tygger på logistisk regresjon, som igjen avhenger av ukjente koeffisienter Tygger på logistisk regresjon. Så vi må finne en slik vektor av vekter Tygger på logistisk regresjon, hvor sannsynligheten for prøven vil være størst.

5. Vi vet hva vi skal maksimere eksempel sannsynlighetsfunksjoner kan bruke metode for maksimal sannsynlighet. Og vi kjenner alle de vanskelige triksene for å jobbe med denne metoden.

Slik viser det seg å være et trekk i flere trinn :)

Husk nå at helt i begynnelsen av artikkelen ønsket vi å utlede to typer tapsfunksjoner Logistisk tap avhengig av hvordan objektklasser er utpekt. Det hendte slik at i klassifiseringsproblemer med to klasser er klassene betegnet som Tygger på logistisk regresjon и Tygger på logistisk regresjon eller Tygger på logistisk regresjon. Avhengig av notasjonen vil utgangen ha en tilsvarende tapsfunksjon.

Sak 1. Klassifisering av gjenstander i Tygger på logistisk regresjon и Tygger på logistisk regresjon

Tidligere, ved bestemmelse av sannsynligheten for en prøve, der sannsynligheten for gjeldsnedbetaling av låntakeren ble beregnet basert på faktorer og gitte koeffisienter Tygger på logistisk regresjon, brukte vi formelen:

Tygger på logistisk regresjon

Faktisk Tygger på logistisk regresjon er meningen logistiske responsfunksjoner Tygger på logistisk regresjon for en gitt vektor av vekter Tygger på logistisk regresjon

Da er det ingenting som hindrer oss i å skrive sample likelihood-funksjonen som følger:

Tygger på logistisk regresjon

Det hender at noen ganger er det vanskelig for noen nybegynnere analytikere å umiddelbart forstå hvordan denne funksjonen fungerer. La oss se på 4 korte eksempler som vil oppklare ting:

1. Hvis Tygger på logistisk regresjon (dvs. i henhold til treningseksemplet tilhører objektet klasse +1), og algoritmen vår Tygger på logistisk regresjon bestemmer sannsynligheten for å klassifisere et objekt til en klasse Tygger på logistisk regresjon lik 0.9, vil denne prøvesannsynligheten bli beregnet som følger:

Tygger på logistisk regresjon

2. Hvis Tygger på logistisk regresjonOg Tygger på logistisk regresjon, da blir regnestykket slik:

Tygger på logistisk regresjon

3. Hvis Tygger på logistisk regresjonOg Tygger på logistisk regresjon, da blir regnestykket slik:

Tygger på logistisk regresjon

4. Hvis Tygger på logistisk regresjonOg Tygger på logistisk regresjon, da blir regnestykket slik:

Tygger på logistisk regresjon

Det er åpenbart at sannsynlighetsfunksjonen vil bli maksimert i tilfelle 1 og 3 eller i det generelle tilfellet - med riktig gjettede verdier av sannsynlighetene for å tilordne et objekt til en klasse Tygger på logistisk regresjon.

På grunn av det faktum at når du bestemmer sannsynligheten for å tilordne et objekt til en klasse Tygger på logistisk regresjon Vi vet bare ikke koeffisientene Tygger på logistisk regresjon, så skal vi se etter dem. Som nevnt ovenfor er dette et optimaliseringsproblem der vi først må finne den deriverte av sannsynlighetsfunksjonen med hensyn til vektvektoren Tygger på logistisk regresjon. Men først er det fornuftig å forenkle oppgaven for oss selv: vi vil se etter den deriverte av logaritmen sannsynlighetsfunksjoner.

Tygger på logistisk regresjon

Hvorfor etter logaritme, i logistiske feilfunksjoner, vi endret skiltet fra Tygger på logistisk regresjonTygger på logistisk regresjon. Alt er enkelt, siden det i problemer med å vurdere kvaliteten på en modell er vanlig å minimere verdien av en funksjon, multipliserte vi høyre side av uttrykket med Tygger på logistisk regresjon og følgelig, i stedet for å maksimere, minimerer vi nå funksjonen.

Faktisk, akkurat nå, foran øynene dine, ble tapsfunksjonen møysommelig utledet - Logistisk tap for et treningssett med to klasser: Tygger på logistisk regresjon и Tygger på logistisk regresjon.

Nå, for å finne koeffisientene, trenger vi bare å finne den deriverte logistiske feilfunksjoner og deretter, ved hjelp av numeriske optimaliseringsmetoder, for eksempel gradientnedstigning eller stokastisk gradientnedstigning, velg de mest optimale koeffisientene Tygger på logistisk regresjon. Men gitt artikkelens betydelige volum, foreslås det å utføre differensieringen på egen hånd, eller kanskje vil dette være et tema for neste artikkel med mye aritmetikk uten så detaljerte eksempler.

Sak 2. Klassifisering av gjenstander i Tygger på logistisk regresjon и Tygger på logistisk regresjon

Tilnærmingen her vil være den samme som med klasser Tygger på logistisk regresjon и Tygger på logistisk regresjon, men selve veien til utgangen av tapsfunksjonen Logistisk tap, vil være mer utsmykket. La oss komme i gang. For sannsynlighetsfunksjonen vil vi bruke operatøren "hvis da...". Det vil si hvis Tygger på logistisk regresjonDet th objektet tilhører klassen Tygger på logistisk regresjon, så bruker vi sannsynligheten for å beregne sannsynligheten for utvalget Tygger på logistisk regresjon, hvis objektet tilhører klassen Tygger på logistisk regresjon, så bytter vi inn i sannsynligheten Tygger på logistisk regresjon. Slik ser sannsynlighetsfunksjonen ut:

Tygger på logistisk regresjon

La oss beskrive på fingrene hvordan det fungerer. La oss vurdere 4 tilfeller:

1. Hvis Tygger på logistisk regresjon и Tygger på logistisk regresjon, da vil prøvetakingssannsynligheten «gå» Tygger på logistisk regresjon

2. Hvis Tygger på logistisk regresjon и Tygger på logistisk regresjon, da vil prøvetakingssannsynligheten «gå» Tygger på logistisk regresjon

3. Hvis Tygger på logistisk regresjon и Tygger på logistisk regresjon, da vil prøvetakingssannsynligheten «gå» Tygger på logistisk regresjon

4. Hvis Tygger på logistisk regresjon и Tygger på logistisk regresjon, da vil prøvetakingssannsynligheten «gå» Tygger på logistisk regresjon

Det er åpenbart at i tilfelle 1 og 3, når sannsynlighetene ble riktig bestemt av algoritmen, sannsynlighetsfunksjon vil bli maksimert, det vil si at dette er akkurat det vi ønsket å få. Denne tilnærmingen er imidlertid ganske tungvint, og neste gang vil vi vurdere en mer kompakt notasjon. Men først, la oss logaritme sannsynlighetsfunksjonen med en endring av fortegn, siden vi nå vil minimere den.

Tygger på logistisk regresjon

La oss erstatte i stedet Tygger på logistisk regresjon uttrykket Tygger på logistisk regresjon:

Tygger på logistisk regresjon

La oss forenkle det riktige begrepet under logaritmen ved å bruke enkle aritmetiske teknikker og få:

Tygger på logistisk regresjon

Nå er det på tide å kvitte seg med operatøren "hvis da...". Merk at når et objekt Tygger på logistisk regresjon tilhører klassen Tygger på logistisk regresjon, så i uttrykket under logaritmen, i nevneren, Tygger på logistisk regresjon hevet til makten Tygger på logistisk regresjon, hvis objektet tilhører klassen Tygger på logistisk regresjon, så heves $e$ til makten Tygger på logistisk regresjon. Derfor kan notasjonen for graden forenkles ved å kombinere begge tilfeller til ett: Tygger på logistisk regresjon. deretter logistisk feilfunksjon vil ta formen:

Tygger på logistisk regresjon

I samsvar med logaritmereglene snur vi brøken og setter ut tegnet "Tygger på logistisk regresjon" (minus) for logaritmen får vi:

Tygger på logistisk regresjon

Her er tapsfunksjonen logistisk tap, som brukes i opplæringssettet med objekter tilordnet klasser: Tygger på logistisk regresjon и Tygger på logistisk regresjon.

Vel, på dette tidspunktet tar jeg permisjon og vi avslutter artikkelen.

Tygger på logistisk regresjon Forfatterens tidligere arbeid er "Bringe den lineære regresjonsligningen til matriseform"

Hjelpematerialer

1. Litteratur

1) Anvendt regresjonsanalyse / N. Draper, G. Smith - 2. utg. – M.: Finans og statistikk, 1986 (oversettelse fra engelsk)

2) Sannsynlighetsteori og matematisk statistikk / V.E. Gmurman - 9. utg. - M.: Videregående skole, 2003

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

4) Forretningsanalyse: fra data til kunnskap / Paklin N. B., Oreshkov V. I. - 2. utg. — St. Petersburg: Peter, 2013

5) Datavitenskap Datavitenskap fra bunnen av / Joel Gras - St. Petersburg: BHV Petersburg, 2017

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

2. Forelesninger, kurs (video)

1) Essensen av den maksimale sannsynlighetsmetoden, Boris Demeshev

2) Maksimal sannsynlighetsmetode i det kontinuerlige tilfellet, Boris Demeshev

3) Logistisk regresjon. Åpent ODS-kurs, Yury Kashnitsky

4) Forelesning 4, Evgeny Sokolov (fra 47 minutter med video)

5) Logistisk regresjon, Vyacheslav Vorontsov

3. Internettkilder

1) Lineære klassifiserings- og regresjonsmodeller

2) Slik forstår du enkelt logistisk regresjon

3) Logistisk feilfunksjon

4) Uavhengige tester og Bernoulli-formel

5) Ballade av MMP

6) Maksimal sannsynlighetsmetode

7) Formler og egenskaper til logaritmer

8) Hvorfor nummer Tygger på logistisk regresjon?

9) Lineær klassifiserer

Kilde: www.habr.com

Legg til en kommentar