Å tygge på logistisk regresjon

Å tygge på logistisk regresjon

I denne artikkelen vil vi gå gjennom de teoretiske utledningene av transformasjonen funksjonen for lineær regresjon i den inverse logit-transformasjonen (ellers kjent som logit-responsfunksjonen). Deretter, ved hjelp av arsenalet metoden for maksimalt sannsynlighet, i samsvar med modellen for logistisk regresjon, vil vi utlede tapfunksjonen Logistic Loss, eller med andre ord, vi vil definere funksjonen som brukes til å tilpasse parameterne i vektvektoren i modellen for logistisk regresjon Å tygge på logistisk regresjon.

Plan for artikkelen:

  1. La oss repetere den lineære avhengigheten mellom to variabler
  2. Vi vil avdekke behovet for transformasjonen funksjonen for lineær regresjon Å tygge på logistisk regresjon i logit-responsfunksjonen Å tygge på logistisk regresjon
  3. Vi vil gjennomføre transformasjoner og utlede logit-responsfunksjonen
  4. La oss prøve å forstå hva som er galt med minste kvadraters metode for å tilpasse parametrene Å tygge på logistisk regresjon functions Logistic Loss
  5. Bruker metoden for maksimalt sannsynlighet for å fastslå parameterjusteringsfunksjonene Å tygge på logistisk regresjon:

    5.1. Tilfelle 1: funksjonen Logistic Loss for objekter med klassebetegnelser 0 og 1:

    Å tygge på logistisk regresjon

    5.2. Tilfelle 2: funksjonen Logistic Loss for objekter med klassebetegnelser -1 og +1:

    Å tygge på logistisk regresjon


Artikkelen inneholder en rekke enkle eksempler der alle beregningene lett kan utføres muntlig eller på papir; i enkelte tilfeller kan en kalkulator være nødvendig. Så vær forberedt 🙂

Denne artikkelen er i stor grad rettet mot datavitere med grunnleggende kunnskaper om maskinlæring.

Artikkelen vil også inkludere kode for å tegne diagrammer og beregninger. All kode er skrevet i python 2.7. Jeg vil på forhånd forklare om «nyheten» til den brukte versjonen - dette er et av kravene for å ta det kjente kurset fra Yandex på den ikke mindre kjente nettplattformen for online utdanning Coursera, og som man kan forvente, er materialet forberedt med utgangspunkt i dette kurset.

01. Lineær avhengighet

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

Det er enkelt! Logistisk regresjon er en av modellene som tilhører den lineære klassifikatoren. Enkelt sagt, oppgaven til en lineær klassifikator er å forutsi målverdier Å tygge på logistisk regresjon fra variabler (regressorer) Å tygge på logistisk regresjon. Det antas at det er en avhengighet mellom trekkene Å tygge på logistisk regresjon og målverdiene Å tygge på logistisk regresjon som er lineær. Derav navnet på klassifikatoren - lineær. Hvis vi skal oppsummere veldig grovt, hviler modellen for logistisk regresjon på antagelsen om en lineær avhengighet mellom trekkene Å tygge på logistisk regresjon og målverdiene Å tygge på logistisk regresjon. Der har vi forbindelsen.

I studio er det første eksemplet, og det handler, riktig nok, om den lineære avhengigheten til de undersøkte størrelsene. Under forberedelsene til artikkelen kom jeg over et eksempel som mange allerede har hørt om — avhengigheten av strømstyrken fra spenningen. («Praktisk regresjonsanalyse», N. Draper, G. Smith). Her vil vi også se på det.

I samsvar med ohms lov:

Å tygge på logistisk regresjon, hvor Å tygge på logistisk regresjon — strømstyrke, Å tygge på logistisk regresjon — spenning, Å tygge på logistisk regresjon — motstand.

Hvis vi ikke visste ohms lov, kunne vi finne avhengigheten empirisk ved å variere Å tygge på logistisk regresjon og måle Å tygge på logistisk regresjon, mens vi holder Å tygge på logistisk regresjon fast. Da ville vi sett at grafen for avhengigheten Å tygge på logistisk regresjon fra Å tygge på logistisk regresjon gir en mer eller mindre rett linje som går gjennom origo. Vi sa «mer eller mindre», fordi selv om avhengigheten faktisk er nøyaktig, kan målingene våre inneholde små feil, og derfor vil punktene på grafen kanskje ikke ligge strengt på linjen, men være tilfeldig spredt rundt den.

Graf 1 «Avhengighet Å tygge på logistisk regresjon fra Å tygge på logistisk regresjon»

Å tygge på logistisk regresjon

Kode for å tegne grafen

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='Faktiske resultater')
plt.xlabel('I', size=16)
plt.ylabel('U', size=16)
plt.legend(prop={'size':14})
plt.show()

02. Behovet for transformasjoner av lineær regresjonsligning

La oss se på et annet eksempel. Forestill deg at vi jobber i en bank og står overfor oppgaven med å bestemme sannsynligheten for at en låntaker tilbakebetaler lånet avhengig av noen faktorer. For å forenkle oppgaven, vurderer vi bare to faktorer: den månedlige lønnen til låntakeren og månedlig betaling for tilbakebetaling av lånet.

Oppgaven er meget hypotetisk, men med dette eksemplet vil vi kunne forstå hvorfor det å bruke funksjonen for lineær regresjon, ikke er tilstrekkelig, og vi vil også finne ut hvilke transformasjoner som kreves av funksjonen.

