U ovom ćemo članku analizirati teorijske proračune transformacije funkcije linearne regresije в funkcija inverzne logit transformacije (drugače nazvana funkcija logističkog odgovora). Zatim, koristeći arsenal metoda najveće vjerojatnosti, u skladu s modelom logističke regresije, izvodimo funkciju gubitka Logistički gubitak, odnosno definirat ćemo funkciju kojom se biraju parametri težinskog vektora u modelu logističke regresije .
Pregled članka:
- Ponovimo linearni odnos između dviju varijabli
- Utvrdimo potrebu za transformacijom funkcije linearne regresije в funkcija logističkog odgovora
- Provedimo transformacije i izlaz funkcija logističkog odgovora
- Pokušajmo shvatiti zašto je metoda najmanjih kvadrata loša pri odabiru parametara funkcije Logistički gubitak
- Koristimo metoda najveće vjerojatnosti za utvrđivanje funkcije odabira parametara :
5.1. Slučaj 1: funkcija Logistički gubitak za objekte s oznakama klase 0 и 1:
5.2. Slučaj 2: funkcija Logistički gubitak za objekte s oznakama klase -1 и +1:
Članak je prepun jednostavnih primjera u kojima je sve izračune lako napraviti usmeno ili na papiru; u nekim slučajevima može biti potreban kalkulator. Pa pripremite se :)
Ovaj je članak prvenstveno namijenjen podatkovnim znanstvenicima s početnom razinom znanja o osnovama strojnog učenja.
Članak će također pružiti kôd za crtanje grafikona i izračune. Sav kod je napisan na jeziku piton 2.7. Dopustite mi da unaprijed objasnim "novost" korištene verzije - to je jedan od uvjeta za pohađanje dobro poznatog tečaja iz Yandex na isto tako poznatoj online obrazovnoj platformi Coursera, i, kao što se moglo pretpostaviti, materijal je pripremljen na temelju ovog tečaja.
01. Pravocrtna ovisnost
Sasvim je razumno postaviti pitanje - kakve veze ima linearna ovisnost i logistička regresija?
Jednostavno je! Logistička regresija je jedan od modela koji pripadaju linearnom klasifikatoru. Jednostavnim riječima, zadatak linearnog klasifikatora je predvidjeti ciljane vrijednosti iz varijabli (regresora) . Smatra se da je ovisnost između karakteristika i ciljne vrijednosti linearni. Otuda i naziv klasifikatora - linearni. Vrlo grubo rečeno, model logističke regresije temelji se na pretpostavci da postoji linearni odnos između karakteristika i ciljne vrijednosti . Ovo je veza.
U studiju je prvi primjer i radi se, točno, o pravocrtnoj ovisnosti veličina koje se proučavaju. U procesu pripreme članka naišao sam na primjer koji je već mnoge naljutio - ovisnost struje o naponu (“Primijenjena regresijska analiza”, N. Draper, G. Smith). Pogledat ćemo to i ovdje.
U skladu s Ohmov zakon:
Gdje - jakost struje, - napon, - otpor.
Da nismo znali Ohmov zakon, onda bismo mogli empirijski pronaći ovisnost promjenom i mjerenje , dok podržava fiksni. Tada bismo vidjeli da je graf ovisnosti iz daje više ili manje ravnu liniju kroz ishodište. Kažemo "više ili manje" jer, iako je odnos zapravo točan, naša mjerenja mogu sadržavati male pogreške, pa stoga točke na grafikonu možda neće pasti točno na liniju, već će biti nasumično raštrkane oko nje.
Grafikon 1 “Ovisnost” 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 jednadžbe linearne regresije
Pogledajmo još jedan primjer. Zamislimo da radimo u banci i naš je zadatak odrediti kolika je vjerojatnost da dužnik vrati kredit ovisno o određenim čimbenicima. Kako bismo pojednostavili zadatak, razmotrit ćemo samo dva faktora: mjesečnu plaću zajmoprimca i mjesečni iznos otplate kredita.
Zadatak je vrlo uvjetan, ali ovim primjerom možemo razumjeti zašto ga nije dovoljno koristiti funkcije linearne regresije, a također saznajte koje transformacije je potrebno provesti s funkcijom.
Vratimo se primjeru. Podrazumijeva se da što je veća plaća, dužnik će mjesečno moći izdvojiti više za otplatu kredita. Istodobno, za određeni raspon plaća taj će odnos biti prilično linearan. Na primjer, uzmimo raspon plaće od 60.000 200.000 RUR do 3 5.000 RUR i pretpostavimo da je u navedenom rasponu plaće ovisnost veličine mjesečne isplate o veličini plaće linearna. Recimo da je za navedeni raspon plaća otkriveno da omjer plaće i isplate ne može pasti ispod XNUMX, a zajmoprimac i dalje mora imati rezervu od XNUMX RUR. I samo u ovom slučaju, pretpostavit ćemo da će dužnik vratiti kredit banci. Tada će jednadžba linearne regresije poprimiti oblik:
gdje , , , - plata -ti zajmoprimac, - plaćanje kredita -th zajmoprimac.
Zamjena plaće i otplate kredita s fiksnim parametrima u jednadžbu Možete odlučiti hoćete li izdati ili odbiti kredit.
Gledajući unaprijed, napominjemo da, uz zadane parametre funkcija linearne regresije, korišteno u funkcije logističkog odgovora će proizvesti velike vrijednosti koje će komplicirati izračune za određivanje vjerojatnosti 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 ovo za ubuduće, ali sada, da bi bilo još jasnije o čemu govorimo, razmotrimo situaciju s tri potencijalna zajmoprimca.
Tablica 1 “Potencijalni zajmoprimci”
Kod za generiranje tablice
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']]
Sukladno podacima u tablici, Vasya, s plaćom od 120.000 RUR, želi dobiti kredit kako bi ga mogao otplaćivati mjesečno u iznosu od 3.000 RUR. Utvrdili smo da za odobrenje zajma Vasjina plaća mora biti tri puta veća od iznosa isplate, a mora ostati još 5.000 RUR. Vasya zadovoljava ovaj zahtjev: . Čak 106.000 RUR ostaje. Unatoč tome što se pri proračunu smanjili smo izglede 25.000 puta, rezultat je bio isti - kredit može biti odobren. Fedya će također dobiti kredit, ali Lesha će, unatoč činjenici da dobiva najviše, morati obuzdati svoje apetite.
Nacrtajmo graf za ovaj slučaj.
Grafikon 2 “Klasifikacija zajmoprimaca”
Kod za crtanje grafa
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 ravna crta, konstruirana u skladu s funkcijom , odvaja "loše" zajmoprimce od "dobrih". Oni zajmoprimci čije se želje ne poklapaju s njihovim mogućnostima nalaze se iznad crte (Lesha), dok su oni koji su, prema parametrima našeg modela, sposobni otplatiti kredit, ispod crte (Vasya i Fedya). Drugim riječima, možemo reći sljedeće: naša izravna linija dijeli zajmoprimce u dvije klase. Označimo ih na sljedeći način: klasi One zajmoprimce koji će najvjerojatnije vratiti kredit klasificirati ćemo kao ili Uključit ćemo one zajmoprimce koji najvjerojatnije neće moći vraćati kredit.
Sažmimo zaključke iz ovog jednostavnog primjera. Uzmimo bod i zamjenom koordinata točke u odgovarajuću jednadžbu pravca , razmotrite tri opcije:
- Ako je točka ispod crte i pripisujemo je klasi , zatim vrijednost funkcije bit će pozitivno od na . To znači da možemo pretpostaviti da je vjerojatnost otplate kredita unutar . Što je veća vrijednost funkcije, veća je vjerojatnost.
- Ako je točka iznad pravca i pridružujemo je klasi ili , tada će vrijednost funkcije biti negativna od na . Tada ćemo pretpostaviti da je vjerojatnost otplate duga unutar i što je veća apsolutna vrijednost funkcije, to je veće naše povjerenje.
- Točka je na ravnoj liniji, na granici između dva razreda. U ovom slučaju, vrijednost funkcije bit će jednaki a vjerojatnost vraćanja kredita jednaka je .
Sada zamislimo da nemamo dva čimbenika, nego desetke, a ne tri, nego tisuće zajmoprimaca. Tada ćemo umjesto ravne linije imati m-dimenzionalni ravnina i koeficijenti nećemo biti izvađeni iz zraka, već izvedeni po svim pravilima, a na temelju prikupljenih podataka o dužnicima koji su ili nisu vratili kredit. I doista, imajte na umu da sada biramo zajmoprimce koristeći već poznate koeficijente . Zapravo, zadatak logističkog regresijskog modela je upravo određivanje parametara , pri kojoj je vrijednost funkcije gubitka Logistički gubitak težit će minimumu. Ali o tome kako se vektor izračunava , više ćemo saznati u 5. dijelu č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 zajam, a kome treba uskratiti. Ali s takvim podacima ne možete ići direktoru, jer su od nas htjeli dobiti vjerojatnost otplate kredita po svakom dužniku. Što uraditi? 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 inverzna logit transformacija. Upoznajte:
Pogledajmo korak po korak kako to funkcionira funkcija logističkog odgovora. Imajte na umu da ćemo hodati u suprotnom smjeru, tj. pretpostavit ćemo da znamo vrijednost vjerojatnosti, koja se nalazi u rasponu od na a zatim ćemo ovu vrijednost “odmotati” na cijeli niz brojeva od na .
03. Deriviramo logističku funkciju odgovora
Korak 1. Pretvorite vrijednosti vjerojatnosti u raspon
Tijekom transformacije funkcije в funkcija logističkog odgovora Ostavit ćemo našeg kreditnog analitičara na miru i umjesto toga krenuti u obilazak kladionica. Ne, naravno, nećemo se kladiti, sve što nas tu zanima je značenje izraza, npr. šansa je 4 prema 1. Koeficijenti, poznati svim kladioničarima, su omjer "uspjeha" i " neuspjesi”. U terminima vjerojatnosti, izgledi su vjerojatnost da će se događaj dogoditi podijeljena s vjerojatnošću da se događaj neće dogoditi. Zapišimo formulu za vjerojatnost događanja događaja :
Gdje - vjerojatnost nastanka događaja, — vjerojatnost da se događaj NE dogodi
Na primjer, ako je vjerojatnost da mladi, snažni i razigrani konj po nadimku “Veterok” u utrci pobijedi staru i mlohavu staricu po imenu “Matilda” jednaka , onda će šanse za uspjeh za “Veterok” biti к i obrnuto, znajući izglede, neće nam biti teško izračunati vjerojatnost :
Dakle, naučili smo "prevesti" vjerojatnost u šanse, koje uzimaju vrijednosti iz na . Napravimo još jedan korak i naučimo "prevesti" vjerojatnost na cijeli brojevni pravac na .
Korak 2. Pretvorite vrijednosti vjerojatnosti u raspon
Ovaj korak je vrlo jednostavan - uzmimo logaritam izgleda na bazi Eulerovog broja i dobivamo:
Sada znamo da ako , zatim izračunajte vrijednost bit će vrlo jednostavan i, štoviše, trebao bi biti pozitivan: . To je istina.
Iz znatiželje, provjerimo što ako , tada očekujemo da ćemo vidjeti negativnu vrijednost . Provjeravamo: . Tako je.
Sada znamo kako pretvoriti vrijednost vjerojatnosti iz na duž cijelog brojevnog pravca od na . U sljedećem koraku ćemo učiniti suprotno.
Za sada napominjemo da u skladu s pravilima logaritma, znamo vrijednost funkcije , možete izračunati izglede:
Ova metoda određivanja koeficijenata bit će nam korisna u sljedećem koraku.
Korak 3. Izvedimo formulu za određivanje
Tako smo učili, znajući , pronađite vrijednosti funkcije . Međutim, zapravo nam je potrebno upravo suprotno – poznavanje vrijednosti pronaći . Da bismo to učinili, obratimo se konceptu kao što je funkcija inverznih izgleda, prema kojoj:
U članku nećemo izvoditi gornju formulu, već ćemo je provjeriti pomoću brojeva iz gornjeg primjera. Znamo da s izgledima 4 prema 1 (), vjerojatnost da se događaj dogodi je 0.8 (). Napravimo zamjenu: . To se poklapa s našim ranijim izračunima. Idemo dalje.
U zadnjem koraku smo to zaključili , što znači da možete izvršiti zamjenu u funkciji obrnutih omjera. Dobivamo:
Podijelite i brojnik i nazivnik sa , zatim:
Za svaki slučaj, da se uvjerimo da nigdje nismo pogriješili, napravit ćemo još jednu malu provjeru. U koraku 2, mi za odredio da . Zatim, zamjena vrijednosti u funkciju logističkog odgovora, očekujemo da ćemo dobiti . Zamijenimo 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 grafa
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 se također može pronaći naziv ove funkcije kao sigmoidna funkcija. Grafikon jasno pokazuje da se glavna promjena u vjerojatnosti da objekt pripada klasi događa unutar relativno malog raspona , negdje od na .
Predlažem da se vratite našem kreditnom analitičaru i pomognete mu izračunati vjerojatnost otplate kredita, inače riskira da ostane bez bonusa :)
Tablica 2 “Potencijalni zajmoprimci”
Kod za generiranje tablice
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 vjerojatnost povrata kredita. Općenito, ovo se čini istinitim.
Doista, vjerojatnost da će Vasya, s plaćom od 120.000 RUR, moći dati 3.000 RUR banci svaki mjesec je blizu 100%. Usput, moramo razumjeti da banka može izdati zajam Leshi ako politika banke predviđa, na primjer, kreditiranje klijenata s vjerojatnošću 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đer treba napomenuti da je omjer plaće i isplate od najmanje 3 i s maržom od 5.000 RUR uzet sa stropa. Stoga nismo mogli koristiti vektor težine u izvornom obliku . Trebalo je jako smanjiti koeficijente, au ovom slučaju smo svaki koeficijent podijelili s 25.000, odnosno u biti smo korigirali rezultat. Ali to je učinjeno posebno kako bi se pojednostavilo razumijevanje materijala u početnoj fazi. U životu nećemo trebati izmišljati i prilagođavati koeficijente, već ih pronaći. U sljedećim odjeljcima članka izvest ćemo 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 odabira vektora težina već poznajemo Kao metoda najmanjih kvadrata (LSM) i zapravo, zašto ga onda ne bismo koristili u problemima binarne klasifikacije? Doista, ništa vas ne sprječava u korištenju MNC, samo ova metoda u problemima klasifikacije daje rezultate koji su manje točni od Logistički gubitak. Za to postoji teoretska osnova. Pogledajmo prvo jedan jednostavan primjer.
Pretpostavimo da naši modeli (koristeći MSE и Logistički gubitak) već su započeli odabir vektora težina i zaustavili smo izračun u nekom koraku. Nije važno 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 objekt koji pripada klasi . Ispitujemo dva slučaja kada je, u skladu s odabranim vektorom težina, naš model jako pogrešan i obrnuto - model je vrlo siguran da objekt pripada klasi . Da vidimo koje će se kazne izdati prilikom korištenja MNC и Logistički gubitak.
Kod za izračun 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 s vjerojatnošću od 0,01
Kazna za korištenje MNC bit će:
Kazna za korištenje Logistički gubitak bit će:
Slučaj snažnog povjerenja — model dodjeljuje objekt klasi s vjerojatnošću od 0,99
Kazna za korištenje MNC bit će:
Kazna za korištenje Logistički gubitak bit će:
Ovaj primjer dobro ilustrira da u slučaju velike pogreške funkcija gubitka Gubitak dnevnika penalizira model značajno više od MSE. Razmotrimo sada koja je teorijska pozadina korištenja funkcije gubitka Gubitak dnevnika u problemima klasifikacije.
05. Metoda najveće vjerojatnosti 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 - zajmoprimci banke: Vasya, Fedya i Lesha.
Za svaki slučaj, prije razvijanja primjera, podsjetit ću vas da u životu imamo posla s uzorkom za obuku od tisuća ili milijuna objekata s desecima ili stotinama karakteristika. Međutim, ovdje su brojke uzete tako da lako mogu stati u glavu podatkovnog znanstvenika početnika.
Vratimo se primjeru. Zamislimo da je direktor banke odlučio izdati kredit svima kojima je potreban, unatoč činjenici da mu je algoritam rekao da ga ne izda Leshi. A sada je prošlo dovoljno vremena i znamo tko je od trojice heroja vratio kredit, a tko nije. Što je bilo za očekivati: Vasja i Fedja su vratili kredit, ali Leša nije. Sada zamislimo da će nam ovaj rezultat biti novi uzorak za obuku, a istodobno kao da su nestali svi podaci o čimbenicima koji utječu na vjerojatnost otplate kredita (plaća zajmoprimca, veličina mjesečne rate). Tada, intuitivno, možemo pretpostaviti da svaki treći dužnik ne otplaćuje kredit banci, odnosno vjerojatnost da će sljedeći dužnik vratiti kredit . Ova intuitivna pretpostavka ima teoretsku potvrdu i temelji se na metoda najveće vjerojatnosti, često se u literaturi naziva načelo najveće vjerojatnosti.
Najprije se upoznajmo s pojmovnim aparatom.
Vjerojatnost uzorkovanja je vjerojatnost dobivanja točno takvog uzorka, dobivanja točno takvih opažanja/rezultata, tj. umnožak vjerojatnosti dobivanja svakog od rezultata uzorka (na primjer, je li zajam Vasje, Fedje i Leše otplaćen ili nije otplaćen u isto vrijeme).
Funkcija vjerojatnosti povezuje vjerojatnost uzorka s vrijednostima parametara distribucije.
U našem slučaju, uzorak za obuku je generalizirana Bernoullijeva shema, u kojoj slučajna varijabla ima samo dvije vrijednosti: ili . Stoga se vjerojatnost uzorka može napisati kao funkcija vjerojatnosti parametra kako slijedi:
Gornji unos može se protumačiti na sljedeći način. Zajednička vjerojatnost da će Vasja i Fedja vratiti zajam jednaka je , vjerojatnost da Lesha NEĆE vratiti zajam jednaka je (budući da se NIJE dogodila otplata kredita), stoga je zajednička vjerojatnost sva tri događaja jednaka .
Metoda najveće vjerojatnosti je metoda za procjenu nepoznatog parametra maksimiziranjem funkcije vjerojatnosti. U našem slučaju, moramo pronaći takvu vrijednost na kojem doseže svoj maksimum.
Odakle zapravo ideja - tražiti vrijednost nepoznatog parametra pri kojem funkcija vjerojatnosti doseže maksimum? Porijeklo ideje proizlazi iz ideje da je uzorak jedini izvor znanja koji nam je dostupan o populaciji. U uzorku je zastupljeno sve što znamo o populaciji. Dakle, sve što možemo reći jest da je uzorak najtočniji odraz populacije koja nam je dostupna. Stoga moramo pronaći parametar pri kojem raspoloživi uzorak postaje najvjerojatniji.
Očito se radi o problemu optimizacije u kojem treba pronaći točku ekstrema funkcije. Za pronalazak točke ekstrema potrebno je uzeti u obzir uvjet prvog reda, odnosno izjednačiti derivaciju funkcije s nulom i riješiti jednadžbu s obzirom na željeni parametar. Međutim, traženje derivacije umnoška velikog broja faktora može biti dugotrajan zadatak; da bi se to izbjeglo, postoji posebna tehnika - prebacivanje na logaritam funkcije vjerojatnosti. Zašto je takav prijelaz moguć? Obratimo pozornost na to da ne tražimo ekstrem same funkcije, te točka ekstrema, odnosno vrijednost nepoznatog parametra na kojem doseže svoj maksimum. Kada prijeđemo na logaritam, točka ekstrema se ne mijenja (iako će se sam ekstrem razlikovati), budući da je logaritam monotona funkcija.
Idemo, u skladu s gore navedenim, nastaviti razvijati naš primjer s posudbama Vasye, Fedye i Leshe. Prvo prijeđimo na logaritam funkcije vjerojatnosti:
Sada možemo lako razlikovati izraz prema :
I na kraju, razmotrite uvjet prvog reda - izjednačavamo derivaciju funkcije s nulom:
Dakle, naša intuitivna procjena vjerojatnosti otplate kredita bila teoretski opravdana.
Sjajno, ali što da sada radimo s ovom informacijom? Ako pretpostavimo da svaki treći dužnik ne vrati novac banci, onda će banka neizbježno bankrotirati. Tako je, ali samo kada se procjenjuje vjerojatnost otplate kredita jednakom Nismo uzeli u obzir čimbenike koji utječu na otplatu kredita: plaću zajmoprimca i veličinu mjesečne otplate. Podsjetimo, prethodno smo izračunali vjerojatnost otplate kredita za svakog klijenta, uzimajući u obzir te iste faktore. Logično je da smo dobili vjerojatnosti različite od konstantne jednake .
Definirajmo vjerojatnost uzoraka:
Kod za izračunavanje vjerojatnosti 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 :
Vjerojatnost uzorka pri izračunu vjerojatnosti otplate kredita uzimajući u obzir faktore :
Vjerojatnost uzorka s vjerojatnošću izračunatom ovisno o faktorima pokazala se većom od vjerojatnosti s konstantnom vrijednošću vjerojatnosti. Što to znači? To sugerira da je poznavanje faktora omogućilo točniji odabir vjerojatnosti otplate kredita za svakog klijenta. Stoga bi prilikom izdavanja sljedećeg kredita bilo ispravnije koristiti model predložen na kraju odjeljka 3. članka za procjenu vjerojatnosti otplate duga.
Ali onda, ako želimo maksimizirati funkcija vjerojatnosti uzorka, zašto onda ne upotrijebiti neki algoritam koji će proizvesti vjerojatnosti za Vasju, Fedju i Lešu, na primjer, jednake 0.99, 0.99 i 0.01, redom. Možda će takav algoritam imati dobre rezultate na uzorku za obuku, budući da će približiti vrijednost vjerojatnosti uzorka , ali, prvo, takav algoritam će najvjerojatnije imati poteškoća sa sposobnošću generalizacije, i 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 vjerojatnost da Vasya i Fedya vrate zajam biti ista, uzimajući u obzir faktore koji su nam poznati? Sa stajališta zdrave logike, naravno da ne, ne može. Tako će Vasya plaćati 2.5% svoje plaće mjesečno za otplatu kredita, a Fedya - gotovo 27,8%. Također u grafikonu 2 "Klasifikacija klijenata" vidimo da je Vasja mnogo dalje od linije koja razdvaja razrede nego Fedja. I konačno, znamo da funkcija za Vasju i Fedju ima različite vrijednosti: 4.24 za Vasju i 1.0 za Fedju. Sada, ako je Fedja, na primjer, zarađivao red veličine više ili tražio manji zajam, tada bi vjerojatnost otplate zajma za Vasju i Fedju bila slična. Drugim riječima, linearna ovisnost se ne može prevariti. A kad bismo zapravo izračunali izglede , i nismo ih uzeli iz zraka, slobodno možemo reći da su naše vrijednosti najbolje nam omogućuju da procijenimo vjerojatnost otplate kredita od strane svakog zajmoprimca, ali budući da smo se složili pretpostaviti da je određivanje koeficijenata provedeno u skladu sa svim pravilima, onda ćemo pretpostaviti da je tako - naši koeficijenti omogućuju nam bolju procjenu vjerojatnosti :)
Međutim, skrenuli smo. U ovom odjeljku moramo razumjeti kako se određuje vektor težina , što je potrebno za procjenu vjerojatnosti otplate kredita od strane svakog dužnika.
Ukratko rezimiramo s kojim arsenalom idemo tražiti šanse :
1. Pretpostavljamo da je odnos između ciljane varijable (vrijednosti predviđanja) i faktora koji utječe na rezultat linearan. Iz tog razloga se koristi funkcija linearne regresije vrsta , čija linija dijeli objekte (klijente) u klase и ili (klijenti koji su sposobni otplaćivati kredit i oni koji nisu). U našem slučaju jednadžba ima oblik .
2. Koristimo inverzna logit funkcija vrsta odrediti vjerojatnost pripadnosti objekta klasi .
3. Naš set za obuku smatramo implementacijom generaliziranog Bernoullijeve sheme, odnosno za svaki objekt se generira slučajna varijabla koja s vjerojatnošću (svoj za svaki objekt) poprima vrijednost 1 i s vjerojatnošću - 0.
4. Znamo što nam je potrebno za maksimiziranje funkcija vjerojatnosti uzorka uzimajući u obzir prihvaćene čimbenike kako bi dostupni uzorak postao najvjerojatniji. Drugim riječima, moramo odabrati parametre pri kojima će uzorak biti najvjerojatniji. U našem slučaju odabrani parametar je vjerojatnost povrata kredita , što pak ovisi o nepoznatim koeficijentima . Dakle, moramo pronaći takav vektor težina , pri čemu će vjerojatnost uzorka biti najveća.
5. Znamo što maksimizirati funkcije vjerojatnosti uzorka možete koristiti metoda najveće vjerojatnosti. I znamo sve lukave trikove za rad s ovom metodom.
Ovako ispada 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 označene klase objekata. Dogodilo se da se u problemima klasifikacije s dvije klase klase označavaju kao и ili . Ovisno o zapisu, izlaz će imati odgovarajuću funkciju gubitka.
Slučaj 1. Klasifikacija objekata na и
Ranije, prilikom utvrđivanja vjerojatnosti uzorka, u kojem je vjerojatnost otplate duga od strane zajmoprimca izračunata na temelju faktora i zadanih koeficijenata , primijenili smo formulu:
Zapravo je smisao funkcije logističkog odgovora za dati vektor težina
Tada nas ništa ne sprječava da zapišemo funkciju vjerojatnosti uzorka na sljedeći način:
Događa se da je ponekad nekim analitičarima početnicima teško odmah razumjeti kako ova funkcija funkcionira. Pogledajmo 4 kratka primjera koji će razjasniti stvari:
1. Ako (tj. prema uzorku za obuku, objekt pripada klasi +1), i naš algoritam određuje vjerojatnost svrstavanja objekta u klasu jednako 0.9, tada će se ovaj dio vjerojatnosti uzorka izračunati na sljedeći način:
2. Ako I , tada će izračun biti ovakav:
3. Ako I , tada će izračun biti ovakav:
4. Ako I , tada će izračun biti ovakav:
Očito je da će funkcija vjerojatnosti biti maksimizirana u slučajevima 1 i 3 ili u općem slučaju - s točno pogodenim vrijednostima vjerojatnosti dodjele objekta klasi .
Zbog činjenice da pri određivanju vjerojatnosti dodjele objekta klasi Jedino 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 vjerojatnosti u odnosu na vektor težina . Međutim, prvo ima smisla pojednostaviti zadatak za sebe: tražit ćemo izvod logaritma funkcije vjerojatnosti.
Zašto nakon logaritma, in funkcije logističke greške, promijenili smo znak od na . Sve je jednostavno, budući da je u problemima procjene kvalitete modela uobičajeno minimizirati vrijednost funkcije, pomnožili smo desnu stranu izraza s i sukladno tome, umjesto maksimiziranja, sada minimiziramo funkciju.
Zapravo, upravo sada, pred vašim očima, funkcija gubitka je mukotrpno izvedena - Logistički gubitak za set za vježbanje s dvije klase: и .
Sada, da bismo pronašli koeficijente, samo trebamo pronaći izvod funkcije logističke greške a zatim pomoću metoda numeričke optimizacije, poput gradijentnog spuštanja ili stohastičkog gradijentnog spuštanja, odaberite najoptimalnije koeficijente . No, s obzirom na popriličan obujam članka, predlaže se da diferencijaciju provedete sami ili će to možda biti tema za sljedeći članak s puno aritmetike bez tako detaljnih primjera.
Slučaj 2. Klasifikacija objekata na и
Ovdje će pristup biti isti kao i kod nastave и , već sam put do izlaza funkcije gubitka Logistički gubitak, bit će kićeniji. Započnimo. Za funkciju vjerojatnosti koristit ćemo operator "ako tada..."... Odnosno, ako Objekt pripada klasi , tada za izračunavanje vjerojatnosti uzorka koristimo vjerojatnost , ako objekt pripada klasi , zatim zamjenjujemo u vjerojatnost . Ovako izgleda funkcija vjerojatnosti:
Opišimo na prstima kako to radi. Razmotrimo 4 slučaja:
1. Ako и , tada će vjerojatnost uzorkovanja "ići"
2. Ako и , tada će vjerojatnost uzorkovanja "ići"
3. Ako и , tada će vjerojatnost uzorkovanja "ići"
4. Ako и , tada će vjerojatnost uzorkovanja "ići"
Očito je da u slučajevima 1 i 3, kada su vjerojatnosti ispravno određene algoritmom, funkcija vjerojatnosti će biti maksimiziran, odnosno to je upravo ono što smo htjeli dobiti. Međutim, ovaj je pristup prilično glomazan i sljedeće ćemo razmotriti kompaktniju notaciju. Ali prvo, logaritmirajmo funkciju vjerojatnosti s promjenom predznaka, budući da ćemo je sada minimizirati.
Umjesto toga zamijenimo izraz :
Pojednostavimo pravi izraz pod logaritmom koristeći jednostavne aritmetičke tehnike i dobijemo:
Sada je vrijeme da se riješite operatera "ako tada...". Imajte na umu da kada objekt pripada klasi , zatim u izrazu pod logaritmom, u nazivniku, podignut na vlast , ako objekt pripada klasi , tada se $e$ diže na potenciju . Stoga se oznaka za stupanj može pojednostaviti kombiniranjem oba slučaja u jedan: , tada funkcija logističke pogreške poprimit će oblik:
U skladu s pravilima logaritma, okrećemo razlomak i stavljamo znak "" (minus) za logaritam, dobivamo:
Ovdje je funkcija gubitka logistički gubitak, koji se koristi u skupu za obuku s objektima dodijeljenim klasama: и .
Pa, u ovom trenutku odlazim i zaključujemo članak.
Pomoćni materijali
1. Književnost
1) Primijenjena regresijska analiza / N. Draper, G. Smith - 2. izd. – M.: Financije i statistika, 1986. (prijevod s engleskog)
2) Teorija vjerojatnosti i matematička statistika / V.E. Gmurman - 9. izd. - M.: Viša škola, 2003
3) Teorija vjerojatnosti / N.I. Chernova - Novosibirsk: Novosibirsko državno sveučilište, 2007
4) Poslovna analitika: od podataka do znanja / Paklin N. B., Oreškov V. I. - 2. izd. — St. Petersburg: Peter, 2013
5) Znanost o podacima Znanost o podacima od nule / Joel Gras - St. Petersburg: BHV Petersburg, 2017.
6) Praktična statistika za stručnjake za znanost o podacima / P. Bruce, E. Bruce - St. Petersburg: BHV Petersburg, 2018.
2. Predavanja, tečajevi (video)
1)
2)
3)
4)
5)
3. Internetski izvori
1)
2)
3)
4)
6)
7)
8)