V tem članku bomo analizirali teoretične izračune transformacije funkcije linearne regresije в funkcija inverzne logit transformacije (imenovana tudi funkcija logističnega odziva). Nato z uporabo arzenala metoda največje verjetnosti, v skladu z modelom logistične regresije izpeljemo funkcijo izgube Logistična izguba, ali z drugimi besedami, definirali bomo funkcijo, s katero se izberejo parametri vektorja uteži v modelu logistične regresije .
Oris članka:
- Ponovimo linearno razmerje med dvema spremenljivkama
- Ugotovimo potrebo po preobrazbi funkcije linearne regresije в funkcija logističnega odziva
- Izvedimo transformacije in izpis funkcija logističnega odziva
- Poskusimo razumeti, zakaj je metoda najmanjših kvadratov slaba pri izbiri parametrov funkcije Logistična izguba
- Uporaba metoda največje verjetnosti za določanje funkcije izbire parametrov :
5.1. Primer 1: funkcija Logistična izguba za objekte z oznakami razreda 0 и 1:
5.2. Primer 2: funkcija Logistična izguba za objekte z oznakami razreda -1 и +1:
Članek je poln preprostih primerov, v katerih je vse izračune enostavno narediti ustno ali na papirju, v nekaterih primerih bo morda potreben kalkulator. Torej pripravi se :)
Ta članek je namenjen predvsem podatkovnim znanstvenikom z začetnim nivojem znanja o osnovah strojnega učenja.
V članku bo tudi koda za risanje grafov in izračune. Vsa koda je napisana v jeziku pyton 2.7. Naj vnaprej razložim o “novosti” uporabljene različice - to je eden od pogojev za obisk znanega tečaja iz Yandex na prav tako znani platformi za spletno izobraževanje Coursera, in kot bi lahko domnevali, je bilo gradivo pripravljeno na podlagi tega predmeta.
01. Premočrtna odvisnost
Povsem razumno se je vprašati - kaj imata s tem linearna odvisnost in logistična regresija?
Enostavno je! Logistična regresija je eden izmed modelov, ki spadajo v linearni klasifikator. Preprosto povedano, naloga linearnega klasifikatorja je napovedovanje ciljnih vrednosti iz spremenljivk (regresorjev) . Menijo, da je odvisnost med značilnostmi in ciljne vrednosti linearni. Od tod tudi ime klasifikatorja - linearno. Zelo grobo povedano, logistični regresijski model temelji na predpostavki, da obstaja linearna povezava med značilnostmi in ciljne vrednosti . To je povezava.
V studiu je prvi primer in gre, pravilno, za premočrtno odvisnost preučevanih količin. V procesu priprave članka sem naletel na primer, ki je že marsikoga postavil na rob - odvisnost toka od napetosti (»Uporabna regresijska analiza«, N. Draper, G. Smith). Ogledali si ga bomo tudi tukaj.
V skladu z Ohmov zakon:
Če - jakost toka, - Napetost, - odpornost.
Če ne bi vedeli Ohmov zakon, potem bi lahko empirično našli odvisnost s spreminjanjem in merjenje , medtem ko podpira fiksno. Potem bi videli, da je graf odvisnosti od daje bolj ali manj ravno črto skozi izhodišče. Pravimo "bolj ali manj", ker čeprav je razmerje dejansko natančno, lahko naše meritve vsebujejo majhne napake, zato točke na grafu morda ne bodo točno na črti, ampak bodo naključno razpršene okoli nje.
Graf 1 “Odvisnost” od »
Koda za risanje 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 po transformaciji linearne regresijske enačbe
Poglejmo še en primer. Predstavljajmo si, da delamo v banki in je naša naloga določiti verjetnost, da bo posojilojemalec odplačal posojilo glede na določene dejavnike. Za poenostavitev naloge bomo upoštevali samo dva dejavnika: mesečno plačo posojilojemalca in znesek mesečnega odplačevanja posojila.
Naloga je zelo pogojna, vendar s tem primerom lahko razumemo, zakaj ni dovolj za uporabo funkcije linearne regresijein tudi ugotovite, katere transformacije je treba izvesti s funkcijo.
Vrnimo se k primeru. Razume se, da višja kot je plača, več bo posojilojemalec lahko mesečno namenil za odplačilo posojila. Hkrati pa bo za določen plačni razred to razmerje precej linearno. Na primer, vzemimo razpon plače od 60.000 do 200.000 rubljev in predpostavimo, da je v navedenem razponu plače odvisnost višine mesečnega plačila od višine plače linearna. Recimo, da je bilo za določen obseg plač ugotovljeno, da razmerje med plačo in plačilom ne sme pasti pod 3, posojilojemalec pa mora imeti v rezervi še 5.000 rubljev. In samo v tem primeru bomo domnevali, da bo posojilojemalec odplačal posojilo banki. Nato bo enačba linearne regresije prevzela obliko:
če , , , - plača - posojilojemalec, - plačilo posojila -ti posojilojemalec.
Zamenjava plače in plačila posojila s fiksnimi parametri v enačbo Odločite se lahko, ali boste posojilo izdali ali zavrnili.
Če pogledamo naprej, ugotavljamo, da z danimi parametri funkcija linearne regresije, ki se uporablja v funkcije logističnega odziva bo proizvedel velike vrednosti, ki bodo zapletle izračune za določitev verjetnosti odplačila posojila. Zato je predlagano zmanjšanje naših koeficientov, recimo, za 25.000-krat. To preoblikovanje koeficientov ne bo spremenilo odločitve o izdaji posojila. Zapomnimo si to točko za prihodnost, zdaj pa, da bo še bolj jasno, o čem govorimo, razmislimo o situaciji s tremi potencialnimi posojilojemalci.
Tabela 1 »Potencialni posojilojemalci«
Koda za generiranje 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']]
V skladu s podatki v tabeli želi Vasja s plačo 120.000 rubljev prejeti posojilo, da bi ga lahko mesečno odplačeval v višini 3.000 rubljev. Ugotovili smo, da mora za odobritev posojila Vasjina plača preseči trikratnik zneska plačila in mora ostati še 5.000 rubljev. Vasya izpolnjuje to zahtevo: . Ostaja celo 106.000 RUR. Kljub temu, da pri izračunu smo zmanjšali kvote 25.000-krat, rezultat je bil enak - posojilo se lahko odobri. Fedya bo prejel tudi posojilo, a Lesha, kljub dejstvu, da prejme največ, bo moral omejiti svoje apetite.
Narišimo graf za ta primer.
Graf 2 "Klasifikacija posojilojemalcev"
Koda za risanje 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()
Torej, naša ravna črta, zgrajena v skladu s funkcijo , loči "slabe" posojilojemalce od "dobrih". Tisti posojilojemalci, katerih želje ne sovpadajo z njihovimi zmožnostmi, so nad črto (Lesha), tisti, ki so glede na parametre našega modela sposobni odplačati posojilo, pa pod črto (Vasya in Fedya). Z drugimi besedami lahko rečemo takole: naša direktna linija deli kreditojemalce na dva razreda. Označimo jih takole: razredu Tiste kreditojemalce, ki bodo kredit najverjetneje odplačali, bomo razvrstili med ali Vključili bomo tiste kreditojemalce, ki posojila najverjetneje ne bodo mogli odplačati.
Povzemimo sklepe iz tega preprostega primera. Vzemimo točko in zamenjavo koordinat točke v ustrezno enačbo premice , razmislite o treh možnostih:
- Če je točka pod črto in jo pripišemo razredu , nato vrednost funkcije bo pozitivno od za . To pomeni, da lahko domnevamo, da je verjetnost odplačila posojila znotraj . Večja kot je vrednost funkcije, večja je verjetnost.
- Če je točka nad črto in jo pripišemo razredu ali , potem bo vrednost funkcije negativna od za . Potem bomo predpostavili, da je verjetnost odplačila dolga znotraj in večja kot je absolutna vrednost funkcije, večje je naše zaupanje.
- Točka je na ravni črti, na meji med dvema razredoma. V tem primeru vrednost funkcije bo enakovreden in verjetnost odplačila posojila je enaka .
Zdaj pa si predstavljajmo, da nimamo dveh dejavnikov, ampak na desetine in ne tri, ampak na tisoče posojilojemalcev. Potem bomo namesto ravne črte imeli m-dimenzionalno ravnina in koeficienti ne bomo vzeti iz zraka, ampak izpeljani po vseh pravilih in na podlagi zbranih podatkov o kreditojemalcih, ki so ali niso odplačali kredit. In res, upoštevajte, da zdaj izbiramo posojilojemalce z že znanimi koeficienti . Pravzaprav je naloga logističnega regresijskega modela prav določanje parametrov , pri kateri je vrednost funkcije izgube Logistična izguba se bo nagibalo k minimumu. Toda o tem, kako se vektor izračuna , bomo izvedeli več v 5. delu članka. Vmes se vračamo v obljubljeno deželo – k našemu bankirju in njegovim trem strankam.
Zahvaljujoč funkciji vemo, komu je mogoče dati posojilo in komu ga je treba zavrniti. Toda s takimi podatki ne morete iti do direktorja, saj so od nas želeli pridobiti verjetnost odplačila kredita po posameznem kreditojemalcu. Kaj storiti? Odgovor je preprost - funkcijo moramo nekako preoblikovati , katerih vrednosti ležijo v območju na funkcijo, katere vrednosti bodo v območju . In takšna funkcija obstaja, imenuje se logistična odzivna funkcija ali inverzna logit transformacija. Srečati:
Poglejmo korak za korakom, kako deluje funkcija logističnega odziva. Upoštevajte, da bomo hodili v nasprotni smeri, tj. predpostavili bomo, da poznamo vrednost verjetnosti, ki leži v območju od za nato pa bomo to vrednost "odvili" na celoten obseg števil od za .
03. Izpeljemo logistično odzivno funkcijo
Korak 1. Pretvorite vrednosti verjetnosti v obseg
Med transformacijo funkcije в funkcija logističnega odziva Pustili bomo našega kreditnega analitika pri miru in se raje odpravili na ogled stavnic. Ne, seveda ne bomo stavili, vse, kar nas tam zanima, je pomen izraza, na primer možnost je 4 proti 1. Kvote, ki jih poznajo vsi igralci stav, so razmerje med "uspehi" in " neuspehi«. V smislu verjetnosti so kvote verjetnost, da se dogodek zgodi, deljena z verjetnostjo, da se dogodek ne zgodi. Zapišimo formulo za možnost, da se zgodi dogodek :
Če - verjetnost nastanka dogodka, — verjetnost, da se dogodek NE zgodi
Na primer, če je verjetnost, da bo mlad, močan in igriv konj z vzdevkom "Veterok" na dirki premagal staro in mlohavo starko z imenom "Matilda", enaka , potem bodo možnosti za uspeh za "Veterok" velike к in obratno, če poznamo kvote, nam ne bo težko izračunati verjetnosti :
Tako smo se naučili "prevesti" verjetnost v možnosti, ki vzamejo vrednosti iz za . Naredimo še en korak in se naučimo "prevesti" verjetnost na celotno številsko premico za .
Korak 2. Pretvorite vrednosti verjetnosti v obseg
Ta korak je zelo preprost - vzemimo logaritem kvot na osnovo Eulerjevega števila in dobimo:
Zdaj vemo, da če , nato izračunajte vrednost bo zelo preprosto in poleg tega mora biti pozitivno: . To je resnica.
Iz radovednosti preverimo, kaj če , potem pričakujemo, da bomo videli negativno vrednost . Preverjamo: . Tako je.
Zdaj vemo, kako pretvoriti vrednost verjetnosti iz za vzdolž celotne številske premice od za . V naslednjem koraku bomo naredili nasprotno.
Za zdaj ugotavljamo, da v skladu s pravili logaritma poznamo vrednost funkcije , lahko izračunate kvote:
Ta metoda določanja kvot nam bo koristila v naslednjem koraku.
Korak 3. Izpeljimo formulo za določitev
Tako smo se učili, vedeli , poiščite vrednosti funkcij . Vendar pa v resnici potrebujemo ravno nasprotno - poznavanje vrednosti najti . Če želite to narediti, se obrnemo na koncept, kot je inverzna funkcija kvot, v skladu s katero:
V članku ne bomo izpeljali zgornje formule, ampak jo bomo preverili s številkami iz zgornjega primera. Vemo, da s kvotami 4 proti 1 (), je verjetnost, da se dogodek zgodi, 0.8 (). Naredimo zamenjavo: . To sovpada z našimi prejšnjimi izračuni. Gremo naprej.
V zadnjem koraku smo to ugotovili , kar pomeni, da lahko naredite zamenjavo v inverzni funkciji kvot. Dobimo:
Števec in imenovalec delite z , potem:
Za vsak slučaj, da se prepričamo, da se nismo kje zmotili, bomo naredili še en manjši pregled. V 2. koraku smo za določil, da . Nato nadomestite vrednost v funkcijo logističnega odziva, pričakujemo, da bomo dobili . Zamenjamo in dobimo:
Čestitamo, dragi bralec, pravkar smo izpeljali in preizkusili funkcijo logističnega odziva. Poglejmo si graf funkcije.
Graf 3 “Funkcija logističnega odziva”
Koda za risanje 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()
V literaturi lahko najdete tudi ime te funkcije kot sigmoidno funkcijo. Graf jasno kaže, da se glavna sprememba v verjetnosti, da predmet pripada razredu, zgodi v razmeroma majhnem obsegu , nekje od za .
Predlagam, da se vrnete k našemu kreditnemu analitiku in mu pomagate izračunati verjetnost odplačila kredita, sicer tvega, da ostane brez bonusa :)
Tabela 2 »Potencialni posojilojemalci«
Koda za generiranje 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']]
Torej smo ugotovili verjetnost odplačila posojila. Na splošno se zdi, da je to res.
Dejansko je verjetnost, da bo Vasja s plačo 120.000 rubljev sposoben dati banki 3.000 rubljev vsak mesec, blizu 100%. Mimogrede, razumeti moramo, da lahko banka izda posojilo Leshi, če politika banke predvideva na primer posojila strankam z verjetnostjo odplačila posojila več kot, recimo, 0.3. Samo v tem primeru bo banka ustvarila večjo rezervo za morebitne izgube.
Prav tako je treba opozoriti, da je bilo razmerje med plačo in plačilom najmanj 3 in z maržo 5.000 rubljev vzeto iz zgornje meje. Zato vektorja uteži ne moremo uporabiti v izvirni obliki . Koeficiente smo morali zelo zmanjšati in v tem primeru smo vsak koeficient delili s 25.000, torej smo v bistvu prilagodili rezultat. Toda to je bilo storjeno posebej za poenostavitev razumevanja gradiva v začetni fazi. V življenju nam ne bo treba izumljati in prilagajati koeficientov, ampak jih najti. V naslednjih razdelkih članka bomo izpeljali enačbe, s katerimi so izbrani parametri .
04. Metoda najmanjših kvadratov za določanje vektorja uteži v funkciji logističnega odziva
To metodo za izbiro vektorja uteži že poznamo Kot metoda najmanjših kvadratov (LSM) in pravzaprav, zakaj ga potem ne uporabimo pri problemih binarne klasifikacije? Dejansko vam nič ne preprečuje uporabe MNC, samo ta metoda pri težavah s klasifikacijo daje rezultate, ki so manj natančni kot Logistična izguba. Za to obstaja teoretična osnova. Najprej si poglejmo en preprost primer.
Predpostavimo, da naši modeli (z uporabo MSE и Logistična izguba) že začeli z izbiro vektorja uteži in v nekem koraku smo ustavili izračun. Ni važno ali na sredini, na koncu ali na začetku, glavno je, da že imamo nekaj vrednosti vektorja uteži in predpostavimo, da je v tem koraku vektor uteži pri obeh modelih ni razlik. Nato vzemite dobljene uteži in jih zamenjajte funkcija logističnega odziva () za nek objekt, ki pripada razredu . Preučili smo dva primera, ko je v skladu z izbranim vektorjem uteži naš model zelo zmoten in obratno – model je zelo prepričan, da predmet pripada razredu . Poglejmo, kakšne globe bodo izdane pri uporabi MNC и Logistična izguba.
Koda za izračun kazni glede na uporabljeno funkcijo izgube
# класс объекта
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
Primer napake — model dodeli objekt razredu z verjetnostjo 0,01
Kazen za uporabo MNC bo:
Kazen za uporabo Logistična izguba bo:
Primer močnega zaupanja — model dodeli objekt razredu z verjetnostjo 0,99
Kazen za uporabo MNC bo:
Kazen za uporabo Logistična izguba bo:
Ta primer dobro ponazarja, da je v primeru hude napake funkcija izgube Izguba dnevnika manekenko kaznuje bistveno bolj kot MSE. Poglejmo zdaj, kakšno je teoretično ozadje uporabe funkcije izgube Izguba dnevnika pri težavah s klasifikacijo.
05. Metoda največje verjetnosti in logistična regresija
Kot je bilo obljubljeno na začetku, je članek poln preprostih primerov. V studiu je še en primer in stari gostje - bančni posojilojemalci: Vasya, Fedya in Lesha.
Za vsak slučaj, preden razvijem primer, naj vas spomnim, da imamo v življenju opravka z učnim vzorcem na tisoče ali milijone predmetov z desetinami ali stotinami funkcij. Vendar so tukaj številke vzete tako, da se zlahka prilegajo v glavo začetnika podatkovnega znanstvenika.
Vrnimo se k primeru. Predstavljajmo si, da se je direktor banke odločil izdati posojilo vsem v stiski, kljub dejstvu, da mu je algoritem rekel, naj ga ne izda Leshi. In zdaj je minilo dovolj časa in vemo, kateri od treh junakov je posojilo vrnil in kateri ne. Kar je bilo pričakovati: Vasja in Fedja sta posojilo odplačala, Leša pa ne. Zdaj pa si predstavljajmo, da bo ta rezultat za nas nov vzorec usposabljanja, hkrati pa je, kot da bi izginili vsi podatki o dejavnikih, ki vplivajo na verjetnost odplačila posojila (plača posojilojemalca, višina mesečnega obroka). Potem lahko intuitivno predpostavimo, da vsak tretji kreditojemalec ne odplača kredita banki, ali z drugimi besedami, verjetnost, da bo naslednji kreditojemalec kredit vrnil . Ta intuitivna predpostavka ima teoretično potrditev in temelji na metoda največje verjetnosti, pogosto se v literaturi imenuje načelo največje verjetnosti.
Najprej se seznanimo s pojmovnim aparatom.
Verjetnost vzorčenja je verjetnost pridobitve točno takšnega vzorca, pridobitve točno takih opazovanj/rezultatov, tj. zmnožek verjetnosti pridobitve vsakega od rezultatov vzorca (na primer, ali je bilo posojilo Vasje, Fedje in Leše odplačano ali ne hkrati).
Funkcija verjetnosti povezuje verjetnost vzorca z vrednostmi parametrov porazdelitve.
V našem primeru je učni vzorec posplošena Bernoullijeva shema, v kateri ima naključna spremenljivka samo dve vrednosti: ali . Zato lahko verjetnost vzorca zapišemo kot funkcijo verjetnosti parametra kot sledi:
Zgornji vnos si lahko razlagamo na naslednji način. Skupna verjetnost, da bosta Vasja in Fedja odplačala posojilo, je enaka , je verjetnost, da Lesha NE bo odplačal posojila, enaka (ker NI šlo za odplačilo posojila), je torej skupna verjetnost vseh treh dogodkov enaka .
Metoda največje verjetnosti je metoda za ocenjevanje neznanega parametra z maksimiranjem funkcije verjetnosti. V našem primeru moramo najti takšno vrednost pri katerem doseže svoj maksimum.
Od kod pravzaprav ideja - iskati vrednost neznanega parametra, pri katerem funkcija verjetnosti doseže maksimum? Izvor ideje izhaja iz ideje, da je vzorec edini vir znanja, ki nam je na voljo o populaciji. V vzorcu je predstavljeno vse, kar vemo o populaciji. Zato lahko rečemo le, da je vzorec najbolj natančen odraz populacije, ki nam je na voljo. Zato moramo najti parameter, pri katerem postane razpoložljivi vzorec najbolj verjeten.
Očitno imamo opravka z optimizacijskim problemom, pri katerem moramo najti ekstremno točko funkcije. Za iskanje ekstremne točke je potrebno upoštevati pogoj prvega reda, to je izenačiti odvod funkcije na nič in rešiti enačbo glede na želeni parameter. Iskanje izpeljanke produkta velikega števila faktorjev pa je lahko dolgotrajna naloga, da bi se temu izognili, obstaja posebna tehnika - preklop na logaritem funkcije verjetnosti. Zakaj je tak prehod mogoč? Bodimo pozorni na to, da ne iščemo ekstrema same funkcije, in ekstremna točka, to je vrednost neznanega parametra pri katerem doseže svoj maksimum. Pri prehodu na logaritem se ekstremna točka ne spremeni (čeprav se sam ekstrem razlikuje), saj je logaritem monotona funkcija.
V skladu z zgoraj navedenim nadaljujmo z razvojem našega primera s posojili Vasye, Fedye in Leshe. Najprej pojdimo na logaritem funkcije verjetnosti:
Zdaj lahko izraz zlahka razlikujemo po :
In končno, upoštevajte pogoj prvega reda - izenačimo odvod funkcije na nič:
Tako naša intuitivna ocena verjetnosti odplačila posojila je bilo teoretično utemeljeno.
Super, ampak kaj naj zdaj naredimo s to informacijo? Če predpostavimo, da vsak tretji posojilojemalec ne bo vrnil denarja banki, potem bo ta neizogibno bankrotirala. Tako je, vendar le, če ocenimo, da je verjetnost odplačila posojila enaka Nismo upoštevali dejavnikov, ki vplivajo na odplačilo posojila: plače posojilojemalca in višine mesečnega obroka. Naj spomnimo, da smo predhodno izračunali verjetnost odplačila kredita za vsako stranko ob upoštevanju istih dejavnikov. Logično je, da smo dobili verjetnosti, ki se razlikujejo od enake konstante .
Določimo verjetnost vzorcev:
Koda za izračun verjetnosti vzorca
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)
Verjetnost vzorca pri konstantni vrednosti :
Vzorčna verjetnost pri izračunu verjetnosti odplačila posojila ob upoštevanju dejavnikov :
Verjetnost vzorca z verjetnostjo, izračunano glede na dejavnike, se je izkazala za večjo od verjetnosti s konstantno vrednostjo verjetnosti. Kaj to pomeni? To nakazuje, da je poznavanje dejavnikov omogočilo natančnejšo izbiro verjetnosti odplačila kredita za vsako stranko. Zato bi bilo pri izdaji naslednjega posojila pravilneje uporabiti model, predlagan na koncu 3. razdelka članka za oceno verjetnosti odplačila dolga.
Ampak potem, če želimo maksimirati funkcija verjetnosti vzorca, zakaj potem ne bi uporabili nekega algoritma, ki bo ustvaril verjetnosti za Vasjo, Fedjo in Lešo, na primer enake 0.99, 0.99 oziroma 0.01. Morda se bo takšen algoritem dobro obnesel na učnem vzorcu, saj bo vrednost verjetnosti vzorca približal , ampak, prvič, takšen algoritem bo najverjetneje imel težave s sposobnostjo posploševanja, in drugič, ta algoritem zagotovo ne bo linearen. In če metode boja proti pretreniranosti (enako šibka sposobnost posploševanja) očitno niso vključene v načrt tega članka, potem pojdimo podrobneje skozi drugo točko. Če želite to narediti, odgovorite na preprosto vprašanje. Ali je verjetnost, da bosta Vasya in Fedya odplačala posojilo, enaka ob upoštevanju dejavnikov, ki so nam znani? Z vidika zdrave logike seveda ne, ne more. Tako bo Vasya plačal 2.5% svoje plače na mesec za odplačilo posojila, Fedya pa skoraj 27,8%. Tudi v grafu 2 »Razvrstitev strank« vidimo, da je Vasja veliko dlje od črte, ki ločuje razrede, kot Fedja. In končno vemo, da funkcija za Vasya in Fedya ima različne vrednosti: 4.24 za Vasya in 1.0 za Fedya. Zdaj, če bi Fedja na primer zaslužil za red velikosti več ali prosil za manjše posojilo, bi bile verjetnosti odplačila posojila za Vasjo in Fedjo podobne. Z drugimi besedami, linearne odvisnosti ni mogoče preslepiti. In če bi dejansko izračunali kvote , in jih nismo vzeli iz nič, bi lahko mirno rekli, da naše vrednote nam najbolje omogočajo, da ocenimo verjetnost odplačila posojila s strani posameznega posojilojemalca, ker pa smo se strinjali, da predpostavimo, da je določitev koeficientov je bilo izvedeno po vseh pravilih, potem bomo predpostavili tako - naši koeficienti nam omogočajo boljšo oceno verjetnosti :)
Vendar smo se oddaljili. V tem razdelku moramo razumeti, kako se določi vektor uteži , ki je nujen za oceno verjetnosti odplačevanja posojila s strani posameznega posojilojemalca.
Naj na kratko povzamemo, s kakšnim arzenalom gremo iskati kvote :
1. Predpostavljamo, da je razmerje med ciljno spremenljivko (vrednostjo napovedi) in dejavnikom, ki vpliva na rezultat, linearno. Zaradi tega se uporablja funkcija linearne regresije vrste , katerega črta deli objekte (odjemalce) v razrede и ali (stranke, ki so sposobne odplačati kredit in tiste, ki niso). V našem primeru ima enačba obliko .
2. Uporabljamo inverzna logit funkcija vrste za določitev verjetnosti, da predmet pripada razredu .
3. Naš nabor za usposabljanje obravnavamo kot izvedbo posplošenega Bernoullijeve sheme, to pomeni, da se za vsak predmet generira naključna spremenljivka, ki z verjetnostjo (za vsak objekt svojo) ima z verjetnostjo vrednost 1 in - 0.
4. Vemo, kaj moramo povečati funkcija verjetnosti vzorca ob upoštevanju sprejetih dejavnikov, tako da razpoložljivi vzorec postane najbolj verjeten. Z drugimi besedami, izbrati moramo parametre, pri katerih bo vzorec najbolj verjeten. V našem primeru je izbrani parameter verjetnost odplačila kredita , kar pa je odvisno od neznanih koeficientov . Torej moramo najti tak vektor uteži , pri katerem bo verjetnost vzorca največja.
5. Vemo, kaj je treba povečati vzorčne funkcije verjetnosti lahko uporabite metoda največje verjetnosti. In poznamo vse zapletene trike za delo s to metodo.
Tako se izkaže, da gre za večstopenjsko potezo :)
Ne pozabite, da smo na samem začetku članka želeli izpeljati dve vrsti funkcij izgube Logistična izguba odvisno od tega, kako so označeni objektni razredi. Tako se je zgodilo, da so pri klasifikacijskih problemih z dvema razredoma razredi označeni kot и ali . Odvisno od zapisa bo imel izhod ustrezno funkcijo izgube.
Primer 1. Razvrščanje predmetov v и
Prej pri ugotavljanju verjetnosti vzorca, v katerem je bila verjetnost odplačila dolga s strani posojilojemalca izračunana na podlagi faktorjev in danih koeficientov. smo uporabili formulo:
Pravzaprav je pomen funkcije logističnega odziva za dani vektor uteži
Potem nam nič ne preprečuje, da funkcijo verjetnosti vzorca zapišemo na naslednji način:
Dogaja se, da je nekaterim analitikom začetnikom včasih težko takoj razumeti, kako deluje ta funkcija. Poglejmo si 4 kratke primere, ki bodo razjasnili vse:
1. če (tj. glede na učni vzorec objekt spada v razred +1) in naš algoritem določa verjetnost razvrstitve predmeta v razred enako 0.9, potem bo ta del vzorčne verjetnosti izračunan na naslednji način:
2. če In , potem bo izračun tak:
3. če In , potem bo izračun tak:
4. če In , potem bo izračun tak:
Očitno je, da bo funkcija verjetnosti maksimirana v primerih 1 in 3 ali v splošnem primeru - s pravilno ugibanimi vrednostmi verjetnosti dodelitve predmeta razredu .
Zaradi dejstva, da pri določanju verjetnosti dodelitve predmeta razredu Samo koeficientov ne poznamo , potem jih bomo poiskali. Kot je navedeno zgoraj, je to optimizacijski problem, pri katerem moramo najprej najti odvod funkcije verjetnosti glede na vektor uteži . Vendar je najprej smiselno, da si nalogo poenostavimo: poiskali bomo izpeljanko logaritma funkcije verjetnosti.
Zakaj po logaritmu, v funkcije logistične napake, smo spremenili znak iz o . Vse je preprosto, ker je pri problemih ocenjevanja kakovosti modela običajno minimizirati vrednost funkcije, smo desno stran izraza pomnožili z in v skladu s tem namesto maksimiranja zdaj minimiziramo funkcijo.
Pravzaprav je bila ravno zdaj, pred vašimi očmi, funkcija izgube skrbno izpeljana - Logistična izguba za komplet za usposabljanje z dvema razredoma: и .
Zdaj, da bi našli koeficiente, moramo najti samo odvod funkcije logistične napake in nato z uporabo numeričnih optimizacijskih metod, kot je gradientni spust ali stohastični gradientni spust, izberite najbolj optimalne koeficiente . Toda glede na precejšen obseg članka je predlagano, da diferenciacijo izvedete sami ali pa bo to tema za naslednji članek z veliko aritmetike brez tako podrobnih primerov.
Primer 2. Razvrščanje predmetov v и
Tu bo pristop enak kot pri razredih и , ampak sama pot do izhoda funkcije izgube Logistična izguba, bo bolj okrašena. Začnimo. Za funkcijo verjetnosti bomo uporabili operator "če, potem...". To je, če Predmet th pripada razredu , potem za izračun verjetnosti vzorca uporabimo verjetnost , če predmet pripada razredu , potem nadomestimo z verjetnostjo . Tako izgleda funkcija verjetnosti:
Naj na prste opišemo, kako deluje. Razmislimo o 4 primerih:
1. če и , potem bo verjetnost vzorčenja "šla"
2. če и , potem bo verjetnost vzorčenja "šla"
3. če и , potem bo verjetnost vzorčenja "šla"
4. če и , potem bo verjetnost vzorčenja "šla"
Očitno je, da v primerih 1 in 3, ko sta bili verjetnosti pravilno določeni z algoritmom, funkcija verjetnosti bo maksimiziran, to je točno to, kar smo želeli dobiti. Vendar je ta pristop precej okoren in v nadaljevanju bomo razmislili o bolj kompaktnem zapisu. Toda najprej logaritmirajmo verjetnostno funkcijo s spremembo predznaka, saj jo bomo sedaj minimizirali.
Namesto tega zamenjajmo izraz :
Poenostavimo pravi izraz pod logaritmom z uporabo preprostih aritmetičnih tehnik in dobimo:
Zdaj je čas, da se znebite operaterja "če, potem...". Upoštevajte, da ko predmet spada v razred , nato v izrazu pod logaritmom, v imenovalcu, dvignjen na moč , če predmet pripada razredu , potem se $e$ dvigne na potenco . Zato lahko zapis za diplomo poenostavimo tako, da oba primera združimo v enega: . Potem funkcija logistične napake bo imel obliko:
V skladu s pravili logaritma ulomek obrnemo in izpišemo znak "" (minus) za logaritem dobimo:
Tukaj je funkcija izgube logistična izguba, ki se uporablja v učnem nizu s predmeti, dodeljenimi razredom: и .
No, na tej točki se poslovim in zaključimo članek.
Pomožni materiali
1. Literatura
1) Uporabljena regresijska analiza / N. Draper, G. Smith - 2. izd. – M.: Finance in statistika, 1986 (prevod iz angleščine)
2) Teorija verjetnosti in matematična statistika / V.E. Gmurman - 9. izd. - M.: Višja šola, 2003
3) Teorija verjetnosti / N.I. Chernova - Novosibirsk: Novosibirska državna univerza, 2007
4) Poslovna analitika: od podatkov do znanja / Paklin N. B., Oreškov V. I. - 2. izd. — Sankt Peterburg: Peter, 2013
5) Podatkovna znanost Podatkovna znanost iz nič / Joel Gras - St. Petersburg: BHV Petersburg, 2017
6) Praktična statistika za strokovnjake za podatkovno znanost / P. Bruce, E. Bruce - St. Petersburg: BHV Petersburg, 2018
2. Predavanja, tečaji (video)
1)
2)
3)
4)
5)
3. Internetni viri
1)
2)
4)
5)
6)