La oss gå tilbake til eksempelet. Det er forstått at jo høyere lønn, jo mer kan låntakeren månedlig bruke på å tilbakebetale lånet. For et bestemt lønnsspenn vil denne avhengigheten være ganske lineær. La oss for eksempel ta et lønnsspenn fra 60.000R til 200.000R og anta at i det angitte lønnsspenn er sammenhengen mellom månedlig betaling og lønn lineær. Anta at det for det spesifiserte lønnsspennet er avdekket at forholdet mellom lønn og betaling ikke kan være mindre enn 3, og at låntakeren må ha 5.000R til overs. Bare da vil vi anse at låntakeren vil tilbakebetale lånet til banken. Da tar ligningen for lineær regresjon form:

Å tygge på logistisk regresjon

der Å tygge på logistisk regresjon, Å tygge på logistisk regresjon, Å tygge på logistisk regresjon, Å tygge på logistisk regresjon — lønn Å tygge på logistisk regresjontil låntakeren, Å tygge på logistisk regresjon — betalingen på lånet Å tygge på logistisk regresjontil låntakeren.

Ved å sette inn lønn og betaling på lånet med faste parametere Å tygge på logistisk regresjon kan man ta beslutning om å gi eller avslå lånet.

For å forutspreke, la oss merke oss at, ved de gitte parameterne Å tygge på logistisk regresjon den lineære regresjonsfunksjonen, brukt i logistisk respons-funksjon vil gi store verdier som vil vanskeliggjøre beregningene av tilbakebetalingsprobabilitetene. Derfor foreslås det å redusere våre koeffisienter med, la oss si, 25.000 ganger. Denne transformasjonen i koeffisientene vil ikke endre beslutningen om å gi lån. La oss huske på dette til senere, 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»

Å tygge på logistisk regresjon

Kode for å lage 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 henhold til dataene i tabellen ønsker Vasja, med en lønn på 120.000R, å få et lån som han kan tilbakebetale med 3.000R månedlig. Vi har fastslått at for å godkjenne lånet må Vasjas lønn være tre ganger høyere enn betalingene, i tillegg til at han må ha 5.000R til overs. Vasja oppfyller dette kravet: Å tygge på logistisk regresjon. Det blir til og med 106.000R. Til tross for at vi har redusert koeffisientene Å tygge på logistisk regresjon med 25.000 ganger, fikk vi det samme resultatet — lånet kan bli godkjent. Fedya vil også få lånet, mens Lesha, til tross for at han tjener mest, må dempe sine appetitter. Å tygge på logistisk regresjon La oss tegne en graf i dette tilfellet.

Graf 2 «Klassifisering av låntakere»

Kode for å tegne grafen

Å tygge på logistisk regresjon

salary = np.arange(60000,240000,20000) payment = (-w_0-w_1*salary)/w_2fig, 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 - Lånet godkjent') plt.plot(df[df['Decision'] == 'Refusal']['Salary'], df[df['Decision'] == 'Refusal']['Payment'], 's', color = 'red', markersize = 12, label = 'Decision - Lånet avslått') plt.xlabel('Lønn', size = 16) plt.ylabel('Betaling', size = 16) plt.legend(prop = {'size': 14}) plt.show()

Så, vår linje, konstruert i henhold til funksjonen

, skiller de «dårlige» låntakerne fra de «gode». De låntakerne som har ønsker som ikke samsvarer med mulighetene, ligger over linjen (Lesha), mens de som ifølge parametrene i modellen vår kan betale tilbake lånet, ligger under linjen (Vasya og Fedya). Med andre ord, vår linje deler låntakere i to klasser. La oss definere dem som følger: til klassen Å tygge på logistisk regresjonhenfører vi de låntakerne som sannsynligvis vil betale tilbake lånet, til klassen Å tygge på logistisk regresjon henfører vi de låntakerne som sannsynligvis ikke vil kunne betale tilbake lånet. Å tygge på logistisk regresjon eller Å tygge på logistisk regresjon La oss oppsummere funnene fra dette enkle eksemplet. Ta et punkt

og ved å sette inn koordinatene til punktet i den relevante likningen for linjen Å tygge på logistisk regresjon , vurder tre alternativer: Å tygge på logistisk regresjonHvis punktet ligger under linjen, og vi tilordner det til klassen

  1. , vil funksjonsverdien Å tygge på logistisk regresjonvære positiv fra Å tygge på logistisk regresjon . Det betyr at vi kan si at sannsynligheten for å betale tilbake lånet ligger innenfor Å tygge på logistisk regresjon til Å tygge på logistisk regresjon. Jo større funksjonsverdi, jo høyere sannsynlighet. Å tygge på logistisk regresjonHvis punktet ligger over linjen og vi tilordner det til klassen
  2. , vil funksjonsverdien være negativ fra Å tygge på logistisk regresjon eller Å tygge på logistisk regresjon. Da vil vi si at sannsynligheten for å tilbakebetale gjelden ligger innenfor Å tygge på logistisk regresjon til Å tygge på logistisk regresjon, og jo større i modul verdien av funksjonen, jo mer sikkerhet har vi. Å tygge på logistisk regresjon Punktet ligger på linjen, på grensen mellom de to klassene. I så fall vil funksjonsverdien
  3. være lik Å tygge på logistisk regresjon og sannsynligheten for å tilbakebetale lånet er lik Å tygge på logistisk regresjon Nå, forestill deg at vi ikke har to faktorer, men titalls, låntakere ikke tre, men tusen. Da vil vi i stedet for en linje ha Å tygge på logistisk regresjon.

