U ovom članku ćemo analizirati teorijske proračune transformacije funkcije linearne regresije в funkcija inverzne logit transformacije (inače se naziva funkcija logističkog odgovora). Zatim, koristeći arsenal metoda maksimalne vjerovatnoće, u skladu sa modelom logističke regresije, izvodimo funkciju gubitka Logistički gubitak, ili drugim riječima, definirat ćemo funkciju kojom se biraju parametri vektora težine u modelu logističke regresije .
Pregled članka:
- Ponovimo linearni odnos između dvije varijable
- Hajde da identifikujemo potrebu za transformacijom funkcije linearne regresije в funkcija logističkog odgovora
- Izvršimo transformacije i izlaz funkcija logističkog odgovora
- Pokušajmo razumjeti zašto je metoda najmanjih kvadrata loša pri odabiru parametara funkcije Logistički gubitak
- Koristimo metoda maksimalne vjerovatnoće za utvrđivanje funkcije odabira parametara :
5.1. Slučaj 1: funkcija Logistički gubitak za objekte sa oznakama klasa 0 и 1:
5.2. Slučaj 2: funkcija Logistički gubitak za objekte sa oznakama klasa -1 и +1:
Članak je prepun jednostavnih primjera u kojima je sve proračune lako napraviti usmeno ili na papiru; u nekim slučajevima može biti potreban kalkulator. Zato spremite se :)
Ovaj članak je prvenstveno namijenjen naučnicima podataka sa početnim nivoom znanja o osnovama mašinskog učenja.
Članak će također pružiti kod za crtanje grafikona i izračunavanja. Sav kod je napisan na jeziku python 2.7. Dozvolite mi da unaprijed objasnim "novinu" korišćene verzije - ovo je jedan od uslova za pohađanje dobro poznatog kursa iz Yandex na jednako poznatoj platformi za online obrazovanje Coursera, i, kako se moglo pretpostaviti, materijal je pripremljen na osnovu ovog kursa.
01. Pravolinijska zavisnost
Sasvim je razumno postaviti pitanje - kakve veze s tim imaju linearna zavisnost i logistička regresija?
To je jednostavno! Logistička regresija je jedan od modela koji pripadaju linearnom klasifikatoru. Jednostavnim riječima, zadatak linearnog klasifikatora je da predvidi ciljne vrijednosti iz varijabli (regresora) . Smatra se da je zavisnost između karakteristika i ciljne vrijednosti linearno. Otuda i naziv klasifikatora - linearni. Vrlo grubo rečeno, model logističke regresije zasniva se na pretpostavci da postoji linearna veza između karakteristika i ciljne vrijednosti . Ovo je veza.
U studiju postoji prvi primjer, a radi se, tačno, o pravolinijskoj zavisnosti veličina koje se proučavaju. U procesu pripreme članka naišao sam na primjer koji je mnoge ljude već postavio na ivicu - ovisnost struje o naponu („Primijenjena regresiona analiza“, N. Draper, G. Smith). Pogledaćemo i ovde.
U skladu sa Ohmov zakon:
gde - jačina struje, - voltaža, - otpor.
Da ne znamo Ohmov zakon, tada bismo mogli empirijski pronaći zavisnost promjenom i merenje , dok podržava fiksno. Tada bismo vidjeli da je graf zavisnosti iz daje manje-više ravnu liniju kroz ishodište. Kažemo „manje ili više“ jer, iako je odnos zapravo tačan, naša mjerenja mogu sadržavati male greške, pa stoga tačke na grafikonu možda neće pasti točno na pravu, već će biti nasumično razbacane oko nje.
Grafikon 1 “Zavisnost” iz »
Kod za crtanje grafikona
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. Potreba za transformacijom jednačine linearne regresije
Pogledajmo još jedan primjer. Zamislimo da radimo u banci i naš zadatak je da odredimo vjerovatnoću da će zajmoprimac otplatiti kredit u zavisnosti od određenih faktora. Da bismo pojednostavili zadatak, razmotrit ćemo samo dva faktora: mjesečnu platu zajmoprimca i mjesečni iznos otplate kredita.
Zadatak je vrlo uvjetovan, ali na ovom primjeru možemo razumjeti zašto ga nije dovoljno koristiti funkcije linearne regresije, a također saznajte koje transformacije treba izvršiti s funkcijom.
Vratimo se na primjer. Podrazumeva se da što je veća plata, zajmoprimac će moći da izdvaja mesečno za otplatu kredita. Istovremeno, za određeni raspon plata ovaj odnos će biti prilično linearan. Na primjer, uzmimo raspon plata od 60.000 RUR do 200.000 RUR i pretpostavimo da je u navedenom rasponu plata zavisnost veličine mjesečne uplate od veličine plate linearna. Recimo da je za navedeni raspon plata otkriveno da omjer plata i isplata ne može pasti ispod 3 i da zajmoprimac i dalje mora imati 5.000 RUR u rezervi. I samo u ovom slučaju, pretpostavit ćemo da će zajmoprimac otplatiti kredit banci. Tada će jednadžba linearne regresije poprimiti oblik:
gdje , , , - plata -ti zajmoprimac, - plaćanje kredita -th zajmoprimac.
Zamjena plate i otplate kredita sa fiksnim parametrima u jednačinu Možete odlučiti da li ćete izdati ili odbiti kredit.
Gledajući unaprijed, napominjemo da, sa zadatim parametrima funkcija linearne regresije, korišten u funkcije logističkog odgovora će proizvesti velike vrijednosti koje će komplicirati proračune za određivanje vjerovatnoće otplate kredita. Stoga se predlaže smanjenje naših koeficijenata, recimo, 25.000 puta. Ova transformacija koeficijenata neće promijeniti odluku o izdavanju kredita. Upamtimo ovu tačku za budućnost, ali sada, da bude još jasnije o čemu govorimo, razmotrimo situaciju sa tri potencijalna zajmoprimca.
Tabela 1 “Potencijalni zajmoprimci”
Kod za generisanje tabele
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']]
U skladu sa podacima u tabeli, Vasya, sa platom od 120.000 RUR, želi da dobije zajam kako bi mogao da ga otplaćuje mesečno po 3.000 RUR. Utvrdili smo da Vasyina plata mora biti veća od trostrukog iznosa uplate da bi se odobrio zajam, a da još mora ostati 5.000 RUR. Vasya zadovoljava ovaj zahtjev: . Ostalo je čak 106.000 RUR. Uprkos činjenici da prilikom izračunavanja smanjili smo šanse 25.000 puta, rezultat je bio isti - kredit može biti odobren. Fedya će također dobiti pozajmicu, ali će Lesha, uprkos činjenici da prima najviše, morati obuzdati svoje apetite.
Nacrtajmo graf za ovaj slučaj.
Grafikon 2 “Klasifikacija zajmoprimaca”
Kod za crtanje grafikona
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()
Dakle, naša prava linija, konstruisana u skladu sa funkcijom , odvaja “loše” zajmoprimce od “dobrih”. Oni zajmoprimci čije se želje ne poklapaju sa njihovim mogućnostima su iznad crte (Lesha), dok su oni koji su, prema parametrima našeg modela u mogućnosti da otplate kredit, ispod crte (Vasya i Fedya). Drugim riječima, možemo reći ovo: naša direktna linija dijeli zajmoprimce u dvije klase. Označimo ih na sljedeći način: u klasu One zajmoprimce za koje postoji najveća vjerovatnoća da će otplatiti kredit ćemo klasificirati kao ili Uključićemo one zajmoprimce koji najverovatnije neće moći da otplate kredit.
Hajde da sumiramo zaključke iz ovog jednostavnog primjera. Hajde da uzmemo poentu i, zamjenom koordinata tačke u odgovarajuću jednačinu prave , razmotrite tri opcije:
- Ako je tačka ispod linije i dodeljujemo je klasi , zatim vrijednost funkcije će biti pozitivan od do . To znači da možemo pretpostaviti da je vjerovatnoća otplate kredita unutar granica . Što je veća vrijednost funkcije, veća je vjerovatnoća.
- Ako je tačka iznad prave i dodeljujemo je klasi ili , tada će vrijednost funkcije biti negativna od do . Tada ćemo pretpostaviti da je vjerovatnoća otplate duga unutar i, što je veća apsolutna vrijednost funkcije, to je veće naše povjerenje.
- Tačka je na pravoj liniji, na granici između dvije klase. U ovom slučaju, vrijednost funkcije biće jednaki a vjerovatnoća otplate kredita je jednaka .
Sada, zamislimo da nemamo dva faktora, već desetine, i ne tri, već hiljade zajmoprimaca. Tada ćemo umjesto prave linije imati m-dimenzionalni ravan i koeficijenti nećemo biti izvučeni iz vazduha, već izvedeni po svim pravilima, a na osnovu prikupljenih podataka o zajmoprimcima koji su ili nisu otplatili kredit. I zaista, imajte na umu da sada biramo zajmoprimce koristeći već poznate koeficijente . Zapravo, zadatak modela logističke regresije je upravo da odredi parametre , pri čemu je vrijednost funkcije gubitka Logistički gubitak težiće minimumu. Ali o tome kako se vektor izračunava , saznat ćemo više u 5. odjeljku članka. U međuvremenu se vraćamo u obećanu zemlju - našem bankaru i njegova tri klijenta.
Zahvaljujući funkciji znamo kome se može dati kredit, a kome odbiti. Ali ne možete ići kod direktora s takvim informacijama, jer su od nas htjeli dobiti vjerovatnoću otplate kredita od strane svakog zajmoprimca. sta da radim? Odgovor je jednostavan - moramo nekako transformirati funkciju , čije vrijednosti leže u rasponu na funkciju čije će vrijednosti ležati u rasponu . I takva funkcija postoji, zove se funkcija logističkog odgovora ili inverzno-logit transformacija. upoznajte:
Pogledajmo korak po korak kako to funkcionira funkcija logističkog odgovora. Imajte na umu da ćemo hodati u suprotnom smjeru, tj. pretpostavićemo da znamo vrijednost vjerovatnoće koja leži u rasponu od do a zatim ćemo ovu vrijednost „odmotati“ na cijeli raspon brojeva iz do .
03. Izvodimo funkciju logističkog odgovora
Korak 1. Pretvorite vrijednosti vjerovatnoće u raspon
Tokom transformacije funkcije в funkcija logističkog odgovora Ostavićemo našeg kreditnog analitičara na miru i umjesto toga krenuti u obilazak kladionica. Ne, naravno, nećemo se kladiti, sve što nas zanima tu je značenje izraza, na primjer, šansa je 4 prema 1. Kvote, poznate svim kladionicima, su omjer "uspjeha" prema " neuspjesi”. U terminima vjerovatnoće, šanse su vjerovatnoća da se događaj dogodi podijeljena vjerovatnoćom da se događaj ne dogodi. Zapišimo formulu za mogućnost da se neki događaj dogodi :
gde - vjerovatnoća da se dogodi neki događaj, — vjerovatnoća da se događaj NE dogodi
Na primjer, ako je vjerovatnoća da će mlad, snažan i razigran konj pod nadimkom “Veterok” pobijediti staru i mlohavu staricu po imenu “Matilda” na trci jednaka , tada će šanse za uspjeh “Veteroka” biti к i obrnuto, znajući šanse, neće nam biti teško izračunati vjerovatnoću :
Tako smo naučili da „prevedemo“ verovatnoću u šanse, koje uzimaju vrednosti iz do . Napravimo još jedan korak i naučimo da “prevedemo” vjerovatnoću na cijelu brojevnu pravu iz do .
Korak 2. Pretvorite vrijednosti vjerovatnoće u raspon
Ovaj korak je vrlo jednostavan - uzmimo logaritam kvote na bazu Ojlerovog broja i dobijamo:
Sada znamo da ako , zatim izračunajte vrijednost bit će vrlo jednostavan i, osim toga, trebao bi biti pozitivan: . Istina je.
Iz radoznalosti, hajde da proverimo šta ako , tada očekujemo da ćemo vidjeti negativnu vrijednost . Provjeravamo: . Tako je.
Sada znamo kako pretvoriti vrijednost vjerovatnoće iz do duž cijele brojevne prave od do . U sljedećem koraku ćemo učiniti suprotno.
Za sada napominjemo da u skladu sa pravilima logaritma, znajući vrijednost funkcije , možete izračunati šanse:
Ova metoda određivanja kvota će nam biti od koristi u sljedećem koraku.
Korak 3. Izvedemo formulu za određivanje
Tako smo naučili, znajući , pronađite vrijednosti funkcije . Međutim, u stvari, potrebno nam je upravo suprotno - poznavanje vrijednosti naći . Da bismo to učinili, okrenimo se konceptu kao što je funkcija inverzne kvote, prema kojoj:
U članku nećemo izvoditi gornju formulu, ali ćemo je provjeriti pomoću brojeva iz gornjeg primjera. Znamo da sa kvotama 4 prema 1 (), vjerovatnoća da će se događaj dogoditi je 0.8 (). Napravimo zamjenu: . To se poklapa s našim ranijim proračunima. Idemo dalje.
U zadnjem koraku smo to zaključili , što znači da možete izvršiti zamjenu u funkciji inverzne kvote. Dobijamo:
Podijelite i brojilac i imenilac sa , Zatim:
Za svaki slučaj, da se uvjerimo da nigdje nismo pogriješili, uradimo još jednu malu provjeru. U koraku 2, mi za utvrdio to . Zatim, zamjena vrijednosti u funkciju logističkog odgovora, očekujemo da dobijemo . Zamenimo i dobijemo:
Čestitamo, dragi čitatelju, upravo smo izveli i testirali funkciju logističkog odgovora. Pogledajmo graf funkcije.
Grafikon 3 “Funkcija logističkog odgovora”
Kod za crtanje grafikona
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()
U literaturi možete pronaći i naziv ove funkcije kao sigmoidna funkcija. Grafikon jasno pokazuje da se glavna promjena u vjerovatnoći da objekt pripada klasi događa unutar relativno malog raspona , odnekud do .
Predlažem da se vratite našem kreditnom analitičaru i pomognete mu da izračuna vjerovatnoću otplate kredita, inače rizikuje da ostane bez bonusa :)
Tabela 2 “Potencijalni zajmoprimci”
Kod za generisanje tabele
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']]
Dakle, utvrdili smo vjerovatnoću otplate kredita. Općenito, čini se da je ovo istina.
Zaista, vjerovatnoća da će Vasya, sa platom od 120.000 RUR, moći dati banci 3.000 RUR svakog mjeseca je blizu 100%. Usput, moramo shvatiti da banka može izdati kredit Leshi ako politika banke predviđa, na primjer, kreditiranje klijenata sa vjerovatnoćom otplate kredita većom od, recimo, 0.3. Samo što će u tom slučaju banka stvoriti veću rezervu za moguće gubitke.
Takođe treba napomenuti da je odnos plata i isplata od najmanje 3 i sa marginom od 5.000 RUR uzet sa plafona. Stoga nismo mogli koristiti vektor težina u njegovom izvornom obliku . Trebali smo jako smanjiti koeficijente, a u ovom slučaju smo svaki koeficijent podijelili sa 25.000, odnosno, u suštini, korigirali smo rezultat. Ali to je učinjeno posebno kako bi se pojednostavilo razumijevanje materijala u početnoj fazi. U životu nećemo morati izmišljati i prilagođavati koeficijente, već ih pronaći. U narednim odjeljcima članka ćemo izvesti jednadžbe pomoću kojih se biraju parametri .
04. Metoda najmanjih kvadrata za određivanje vektora težina u funkciji logističkog odgovora
Ovu metodu za odabir vektora težina već znamo , as metoda najmanjih kvadrata (LSM) i zapravo, zašto ga onda ne bismo koristili u problemima binarne klasifikacije? Zaista, ništa vas ne sprečava da koristite MNC, samo ova metoda u klasifikacionim problemima daje rezultate koji su manje tačni od Logistički gubitak. Za to postoji teorijska osnova. Pogledajmo prvo jedan jednostavan primjer.
Pretpostavimo da su naši modeli (koristeći MSE и Logistički gubitak) su već započeli odabir vektora težina i zaustavili smo proračun u nekom koraku. Nije bitno da li u sredini, na kraju ili na početku, glavno je da već imamo neke vrijednosti vektora težina i pretpostavimo da je u ovom koraku vektor težina za oba modela nema razlike. Zatim uzmite dobivene utege i zamijenite ih funkcija logističkog odgovora () za neki objekat koji pripada klasi . Ispitujemo dva slučaja kada je, u skladu sa odabranim vektorom težina, naš model veoma pogrešan i obrnuto - model je veoma siguran da objekat pripada klasi . Da vidimo koje će kazne biti izdate prilikom upotrebe MNC и Logistički gubitak.
Kod za izračunavanje kazni ovisno o korištenoj funkciji gubitka
# класс объекта
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
Slučaj greške — model dodjeljuje objekt klasi sa vjerovatnoćom od 0,01
Kazna za korištenje MNC bice:
Kazna za korištenje Logistički gubitak bice:
Slučaj jakog samopouzdanja — model dodjeljuje objekt klasi sa vjerovatnoćom od 0,99
Kazna za korištenje MNC bice:
Kazna za korištenje Logistički gubitak bice:
Ovaj primjer dobro ilustruje da u slučaju velike greške funkcija gubitka Log Loss kažnjava model znatno više od MSE. Hajde da sada shvatimo koja je teorijska pozadina korištenja funkcije gubitka Log Loss u problemima klasifikacije.
05. Metoda maksimalne vjerovatnoće i logistička regresija
Kao što je obećano na početku, članak je prepun jednostavnih primjera. U studiju je još jedan primjer i stari gosti - bankovni zajmoprimci: Vasya, Fedya i Lesha.
Za svaki slučaj, prije razvijanja primjera, dopustite mi da vas podsjetim da u životu imamo posla s uzorkom obuke od hiljada ili miliona objekata sa desetinama ili stotinama karakteristika. Međutim, ovdje su brojke uzete tako da se lako mogu uklopiti u glavu početnika koji se bavi podacima.
Vratimo se na primjer. Zamislimo da je direktor banke odlučio izdati kredit svima kojima je potrebna, uprkos činjenici da mu je algoritam rekao da ga ne izdaje Leshi. A sada je prošlo dovoljno vremena i znamo ko je od trojice heroja vratio kredit, a koji nije. Ono što se moglo očekivati: Vasya i Fedya su vratili zajam, ali Lesha nije. Zamislimo sada da će nam ovaj rezultat biti novi uzorak obuke, a istovremeno kao da su nestali svi podaci o faktorima koji utiču na vjerovatnoću otplate kredita (plata dužnika, visina mjesečne uplate). Tada, intuitivno, možemo pretpostaviti da svaki treći zajmoprimac ne otplaćuje kredit banci, odnosno da je vjerovatnoća da će sljedeći zajmoprimac otplatiti kredit. . Ova intuitivna pretpostavka ima teorijsku potvrdu i na njoj se zasniva metoda maksimalne vjerovatnoće, često se u literaturi naziva princip maksimalne vjerovatnoće.
Prvo, hajde da se upoznamo sa konceptualnim aparatom.
Vjerovatnoća uzorkovanja je vjerovatnoća da se dobije upravo takav uzorak, da se dobiju upravo takva zapažanja/rezultati, tj. proizvod vjerovatnoće dobijanja svakog od rezultata uzorka (na primjer, da li je zajam Vasye, Fedya i Lesha otplaćen ili nije otplaćen u isto vrijeme).
Funkcija vjerovatnoće povezuje vjerovatnoću uzorka sa vrijednostima parametara distribucije.
U našem slučaju, uzorak za obuku je generalizirana Bernoullijeva shema, u kojoj slučajna varijabla uzima samo dvije vrijednosti: ili . Stoga se vjerovatnoća uzorka može napisati kao funkcija vjerovatnoće parametra kako slijedi:
Gornji unos se može protumačiti na sljedeći način. Zajednička vjerovatnoća da će Vasya i Fedya otplatiti zajam jednaka je , vjerovatnoća da Lesha NEĆE otplatiti kredit je jednaka (budući da NIJE bila otplata kredita), stoga je zajednička vjerovatnoća sva tri događaja jednaka .
Metoda maksimalne vjerovatnoće je metoda za procjenu nepoznatog parametra maksimiziranjem funkcije vjerovatnoće. U našem slučaju, moramo pronaći takvu vrijednost , pri čemu dostiže svoj maksimum.
Odakle dolazi stvarna ideja - tražiti vrijednost nepoznatog parametra pri kojoj funkcija vjerovatnoće dostiže maksimum? Poreklo ideje proizlazi iz ideje da je uzorak jedini izvor znanja koji nam je dostupan o populaciji. Sve što znamo o populaciji predstavljeno je u uzorku. Stoga, sve što možemo reći je da je uzorak najprecizniji odraz populacije koja nam je dostupna. Stoga moramo pronaći parametar po kojem dostupni uzorak postaje najvjerovatniji.
Očigledno, imamo posla s optimizacijskim problemom u kojem trebamo pronaći točku ekstrema funkcije. Da bi se pronašla tačka ekstrema, potrebno je razmotriti uslov prvog reda, odnosno izjednačiti derivaciju funkcije sa nulom i rešiti jednačinu u odnosu na željeni parametar. Međutim, traženje derivacije proizvoda velikog broja faktora može biti dugotrajan zadatak; da bi se to izbjeglo, postoji posebna tehnika - prelazak na logaritam funkcije vjerovatnoće. Zašto je takva tranzicija moguća? Obratimo pažnju na činjenicu da ne tražimo ekstremum same funkcije, i tačka ekstrema, odnosno vrijednost nepoznatog parametra , pri čemu dostiže svoj maksimum. Prilikom prelaska na logaritam, tačka ekstrema se ne mijenja (iako će se sam ekstremum razlikovati), budući da je logaritam monotona funkcija.
Hajdemo, u skladu s gore navedenim, nastaviti razvijati naš primjer s pozajmicama od Vasya, Fedya i Lesha. Prvo pređimo na logaritam funkcije vjerovatnoće:
Sada možemo lako razlikovati izraz po :
I na kraju, razmotrite uslov prvog reda - izjednačavamo derivaciju funkcije sa nulom:
Dakle, naša intuitivna procjena vjerovatnoće otplate kredita bilo teorijski opravdano.
Odlično, ali šta da radimo sa ovom informacijom sada? Ako pretpostavimo da svaki treći zajmoprimac ne vrati novac banci, onda će ova neminovno bankrotirati. Tako je, ali samo kada se procijeni vjerovatnoća otplate kredita jednaka Nismo uzeli u obzir faktore koji utiču na otplatu kredita: platu zajmoprimca i visinu mesečne uplate. Podsjetimo, prethodno smo izračunali vjerovatnoću otplate kredita od strane svakog klijenta, uzimajući u obzir te iste faktore. Logično je da smo dobili vjerovatnoće različite od konstante jednake .
Definirajmo vjerovatnoću uzoraka:
Kod za izračunavanje vjerovatnoće uzorka
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)
Vjerojatnost uzorka pri konstantnoj vrijednosti :
Uzorak vjerovatnoće prilikom izračunavanja vjerovatnoće otplate kredita uzimajući u obzir faktore :
Ispostavilo se da je vjerovatnoća uzorka sa vjerovatnoćom izračunatom u zavisnosti od faktora veća od vjerovatnoće sa konstantnom vrijednošću vjerovatnoće. Šta to znači? To sugerira da je poznavanje faktora omogućilo tačniji odabir vjerovatnoće otplate kredita za svakog klijenta. Zbog toga bi pri izdavanju sledećeg kredita ispravnije bilo koristiti model koji je predložen na kraju odeljka 3 ovog člana za procenu verovatnoće otplate duga.
Ali onda, ako želimo maksimizirati funkcija vjerovatnoće uzorka, zašto onda ne koristiti neki algoritam koji će proizvesti vjerovatnoće za Vasyu, Fedyu i Lesha, na primjer, jednake 0.99, 0.99 i 0.01, respektivno. Možda će takav algoritam dobro funkcionirati na uzorku za obuku, jer će približiti vrijednost vjerovatnoće uzorka , ali, prvo, takav algoritam će najvjerovatnije imati poteškoća sa sposobnošću generalizacije, a drugo, ovaj algoritam definitivno neće biti linearan. A ako metode borbe protiv pretreniranosti (jednako slaba sposobnost generalizacije) očito nisu uključene u plan ovog članka, prođimo kroz drugu točku detaljnije. Da biste to učinili, samo odgovorite na jednostavno pitanje. Može li vjerovatnoća da će Vasya i Fedya otplatiti kredit biti ista, uzimajući u obzir nama poznate faktore? Sa stanovišta zdrave logike, naravno da nije, ne može. Tako će Vasya plaćati 2.5% svoje plate mjesečno za otplatu kredita, a Fedya - skoro 27,8%. Takođe u grafikonu 2 „Klasifikacija klijenata“ vidimo da je Vasya mnogo dalje od linije koja razdvaja klase od Fedya. I konačno, znamo da je funkcija za Vasyu i Fedya uzima različite vrijednosti: 4.24 za Vasyu i 1.0 za Fedya. Sada, ako je Fedya, na primjer, zaradio red veličine više ili zatražio manji zajam, tada bi vjerovatnoće otplate kredita za Vasju i Fedyu bile slične. Drugim riječima, linearna ovisnost se ne može prevariti. I ako smo stvarno izračunali šanse , i nije ih uzeo iz zraka, možemo sa sigurnošću reći da su naše vrijednosti najbolje nam omogućavaju da procijenimo vjerovatnoću otplate kredita od strane svakog zajmoprimca, ali pošto smo se dogovorili da pretpostavimo da će određivanje koeficijenata izvršeno po svim pravilima, onda ćemo tako pretpostaviti - naši koeficijenti nam omogućavaju da damo bolju procjenu vjerovatnoće :)
Međutim, skrećemo pažnju. U ovom dijelu moramo razumjeti kako se određuje vektor težina , što je neophodno za procjenu vjerovatnoće otplate kredita od strane svakog zajmoprimca.
Hajde da ukratko sumiramo koji arsenal tražimo :
1. Pretpostavljamo da je odnos između ciljne varijable (predviđene vrijednosti) i faktora koji utječe na rezultat linearan. Iz tog razloga se koristi funkcija linearne regresije takve vrste , čija linija dijeli objekte (klijente) u klase и ili (klijenti koji su u mogućnosti da otplate kredit i oni koji nisu). U našem slučaju, jednačina ima oblik .
2. Koristimo inverzna logit funkcija takve vrste kako bi se odredila vjerovatnoća da objekt pripada klasi .
3. Naš set za obuku smatramo implementacijom generalizovanog Bernoullijeve šeme, odnosno za svaki objekat se generiše slučajna varijabla, koja sa vjerovatnoćom (svoj za svaki objekt) uzima vrijednost 1 i sa vjerovatnoćom - 0.
4. Znamo šta treba da maksimiziramo funkcija vjerovatnoće uzorka uzimajući u obzir prihvaćene faktore kako bi raspoloživi uzorak postao najvjerovatniji. Drugim riječima, potrebno je odabrati parametre po kojima će uzorak biti najvjerovatniji. U našem slučaju, odabrani parametar je vjerovatnoća otplate kredita , što opet zavisi od nepoznatih koeficijenata . Dakle, moramo pronaći takav vektor težina , pri čemu će vjerovatnoća uzorka biti maksimalna.
5. Znamo šta da povećamo funkcije uzorka vjerovatnoće mogu koristiti metoda maksimalne vjerovatnoće. I znamo sve lukave trikove za rad s ovom metodom.
Ovako se ispostavilo da je to potez u više koraka :)
Zapamtite da smo na samom početku članka htjeli izvesti dvije vrste funkcija gubitka Logistički gubitak ovisno o tome kako su klase objekata označene. Desilo se da se u klasifikacionim problemima sa dve klase klase označavaju kao и ili . Ovisno o notaciji, izlaz će imati odgovarajuću funkciju gubitka.
Slučaj 1. Klasifikacija objekata u и
Ranije, prilikom utvrđivanja vjerovatnoće uzorka, u kojem je vjerovatnoća otplate duga od strane zajmoprimca izračunata na osnovu faktora i datih koeficijenata , primijenili smo formulu:
Zapravo je značenje funkcije logističkog odgovora za dati vektor težina
Tada nas ništa ne sprječava da napišemo funkciju vjerovatnoće uzorka na sljedeći način:
Dešava se da je nekim analitičarima početnicima ponekad teško odmah shvatiti kako ova funkcija funkcionira. Pogledajmo 4 kratka primjera koji će sve razjasniti:
1. ako (tj. prema uzorku za obuku, objekat pripada klasi +1), i naš algoritam određuje vjerovatnoću klasificiranja objekta u klasu jednako 0.9, tada će se vjerovatnoća ovog dijela uzorka izračunati na sljedeći način:
2. ako i , tada će računica biti ovakva:
3. ako i , tada će računica biti ovakva:
4. ako i , tada će računica biti ovakva:
Očigledno je da će funkcija vjerovatnoće biti maksimizirana u slučajevima 1 i 3 ili u općenitom slučaju - s ispravno nagađanim vrijednostima vjerojatnosti dodjeljivanja objekta u klasu .
Zbog činjenice da prilikom određivanja vjerovatnoće dodjeljivanja objekta u klasu Samo ne znamo koeficijente , onda ćemo ih potražiti. Kao što je gore spomenuto, ovo je problem optimizacije u kojem prvo trebamo pronaći derivaciju funkcije vjerovatnoće u odnosu na vektor pondera . Međutim, prvo ima smisla pojednostaviti zadatak za sebe: potražit ćemo izvod logaritma funkcije vjerovatnoće.
Zašto nakon logaritma, u funkcije logističke greške, promijenili smo znak iz na . Sve je jednostavno, pošto je u problemima procene kvaliteta modela uobičajeno minimizirati vrednost funkcije, desnu stranu izraza množimo sa i prema tome, umjesto maksimiziranja, sada minimiziramo funkciju.
Zapravo, upravo sada, pred vašim očima, funkcija gubitka je mukotrpno izvedena - Logistički gubitak za trening set sa dva razreda: и .
Sada, da bismo pronašli koeficijente, samo trebamo pronaći izvod funkcije logističke greške a zatim, koristeći metode numeričke optimizacije, kao što je gradijentni pad ili stohastički gradijent pad, odaberite najoptimalnije koeficijente . Ali, s obzirom na popriličan obim članka, predlaže se da sami izvršite diferencijaciju, ili će to možda biti tema za sljedeći članak s puno aritmetike bez tako detaljnih primjera.
Slučaj 2. Klasifikacija objekata u и
Ovdje će pristup biti isti kao i kod časova и , već sam put do izlaza funkcije gubitka Logistički gubitak, bit će ukrašeniji. Hajde da počnemo. Za funkciju vjerovatnoće koristićemo operator "ako onda...". Odnosno, ako th objekt pripada klasi , zatim da izračunamo vjerovatnoću uzorka koristimo vjerovatnoću , ako objekt pripada klasi , onda zamjenjujemo u vjerovatnoću . Ovako izgleda funkcija vjerovatnoće:
Opišimo na prste kako to funkcionira. Razmotrimo 4 slučaja:
1. ako и , tada će vjerovatnoća uzorkovanja "proći"
2. ako и , tada će vjerovatnoća uzorkovanja "proći"
3. ako и , tada će vjerovatnoća uzorkovanja "proći"
4. ako и , tada će vjerovatnoća uzorkovanja "proći"
Očigledno je da u slučajevima 1 i 3, kada su vjerovatnoće ispravno određene algoritmom, funkcija vjerovatnoće će biti maksimizirana, odnosno to je upravo ono što smo željeli dobiti. Međutim, ovaj pristup je prilično glomazan i sljedeće ćemo razmotriti kompaktniju notaciju. Ali prvo, hajde da logaritmiramo funkciju vjerovatnoće s promjenom predznaka, jer ćemo je sada minimizirati.
Zamenimo umesto toga izraz :
Pojednostavimo pravi pojam pod logaritmom koristeći jednostavne aritmetičke tehnike i dobijemo:
Sada je vrijeme da se riješite operatera "ako onda...". Imajte na umu da kada objekat pripada klasi , zatim u izrazu pod logaritmom, u nazivniku, podignut na vlast , ako objekt pripada klasi , tada se $e$ diže na stepen . Stoga se notacija stepena može pojednostaviti kombinovanjem oba slučaja u jedan: . Onda funkcija logističke greške će poprimiti oblik:
U skladu s pravilima logaritma, okrećemo razlomak i stavljamo znak "" (minus) za logaritam, dobijamo:
Ovdje je funkcija gubitka logistički gubitak, koji se koristi u skupu za obuku sa objektima dodijeljenim klasama: и .
Pa, u ovom trenutku odlazim i zaključujemo članak.
Pomoćni materijali
1. Književnost
1) Primijenjena regresiona analiza / N. Draper, G. Smith - 2. izd. – M.: Finansije i statistika, 1986 (prevod s engleskog)
2) Teorija vjerovatnoće i matematička statistika / V.E. Gmurman - 9. izd. - M.: Viša škola, 2003
3) Teorija vjerovatnoće / N.I. Černova - Novosibirsk: Novosibirski državni univerzitet, 2007
4) Poslovna analitika: od podataka do znanja / Paklin N. B., Oreshkov V. I. - 2. izd. — Sankt Peterburg: Petar, 2013
5) Nauka o podacima Nauka o podacima od nule / Joel Gras - Sankt Peterburg: BHV Petersburg, 2017.
6) Praktična statistika za stručnjake iz nauke o podacima / P. Bruce, E. Bruce - Sankt Peterburg: BHV Petersburg, 2018.
2. Predavanja, kursevi (video)
1)
2)
3)
4)
5)
3. Internet izvori
1)
2)
4)
6)
7)
8)