
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_2Primer 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.
Avtorjevo prejÅ”nje delo je "Prenos enaÄbe linearne regresije v matriÄno obliko"
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)
3)
4)
5)
6)
7)
8)
Vir: www.habr.com

в funkcija logistiÄnega odziva 
funkcije LogistiÄna izguba
:

, 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.
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.
bo enakovreden
in verjetnost odplaÄila posojila je enaka
.


v funkciji logistiÄnega odziva
Šø 
Šø 