Nå, la oss forestille oss at vi ikke har to faktorer, men titalls, og at låntakerne ikke er tre, men tusen. Da vil vi i stedet for en direkte ... m-metrisk plan og koeffisienter Å tygge på logistisk regresjon Vi vil ikke ta dem fra luften, men utlede dem etter alle regler, basert på akkumulerte data om låntakere som har betalt eller ikke betalt tilbake lånet. Og merk deg, vi velger nå låntakere med allerede kjente koeffisienter. Å tygge på logistisk regresjonEgentlig er oppgaven til den logistiske regresjonsmodellen nettopp å bestemme parametrene Å tygge på logistisk regresjonhvor verdien av tapsfunksjonen Logistic Loss vil strebe etter å være minimal. Men hvordan vektoren Å tygge på logistisk regresjonberegnes, vil vi få vite i det 5. avsnittet av artikkelen. Men la oss nå komme tilbake til vårt lovede land — til vår bankmann og tre av hans kunder.

deployDump Å tygge på logistisk regresjon Vi vet hvem vi kan gi lån til, og hvem vi må si nei til. Men med slik informasjon kan vi ikke gå til direktøren, for de ønsket å få sannsynligheten for tilbakebetaling av lån for hver låntaker. Hva skal vi gjøre? Svaret er enkelt — vi må på en eller annen måte transformere funksjonen Å tygge på logistisk regresjonhvis verdier ligger i området Å tygge på logistisk regresjon til en funksjon der verdiene vil ligge i området Å tygge på logistisk regresjon. Og en slik funksjon eksisterer, den kalles logistisk responsfunksjon eller logit-transformasjon.La oss se på:

Å tygge på logistisk regresjon

La oss se trinnvis hvordan logistisk responsfunksjon oppnås.Merk at vi vil gå i motsatt retning, det vil si at vi antar at vi vet sannsynlighetsverdien som ligger mellom Å tygge på logistisk regresjon til Å tygge på logistisk regresjon og videre vil vi 'rulle ut' denne verdien til hele mengden av tall fra Å tygge på logistisk regresjon til Å tygge på logistisk regresjon.

03. Vi utleder den logistiske responsfunksjonen.

Trinn 1. La oss konvertere sannsynlighetsverdiene til området Å tygge på logistisk regresjon

I løpet av funksjonstransformasjonen Å tygge på logistisk regresjon i logit-responsfunksjonen Å tygge på logistisk regresjon lar vi vår kredittanalytiker være i fred, og i stedet går vi til bookmakers. Nei, selvsagt vil vi ikke plassere innsatser, alt vi er interessert i der, er betydningen av uttrykket, for eksempel sjansen 4 til 1. Odds, kjent av alle spillere som gjør innsatser, er forholdet mellom 'succeser' og 'feil'. Fra sannsynlighets synspunkt er odds sannsynligheten for at en hendelse inntreffer delt på sannsynligheten for at hendelsen ikke skjer. La oss skrive formelen for sjansen for at hendelsen inntreffer Å tygge på logistisk regresjon:

Å tygge på logistisk regresjon

, hvor Å tygge på logistisk regresjon — sannsynligheten for at hendelsen inntreffer, Å tygge på logistisk regresjon — sannsynligheten for at hendelsen IKKE inntreffer

For eksempel, hvis sannsynligheten for at en ung, sterk og livlig hest kalt 'Vintervind' overgår en gammel og slapp dame ved navn 'Matilda' er Å tygge på logistisk regresjon, så sjansene for suksess til «Vetek» vil være Å tygge på logistisk regresjon til Å tygge på logistisk regresjon Å tygge på logistisk regresjon og omvendt, ved å kjenne sjansene, vil det ikke være vanskelig å beregne sannsynligheten Å tygge på logistisk regresjon:

Å tygge på logistisk regresjon

Dermed har vi lært hvordan vi «oversetter» sannsynlighet til sjanser, som tar verdier fra Å tygge på logistisk regresjon til Å tygge på logistisk regresjon. La oss ta enda et skritt og lære å «oversette» sannsynlighet til hele den numeriske linjen fra Å tygge på logistisk regresjon til Å tygge på logistisk regresjon.

Trinn 2. Vi vil oversette sannsynlighetsverdier til området Å tygge på logistisk regresjon

Dette trinnet er veldig enkelt – vi logaritmerer sjansene med grunnlag på Eulers tall Å tygge på logistisk regresjon og får:

Å tygge på logistisk regresjon

Nå vet vi at hvis Å tygge på logistisk regresjon, så vil det være veldig enkelt å beregne verdien Å tygge på logistisk regresjon og dessuten, det burde være positivt: Å tygge på logistisk regresjon. Så er det.

Til vår nysgjerrighet, la oss sjekke, at hvis Å tygge på logistisk regresjon, da forventer vi å se en negativ verdi Å tygge på logistisk regresjon. Sjekker vi: Å tygge på logistisk regresjon. Alt er korrekt.

Nå vet vi hvordan vi oversetter sannsynlighetsverdien fra Å tygge på logistisk regresjon til Å tygge på logistisk regresjon til hele den numeriske linjen fra Å tygge på logistisk regresjon til Å tygge på logistisk regresjon. I neste trinn vil vi gjøre alt motsatt.

Men først, la oss merke oss at i henhold til reglene for logaritmering, ved å kjenne verdien av funksjonen Å tygge på logistisk regresjon, kan vi beregne sjansene:

Å tygge på logistisk regresjon

Denne måten å definere sjanser på, vil komme til nytte i neste trinn.

Trinn 3. Vi skal utlede en formel for å bestemme Å tygge på logistisk regresjon

Så vi har lært, ved å kjenne Å tygge på logistisk regresjon, å finne verdiene til funksjonen Å tygge på logistisk regresjon. Men faktisk trenger vi det helt motsatte – ved å kjenne verdien Å tygge på logistisk regresjon finnes Å tygge på logistisk regresjon. For dette vil vi referere til begrepet om den inverse sjansefunksjonen, i henhold til hvilken:

Å tygge på logistisk regresjon

I artikkelen vil vi ikke utlede den nevnte formelen, men vi vil sjekke med tallene fra eksempelet ovenfor. Vi vet at når sjansene er 4 til 1 (Å tygge på logistisk regresjon), er sannsynligheten for at hendelsen inntreffer 0.8 (Å tygge på logistisk regresjon). La oss gjøre erstatningen: Å tygge på logistisk regresjon. Dette samsvarer med våre tidligere beregninger. La oss gå videre.

I forrige trinn utledet vi at Å tygge på logistisk regresjon, så vi kan gjøre en erstatning i den inverse sjansefunksjonen. Vi får:

Å tygge på logistisk regresjon

La oss dele både teller og nevner med Å tygge på logistisk regresjon, så:

Å tygge på logistisk regresjon

For enhver brann, for å forsikre oss om at vi ikke har gjort noen feil, la oss gjøre en liten kontroll til. I trinn 2 bestemte vi for Å tygge på logistisk regresjon at Å tygge på logistisk regresjon. Så, ved å sette verdien Å tygge på logistisk regresjon inn i den logistiske responsfunksjonen, forventer vi å få Å tygge på logistisk regresjon. Vi setter inn og får: Å tygge 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»

Å tygge på logistisk regresjon

salary = np.arange(60000,240000,20000) payment = (-w_0-w_1*salary)/w_2fig, 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 - Lånet godkjent') plt.plot(df[df['Decision'] == 'Refusal']['Salary'], df[df['Decision'] == 'Refusal']['Payment'], 's', color = 'red', markersize = 12, label = 'Decision - Lånet avslått') plt.xlabel('Lønn', size = 16) plt.ylabel('Betaling', size = 16) plt.legend(prop = {'size': 14}) plt.show()

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 man også møte denne funksjonen som sigmoidfunksjon. Grafen viser tydelig at hovedendringen i sannsynligheten for at et objekt tilhører en klasse skjer over et relativt smalt intervall Å tygge på logistisk regresjon, et sted fra Å tygge på logistisk regresjon til Å tygge på logistisk regresjon.

La oss gå tilbake til vår kredittanalytiker og hjelpe ham med å beregne sannsynligheten for kredittbetaling, ellers risikerer han å miste bonusen 🙂

Tabell 2 «Potensielle låntakere»

Å tygge på logistisk regresjon

Kode for å lage tabellen

proba = []
for i in df['f(w,x)']:
    proba.append(round(logit(i),2))
    
df['Probability'] = proba

df[['Låntakeren', 'Lønn', 'Betaling', 'f(w,x)', 'Beslutning', 'Sannsynlighet']]

Dermed har vi bestemt sannsynligheten for kredittilbakebetaling. Generelt sett virker dette rimelig.

Faktisk er sannsynligheten for at Vasja, med en lønn på 120.000R, kan betale 3.000R til banken hver måned, nær 100%. For øvrig må vi huske at banken kan gi lån til Ljosha, hvis bankens retningslinjer tillater å kreditere kunder med en sannsynlighet for tilbakebetaling som overstiger 0.3. I så fall vil banken sette av større reserver for mulige tap.

Det er også verdt å merke seg at forholdet mellom lønn og betaling på minst 3 og med en reserve på 5.000R ble valgt noe tilfeldig. Derfor kunne vi ikke bruke vektoren av vekter i sin opprinnelige form Å tygge på logistisk regresjon. Vi måtte sterkt redusere koeffisientene, så vi delte hver koeffisient med 25.000, som i praksis tilpasset resultatet. Men dette ble gjort bevisst for å forenkle forståelsen av materialet i begynnelsen. I virkeligheten må vi ikke finne på eller tilpasse koeffisientene, men finne dem. I de følgende seksjonene av artikkelen vil vi utvikle ligninger som brukes til å tilpasse parametrene Å tygge på logistisk regresjon.

04. Metoden for minste kvadrater ved bestemme vekter Å tygge på logistisk regresjon i logistikfunksjonen

Vi kjenner allerede en slik metode for finjustering av vektene Å tygge på logistisk regresjon, som metoden for minste kvadrater (MNK) og hvorfor skulle vi ikke bruke den i oppgaver med binær klassifisering? Faktisk er det ingenting som hindrer å bruke MKN, men denne metoden gir mindre nøyaktige resultater i klassifiseringsoppgaver enn Logistic Loss. Dette har et teoretisk grunnlag. La oss først se på et enkelt eksempel.

La oss anta at modellene våre (som bruker MSE og Logistic Loss) allerede har begynt å tilpasse vektvektoren, Å tygge på logistisk regresjon og vi stoppet beregningen på et eller annet trinn. Det spiller ingen rolle om det er i midten, på slutten eller i begynnelsen, det viktigste er at vi allerede har noen verdier for vektvektoren, og la oss si at ved dette trinnet, vektvektorene Å tygge på logistisk regresjon for begge modellene ikke har forskjeller. Da tar vi de oppnådde vektene og setter dem inn i logit-responsfunksjonen (Å tygge på logistisk regresjon) for et objekt som tilhører klassen Å tygge på logistisk regresjon. Vi undersøker to tilfeller der modellen vår gjør en stor feil i henhold til den tilpassede vekten, og motsatt – modellen er veldig sikker på at objektet tilhører klassen Å tygge på logistisk regresjon. La oss se hvilke straffer som vil bli «utskrevet» ved bruk av MKN og Logistic Loss.

Koden for å beregne straffer avhengig av den brukte tapfunksjonen

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

Tilfellet med en grov feil – modellen tilskriver objektet til klassen Å tygge på logistisk regresjon med en sannsynlighet på 0,01

Straffen ved bruk av MKN vil være:
Å tygge på logistisk regresjon

Straffen ved bruk av Logistic Loss vil være:
Å tygge på logistisk regresjon

Tilfellet med sterk sikkerhet – modellen tilskriver objektet til klassen Å tygge på logistisk regresjon med en sannsynlighet på 0,99

Straffen ved bruk av MKN vil være:
Å tygge på logistisk regresjon

Straffen ved bruk av Logistic Loss vil være:
Å tygge på logistisk regresjon

Dette eksempelet illustrerer godt at ved en grov feil straffer tapfunksjonen Log Loss modellen betydelig sterkere enn MSE. La oss nå undersøke hvilke teoretiske forutsetninger som ligger til grunn for bruk av tapfunksjonen Log Loss i klassifiseringsoppgaver.

05. Metoden for maksimal sannsynlighet og logistisk regresjon

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

For å være på den sikre siden, før vi utvikler eksempelet, minner jeg om at i virkeligheten har vi med et treningssett bestående av tusenvis eller millioner av objekter med dusinvis eller hundrevis av trekk. Men her er tallene valgt slik at de lett kan forstås av en nybegynner datavitenskapsmann.

Vi vender tilbake til eksempelet. La oss si at banksjefen bestemte seg for å gi lån til alle som trenger det, til tross for at algoritmen indikerte at Ljoha ikke burde få det. Og nå har det gått tilstrekkelig med tid, og vi har fått vite hvem av de tre heltene som har betalt tilbake lånet og hvem som ikke har. Som forventet: Vassya og Fedya har betalt tilbake lånet, men Ljoha har ikke. Nå la oss forestille oss at dette resultatet blir vår nye treningsdatasett, og samtidig virker det som om all informasjon om faktorene som påvirker sannsynligheten for lånebetaling (låntakers lønn, beløp av månedlig betaling) har forsvunnet. Intuitivt kan vi anta at enhver tredje låntaker ikke returnerer lånet til banken, eller med andre ord, sannsynligheten for at dette skjer med den neste låntakeren Å tygge på logistisk regresjon. Denne intuitive antagelsen har teoretisk støtte og er basert på metoden for maksimal sannsynlighet, ofte kjent i litteraturen som prinsippet for maksimal sannsynlighet.

La oss først bli kjent med begrepsapparatet.

Sannsynligheten for utvalget er sannsynligheten for å få nettopp dette utvalget, for å oppnå nettopp disse observasjonene/resultatene, det vil si produktet av sannsynlighetene for å oppnå hvert av resultatene i utvalget (for eksempel om Vassya, Fedya og Ljoha har betalt tilbake lånet samtidig).

Sannsynlighetsfunksjonen knyter sannsynligheten for utvalget til verdiene til parametrene i fordelingen.

I vårt tilfelle representerer treningsdatasettet en generalisert Bernoulli-prosess, der den tilfeldige variabelen har to mulige verdier: Å tygge på logistisk regresjon eller Å tygge på logistisk regresjon. Følgelig kan sannsynligheten for utvalget skrives som en sannsynlighetsfunksjon av parameteren Å tygge på logistisk regresjon på følgende måte:

Å tygge på logistisk regresjon
Å tygge på logistisk regresjon

Den ovenfor nevnte oppstillingen kan tolkes som følger. Den felles sannsynligheten for at Vassya og Fedya betaler tilbake lånet er Å tygge på logistisk regresjon, sannsynligheten for at Ljoha IKKE betaler tilbake lånet er Å tygge på logistisk regresjon (siden det faktisk var IKKE tilbakebetaling av lånet), følgelig er den felles sannsynligheten for alle tre hendelsene Å tygge på logistisk regresjon.

Metoden for maksimal sannsynlighet er en metode for å estimere en ukjent parameter ved å maksimere sannsynlighetsfunksjonen. I vårt tilfelle må vi finne en slik verdi Å tygge på logistisk regresjon, der Å tygge på logistisk regresjon når sitt maksimum.

Hvor kommer ideen fra – å søke verdien av en ukjent parameter der sannsynlighetsfunksjonen når sitt maksimum? Ideen stammer fra forståelsen av at utvalget er den eneste tilgjengelige kilden til kunnskap om den underliggende befolkningen. Alt vi vet om befolkningen er representert i utvalget. Derfor kan vi si at utvalget er den mest nøyaktige refleksjonen av populasjonen som er tilgjengelig for oss. Følgelig trenger vi å finne en parameter der det eksisterende utvalget blir mest sannsynlig.

Det er åpenbart at vi har med et optimaliseringsproblem å gjøre, der vi må finne ekstremalpunktet til funksjonen. For å finne ekstremalpunktet, må vi vurdere førsteordensbetingelsen, det vil si sette den deriverte av funksjonen lik null og løse ligningen med hensyn til den ukjente parameteren. Men jakten på den deriverte av produktet av mange faktorer kan vise seg å være en tidkrevende affære, for å unngå dette finnes det en spesiell teknikk – å gå til logaritmen. sannsynlighetsfunksjonen. Hvorfor er en slik overgang mulig? La oss merke oss at vi ikke leter etter selve ekstremum av funksjonenÅ tygge på logistisk regresjon, men etter ekstremalpunktet, det vil si den verdien den ukjente parameteren Å tygge på logistisk regresjon, der Å tygge på logistisk regresjon når maksimalt. Ved å gå til logaritmen endres ikke ekstremalpunktet (selv om selve ekstremum vil være forskjellig), fordi logaritmen er en monoton funksjon.

La oss, i henhold til det ovenforstående, fortsette å utvikle vårt eksempel med lån fra Vasilij, Fedja og Leja. Først går vi til logaritmen til sannsynlighetsfunksjonen:

Å tygge på logistisk regresjon

Nå kan vi enkelt derivere uttrykket etter Å tygge på logistisk regresjon:

Å tygge på logistisk regresjon

Og til slutt vurderer vi førsteordensbetingelsen – setter den deriverte av funksjonen lik null:

Å tygge på logistisk regresjon

Dermed ble vår intuitive vurdering av sannsynligheten for tilbakebetaling av lån Å tygge på logistisk regresjon teoretisk begrunnet.

Flott, men hva skal vi nå gjøre med slik informasjon? Hvis vi antar at hver tredje låntaker ikke returnerer pengene til banken, vil den sistnevnte uungåelig gå konkurs. Slik er det, men når vi vurderer sannsynligheten for tilbakebetaling av lån til å være lik Å tygge på logistisk regresjon Vi har ikke tatt hensyn til faktorene som påvirker tilbakebetalingen av lån: låntakers lønn og størrelsen på den månedlige betalingen. La oss huske at vi tidligere beregnet sannsynligheten for at hvert lån blir tilbakebetalt med hensyn til disse faktorene. Det er logisk at sannsynlighetene våre derfor er forskjellige fra konstanten som er lik Å tygge på logistisk regresjon.

La oss definere sannsynlighet for utvalgene:

Koden for beregning av sannsynlighet for utvalgene

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 'Sannsynlighet for utvalget ved konstant verdi p=2/3:', round(likelihood(y,p_const),3)

print '****************************************************************************************************'

print 'Sannsynlighet for utvalget ved beregnet verdi p:', round(likelihood(y,p_log_response),3)

Sannsynlighet for utvalget ved konstant verdi Å tygge på logistisk regresjon:

Å tygge på logistisk regresjon

Sannsynlighet for utvalget ved beregning av tilbakebetalingsrisiko med hensyn til faktorene Å tygge på logistisk regresjon:

Å tygge på logistisk regresjon
Å tygge på logistisk regresjon

Sannsynligheten for utvalget med sannsynlighet beregnet ut fra faktorene viste seg å være høyere enn sannsynligheten ved konstant verdi. Hva betyr dette? Det betyr at kjennskapen til faktorene har gjort det mulig å skaffe seg en mer nøyaktig vurdering av tilbakebetalingsrisikoen for hver kunde. Derfor, ved utdeling av neste lån, vil det være mer korrekt å bruke modellen for vurdering av gjeldsbetaling, som er foreslått i slutten av den tredje delen av artikkelen.

Men hvis vi da trenger å maksimere funksjonen for sannsynligheten til utvalget, hvorfor ikke bruke en algoritme som gir sannsynligheter for Vasilij, Fedja og Leša, for eksempel 0.99, 0.99 og 0.01 henholdsvis? Kanskje en slik algoritme vil prestere godt på treningsutvalget, da den nærmer seg sannsynlighet for utvalget. Å tygge på logistisk regresjon, men først og fremst vil en slik algoritme sannsynligvis ha vanskeligheter med generaliseringsevnen, for det andre vil denne algoritmen helt sikkert ikke være lineær. Og hvis metoder for å bekjempe overtilpasning (lik svak generaliseringsevne) åpenbart ikke er en del av planen for denne artikkelen, så la oss gå nærmere inn på det andre punktet. For dette, er det nok å svare på et enkelt spørsmål. Kan sannsynligheten for kredittbetaling for Vasja og Fedja være lik med tanke på de faktorene vi kjenner til? Ut ifra sunn fornuft, selvfølgelig ikke, det kan den ikke. Så for å betale tilbake lånet, vil Vasja betale 2.5% av lønnen sin hver måned, mens Fedja vil betale nesten 27,8%. Også på graf 2, «Klassifisering av kunder», ser vi at Vasja ligger betydelig lenger fra linjen som deler klassene, enn Fedja. Og til slutt vet vi at funksjonen Å tygge på logistisk regresjon for Vasja og Fedja har forskjellige verdier: 4.24 for Vasja og 1.0 for Fedja. Hvis Fedja for eksempel tjente mye mer eller ba om et mindre lån, ville sannsynligheten for kredittbetaling for Vasja og Fedja vært liknende. Med andre ord, lineær avhengighet kan ikke forfalskes. Og hvis vi faktisk hadde beregnet koeffisientene Å tygge på logistisk regresjon, og ikke hentet dem fra luften, kan vi trygt påstå at våre verdier Å tygge på logistisk regresjon allerede gir den beste vurderingen av sannsynligheten for kredittbetaling av hver låntaker, men siden vi ble enige om å anta at definisjonen av koeffisientene Å tygge på logistisk regresjon ble utført etter alle regler, vil vi derfor anta at – våre koeffisienter gir den beste vurderingen av sannsynligheten 🙂

Men vi har blitt distrahert. I dette avsnittet må vi forstå hvordan vektoren med vekter Å tygge på logistisk regresjon, som er nødvendig for å estimere sannsynligheten for tilbakebetaling av lån fra hver låntaker, blir bestemt.

Se kort oppsummert hva vi har til rådighet i jakten på koeffisientene Å tygge på logistisk regresjon:

1. Vi antar at forholdet mellom den avhengige variabelen (det prognostiske verdien) og faktoren som påvirker resultatet – er lineært. Av denne grunn benyttes den lineære regresjonsfunksjonen typen Å tygge på logistisk regresjon, linjen som deler objektene (kundene) i klasser Å tygge på logistisk regresjon og Å tygge på logistisk regresjon eller Å tygge på logistisk regresjon (kunder som kan tilbakebetale lån og de som ikke kan). I vårt tilfelle har ligningen formen Å tygge på logistisk regresjon.

2. Vi bruker den inverse logit-transformasjonsfunksjonen typen Å tygge på logistisk regresjon for å bestemme sannsynligheten for at et objekt tilhører klassen Å tygge på logistisk regresjon.

3. Vi betrakter vårt treningsutvalg som en realisering av den generaliserte Bernoulli-skjemaer, det vil si at for hvert objekt genereres en tilfeldig variabel som med sannsynlighet Å tygge på logistisk regresjon (sin egen for hvert objekt) tar verdien 1 og med sannsynlighet Å tygge på logistisk regresjon – 0.

4. Vi vet at vi trenger å maksimere funksjonen for sannsynligheten til utvalget med hensyn til de aksepterte faktorene for å gjøre utvalget så plausibelt som mulig. Med andre ord, vi må finne slike parametere at utvalget er mest plausibelt. I vårt tilfelle er den parameteren vi ønsker å finne sannsynligheten for tilbakebetaling av lån Å tygge på logistisk regresjon, som igjen avhenger av ukjente koeffisienter Å tygge på logistisk regresjon. Dermed trenger vi å finne en vektervektor Å tygge på logistisk regresjon, der plausibiliteten til utvalget blir maksimal.

5. Vi vet at for å maksimere plausibilitetsfunksjonen til utvalget kan man bruke metoden for maksimalt sannsynlighet. Og vi kan alle de smarte triksene for å jobbe med denne metoden.

Slik blir det en komplisert tilnærming 🙂

Og nå, la oss huske at i begynnelsen av artikkelen ønsket vi å utlede to typer tapfunksjoner Logistic Loss avhengig av hvordan klassene av objekter er merket. Det har blitt tradisjonelt at i klassifiseringsoppgaver med to klasser, klassene blir merket som Å tygge på logistisk regresjon og Å tygge på logistisk regresjon eller Å tygge på logistisk regresjon. Avhengig av merket, vil det i utgangen være den tilsvarende tapfunksjonen.

Tilfelle 1. Klassifisering av objekter som Å tygge på logistisk regresjon og Å tygge på logistisk regresjon

Tidligere, når vi bestemte plausibiliteten til utvalget, der sannsynligheten for gjeldsbetaling fra låntakeren ble beregnet basert på faktorer og gitte koeffisienter Å tygge på logistisk regresjon, brukte vi formelen:

Å tygge på logistisk regresjon

Faktisk Å tygge på logistisk regresjon — er dette verdien til den logistiske responsfunksjonen Å tygge på logistisk regresjon med den gitte vektervektoren Å tygge på logistisk regresjon

Da er det ingenting som hindrer oss i å skrive plausibilitetsfunksjonen til utvalget slik:

Å tygge på logistisk regresjon

Det skjer ofte at noen nybegynnere analytikere synes det er vanskelig å forstå hvordan denne funksjonen fungerer. La oss se på 4 korte eksempler som alle vil avklare:

1. Hvis Å tygge på logistisk regresjon (dvs. i samsvar med treningsutvalget gjelder objektet for klassen +1), og vår algoritme Å tygge på logistisk regresjon bestemmer sannsynligheten for at objektet tilhører klassen Å tygge på logistisk regresjon som er lik 0.9, så denne delen av plausibiliteten til utvalget vil bli beregnet slik:

Å tygge på logistisk regresjon

2. Hvis Å tygge på logistisk regresjon, men Å tygge på logistisk regresjon, så beregningen vil være slik:

Å tygge på logistisk regresjon

3. Hvis Å tygge på logistisk regresjon, men Å tygge på logistisk regresjon, så beregningen vil være slik:

Å tygge på logistisk regresjon

4. Hvis Å tygge på logistisk regresjon, men Å tygge på logistisk regresjon, så beregningen vil være slik:

Å tygge på logistisk regresjon

Åpenbart vil plausibilitetsfunksjonen maksimeres i tilfellene 1 og 3 eller generelt — ved korrekt gjettede verdier for sannsynligheten for at objektet tilhører klassen Å tygge på logistisk regresjon.

På grunn av at når man bestemmer sannsynligheten for at et objekt tilhører klassen Å tygge på logistisk regresjon vi kjenner bare ikke koeffisientene Å tygge på logistisk regresjon, så vi skal lete etter dem. Som nevnt tidligere, er dette et optimaliseringsproblem der vi i begynnelsen trenger å finne den deriverte av sannsynlighetsfunksjonen med hensyn til vekstervaktoren Å tygge på logistisk regresjon. Men det gir mening å forenkle oppgaven: vi skal finne den deriverte av logaritmen sannsynlighetsfunksjonen.

Å tygge på logistisk regresjon

Hvorfor etter logaritmering, i logistisk tap funksjon, endret vi tegnet fra Å tygge på logistisk regresjon En funksjon har blitt Å tygge på logistisk regresjon. Det er enkelt, siden man i vurderingsoppgaver vanligvis ønsker å minimere verdien av funksjonen, så vi multipliserte høyresiden av uttrykket med Å tygge på logistisk regresjon og dermed, i stedet for å maksimere, minimerer vi nå funksjonen.

Egentlig, nå, for dine øyne ble tap funksjonen – Logistic Loss for treningssett med to klasser: Å tygge på logistisk regresjon og Å tygge på logistisk regresjon.

Nå, for å finne koeffisientene, trenger vi bare å finne den deriverte logistisk tap funksjon og deretter, ved å bruke numeriske optimaliseringsmetoder som gradientnedstigning eller stochastisk gradientnedstigning, velge de mest optimale koeffisientene Å tygge på logistisk regresjon. Men, med tanke på den allerede ganske utførlige artikkelen, foreslås det å gjøre differensieringen selv, eller kanskje dette blir temaet for neste artikkel med mer aritmetikk uten så mange detaljerte eksempler.

Tilfelle 2. Klassifisering av objekter på Å tygge på logistisk regresjon og Å tygge på logistisk regresjon

Tilnærmingen her vil være den samme som for klassene Å tygge på logistisk regresjon og Å tygge på logistisk regresjon, men selve veien til å utlede tap funksjonen Logistic Loss, vil være mer intrikat. La oss begynne. Vi skal bruke operatoren for sannsynlighet «hvis…, så…». Det vil si, hvis Å tygge på logistisk regresjon-te objektet tilhører klassen Å tygge på logistisk regresjon, så for å beregne sannsynligheten til utvalget bruker vi sannsynligheten Å tygge på logistisk regresjon, hvis objektet tilhører klassen Å tygge på logistisk regresjon, så setter vi inn i sannsynligheten Å tygge på logistisk regresjon. Slik ser sannsynlighetsfunksjonen ut:

Å tygge på logistisk regresjon

La oss forklare hvordan dette fungerer. La oss se på 4 tilfeller:

1. Hvis Å tygge på logistisk regresjon og Å tygge på logistisk regresjon, så i sannsynligheten til utvalget «går» Å tygge på logistisk regresjon

2. Hvis Å tygge på logistisk regresjon og Å tygge på logistisk regresjon, så i sannsynligheten til utvalget «går» Å tygge på logistisk regresjon

3. Hvis Å tygge på logistisk regresjon og Å tygge på logistisk regresjon, så i sannsynligheten til utvalget «går» Å tygge på logistisk regresjon

4. Hvis Å tygge på logistisk regresjon og Å tygge på logistisk regresjon, så i sannsynligheten til utvalget «går» Å tygge på logistisk regresjon

Det er åpenbart at i tilfelle 1 og 3, når sannsynlighetene ble riktig bestemt av algoritmen, sannsynlighetsfunksjonen vil maksimeres, det er akkurat det vi ønsket å oppnå. Imidlertid er denne tilnærmingen ganske omstendelig, og videre skal vi se på en mer kompakt fremstilling. Men først, la oss logaritmere sannsynlighetsfunksjonen med endring av tegn, ettersom vi nå skal minimere den.

Å tygge på logistisk regresjon

Vi setter inn i stedet for Å tygge på logistisk regresjon uttrykket Å tygge på logistisk regresjon:

Å tygge på logistisk regresjon

La oss forenkle det høyre leddet under logaritmen ved å bruke enkle aritmetiske teknikker og få:

Å tygge på logistisk regresjon

Og nå er det på tide å kvitte seg med operatoren «hvis…, så…». Legg merke til at når objektet Å tygge på logistisk regresjon tilhører klassen Å tygge på logistisk regresjon, så i uttrykket under logaritmen, i nevneren, Å tygge på logistisk regresjon heves til eksponenten Å tygge på logistisk regresjon, hvis objektet tilhører klassen Å tygge på logistisk regresjon, så $e$ heves til eksponenten Å tygge på logistisk regresjon. Følgelig kan vi forenkle eksponentnotasjonen — samle begge tilfeller i ett: Å tygge på logistisk regresjon. Da den logistiske feilfunksjonen form:

Å tygge på logistisk regresjon

I henhold til logaritmereglene, snur vi brøken og tar minustegnet "Å tygge på logistisk regresjon" ut av logaritmen, og får:

Å tygge på logistisk regresjon

Her er tapsfunksjonen logistic Loss, som brukes i treningssettet med objekter som tilhører klassene: Å tygge på logistisk regresjon og Å tygge på logistisk regresjon.

Vel, på dette punktet tar jeg farvel, og vi avslutter artikkelen.

Å tygge på logistisk regresjon Forfatterens forrige arbeid — «Vi fører ligningen for lineær regresjon inn i matriseform»

Hjelpematerialer

1. Litteratur

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

2) Sannsynlighetsteori og matematisk statistikk / V.E. Gmurman — 9. utg. — M.: Høyere skole, 2003

3) Sannsynlighetsteori / N.I. Tjernova — Novosibirsk: Novosibirsk statsuniversitet, 2007

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

5) Data Science — Vitenskap om data fra bunnen av / Joel Grass — St. Petersburg: BKHV Petersburg, 2017

6) Praktisk statistikk for Data Science spesialister / P. Bruce, E. Bruce — St. Petersburg: BKHV Petersburg, 2018

2. Forelesninger, kurs (video)

1) Essensen av maksimum Likelihood-metoden, Boris Demechev

2) Maksimum Likelihood-metoden i kontinuerlig tilfelle, Boris Demechev

3) Logistisk regresjon. Åpen kurs ODS, Yury Kashnitsky

4) Forelesning 4, Evgeny Sokolov (fra 47. minutt av video)

5) Logistisk regresjon, Vyacheslav Vorontsov

3. Internett-kilder

1) Lineære klassifiserings- og regresjonsmodeller

2) Hvordan lett forstå logistisk regresjon

3) Logistisk feilfunksjon

4) Uavhengige tester og Bernoulli-formelen

5) Ballade om MMP

6) Metoden for maksimal sannsynlighet

7) Formler og egenskaper ved logaritmer

8) Hvorfor tallet Å tygge på logistisk regresjon?

9) Lineær klassifikator

Kilde: habr.com

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster