
Selles artiklis uurime teoreetilisi vĂ€ljundeid, lineaarse regressiooni funktsiooni, ĂŒhes tagasipöörde logistilise transformatsiooni funktsiooni (tuntud ka kui logistilise vastuse funktsioon),seejĂ€rel kasutame maksimaalse tĂ”enĂ€osuse metoodikat, et vastavalt logistilise regressiooni mudelile tuletada kaotuse funktsioon,, vastavalt logistilise regressiooni mudelile, tuletame kaotusefunktsiooni Logistic Loss,vĂ”i teisisĂ”nu mÀÀratleme funktsiooni, mille abil mÀÀritakse logistilise regressiooni mudelis kaaluvektorite parameetrid.
.
Artikli plaan:
- Korrake lineaarse sĂ”ltuvuse ĂŒle kahe muutuja vahel,
- tuvastame vajaduse transformatsiooniks, lineaarse regressiooni funktsiooni,
ĂŒhes logistilise vastuse funktsiooni. 
- Teeme muudatusi ja tuletame, logistilise vastuse funktsiooni.
- ĂŒritame aru saada, miks vĂ€ikseima ruudu meetod ei tööta parameetrite mÀÀramiseks,
funktsioonid Logistic Loss, - Kasutame maksimaalne tÔenÀosusmeetod et mÀÀratleda, parameetrite mÀÀramise funktsiooni.
:5.1. Juhtum 1: funktsioon Logistic Loss, klasside mÀrgenditud objektide jaoks, 0 ja 1:

5.2. Juhtum 2: funktsioon. Logistic Loss, klasside mÀrgenditud objektide jaoks, -1 ja +1:

Artikkel on tĂ€is lihtsaid nĂ€iteid, kus kĂ”ik arvutused on kergesti teostatavad suuliselt vĂ”i paberil, mĂ”nel juhul vĂ”ib osutuda vajalikuks kalkulaator. Nii et valmistuge đ
See artikkel on suunatud peamiselt algtaseme andeteadlastele, kellel on pÔhilised teadmised masinÔppe alustest.
Artiklis on ka kood jooniste joonistamiseks ja arvutusteks. Kogu kood on kirjutatud keeles, python 2.7eelnevalt selgitan, mis on âuuenduslikusâ versioonis â see on ĂŒks tingimusi, et tĂ€iendada tuntud kursust, Yandexist, ĂŒhel kuulsamal internetialust. CourseraNagu jĂ€reldada vĂ”ib, on materjal koostatud selle kursuse alusel.
01. Lineaarne sÔltuvus
On tĂ€iesti loogiline esitada kĂŒsimus â kuidas seondub lineaarne sĂ”ltuvus logistilise regressiooniga?
KĂ”ik on lihtne! Logistiline regressioon on ĂŒks mudel, mis kuulub lineaarsete klassifikatorite hulka. Lihtsustatult öeldes on lineaarse klassifikaatori ĂŒlesanne ennustada sihtvÀÀrtuste vÀÀrtusi
muutujatest (regressoritest),
samal ajal oletatakse, et seos tunnuste ja sihivÀÀrtuste vahel on lineaarne. Sealt ka klassifikaatori nimi â lineaarne. Kui vĂ€ga lihtsalt kokku vĂ”tta, siis logistilise regressiooni mudeli aluseks on eeldus, et tunnuste vahel on lineaarne seos.
ja sihttulemustele
See on seos.
ja sihttulemustele
Siin on esimene nĂ€ide ja see on Ă”igesti lineaarse sĂ”ltuvuse uuritavatest suurustest. Artikli ettevalmistamise protsessis sattusin nĂ€iteks, mis on paljudele tuttav â voolu sĂ”ltuvus pinge suhtes,
Stuudios on esimene nĂ€ide, ja see on, Ă”igesti, sirge seos uuritavate suurustega. Artikli ettevalmistamise kĂ€igus komistasin nĂ€ite peale, mis on juba paljudele tuttav â voolu sĂ”ltuvus pingest (âRakenduslik regressioonianalĂŒĂŒsâ, N. Draper, G. Smith),mida me siin samuti arutame.
Vastavalt Ohmi seaduse kohaselt:
, kus
â vool,
â pinge,
â takistus.
Kui me ei teaks, Ohmi seadust,siis vÔiksime sÔltuvust leidma hakata empiiriliselt, muutes
ja mÔÔtes,
hoides samas
fikseeritud. Siis nÀeksime, et sÔltuvuse graafik
alates
annab rohkem vĂ”i vĂ€hem sirge joone, mis lĂ€bib koordinaatide alguspunkti. Me ĂŒtlesime ârohkem vĂ”i vĂ€hemâ, kuna kuigi sĂ”ltuvus on sisuliselt tĂ€pne, vĂ”ivad meie mÔÔtmised sisaldada vĂ€ikseid vigu ja seepĂ€rast ei pruugi graafikul olevad punktid rangelt joonele jÀÀda, vaid vĂ”ivad ringelda selle ĂŒmber juhuslikult.
Graafik 1 «SÔltuvus,
alates
»

graafiku joonistamise kood:
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 = 'Tegelikud tulemused')
plt.xlabel('I', size = 16)
plt.ylabel('U', size = 16)
plt.legend(prop = {'size': 14})
plt.show()02. Lineaarse regressiooni vÔrrandi transformatsioonide vajadus
Vaatame jĂ€rgnevat nĂ€idet. Oletame, et töötame pangas ja meil on ĂŒlesanne mÀÀrata laenu tagasimaksmise tĂ”enĂ€osus laenaja poolt sĂ”ltuvalt mĂ”nest tegurist. Lihtsustamiseks arutame ainult kahte tegurit: laenaja kuupalk ja kuumakse laenu tagasimaksmiseks.
Ălesanne on vĂ€ga tingimuslik, kuid selle nĂ€ite kaudu saame aru, miks selle lahendamiseks ei ole piisav ainult lineaarse regressiooni funktsiooni,, ning saame teada, milliseid muudatusi on funktsioonis vaja teha.
Naas tagasi nĂ€ite juurde. Arusaadav on, et mida kĂ”rgem on palk, seda rohkem suudab laenuvĂ”tja igakuiselt oma laenumakseteks suunata. Sellegipoolest on teatud palgavahemikus see seos ĂŒsna lineaarne. NĂ€iteks vĂ”ttes palga vahemiku 60.000 R kuni 200.000 R, oletame, et antud palga vahemikus on igakuise makse ja palga vaheline seos lineaarne. Oletame, et antud palga suuruse vahemikus on tuvastatud, et palga ja makse suhe ei tohi olla alla 3 ja laenuvĂ”tjale peab jÀÀma ĂŒle 5.000 R. Ainult sel juhul peame me laenuvĂ”tjat krediidi tagasimaksmiseks sobivaks. Seega vĂ”tab lineaarse regressiooni vĂ”rrand jĂ€rgmise kuju:

kus
,
,
,
â palk
-e laenuvÔtja,
â laenu makse
-e laenuvÔtja.
Asendades vÔrrandisse palga ja laenu makse fikseeritud parameetritega
saab teha otsuse laenu andmise vÔi keeldumise kohta.
JÀtkates, mÀrkime, et antud parameetrite juures
lineaarse regressiooni funktsioon, mida kasutatakse logistilise vastuse funktsioonis annab suurendatud vÀÀrtusi, mis raskendavad laenu tagasimaksmise tĂ”enĂ€osuste arvutamist. SeetĂ”ttu soovitame meie koefitsiente vĂ€hendada, ĂŒtleme, 25.000 korda. Sellest muundamisest koefitsientides ei muutu meie otsus laenu andmise osas. Peame selle hetke meeles tulevikus, ja et oleks veel arusaadavam, millest jutt, vaatame kolme potentsiaalset laenuvĂ”tjat.
Tabel 1 âPotentsiaalsed laenuvĂ”tjadâ

Kood tabeli genereerimiseks
import pandas as pd
r = 25000.0
w_0 = -5000.0/r
w_1 = 1.0/r
w_2 = -3.0/r
data = {'LaenuvÔtja':np.array(['Vasya', 'Fedya', 'Lesha']),
'Palk':np.array([120000,180000,210000]),
'Makse':np.array([3000,50000,70000])}
df = pd.DataFrame(data)
df['f(w,x)'] = w_0 + df['Palk']*w_1 + df['Makse']*w_2
decision = []
for i in df['f(w,x)']:
if i > 0:
dec = 'Heakskiidetud'
decision.append(dec)
else:
dec = 'Keeldumine'
decision.append(dec)
df['Otsus'] = decision
df[['LaenuvĂ”tja', 'Palk', 'Makse', 'f(w,x)', 'Otsus']]Tabeli andmete kohaselt soovib Vasja, kelle palk on 120.000 R, saada sellist laenu, et igakuine makse oleks 3.000 R. Oleme kindlaks teinud, et laenu heakskiitmiseks peab Vasja palk ĂŒletama kolm korda laenumakset ja tal peab olema veel 5.000 R. Sellele nĂ”udele vastab Vasja:
. Isegi jÀÀb 106.000 R. Kuigi me arvutuses
oleme koefitsiente vÀhendanud
25.000 korda, saime ikka sama tulemuse â laen vĂ”ib olla heaks kiidetud. Ka Fedya saab laenu, kuid Leshal, kuigi tal on kĂ”rgeim palk, tuleb oma soovid tagasi hoida.
Joonistame sellisel juhul graafiku.
Joon 2 âLaenuvĂ”tjate klassifitseerimineâ

Kood graafiku joonistamiseks
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['Otsus'] == 'Heakskiidetud']['Palk'], df[df['Otsus'] == 'Heakskiidetud']['Makse'],
'o', color ='green', markersize = 12, label = 'Otsus - Laen heaks kiidetud')
plt.plot(df[df['Otsus'] == 'Keeldumine']['Palk'], df[df['Otsus'] == 'Keeldumine']['Makse'],
's', color = 'red', markersize = 12, label = 'Otsus - Laenu keeldumine')
plt.xlabel('Palk', size = 16)
plt.ylabel('Makse', size = 16)
plt.legend(prop = {'size': 14})
plt.show()Nii, meie sirge, mis on joonistatud vastavalt funktsioonile
, eraldab "halvad" laenuvĂ”tjad "headest". Need laenuvĂ”tjad, kelle soovid ei vasta vĂ”imalustele, on sirgest ĂŒleval (Lesha), need, kes suudavad vastavalt meie mudeli parameetritele laenu tagasi maksta, on allpool sirget (Vasya ja Fedya). Teisi sĂ”nu â meie sirge jagab laenuvĂ”tjad kaheks klassiks. MÀÀratleme need jĂ€rgmiselt: klassi
arvame, et need laenuvÔtjad, kes tÔenÀoliselt tagastavad laenu, ning klassi
vÔi
arvame, et need laenuvÔtjad, kes tÔenÀoliselt ei suuda laenu tagasi maksta.
KokkuvÔtame jÀreldused sellest lihtsast nÀitest. VÔtame punkti
ja asendades punkti koordinaadid vastavasse sirge vÔrrandisse
, vaatame kolme varianti:
- Kui punkt asub sirgest allpool ning me seame ta klassi
, siis funktsiooni vÀÀrtus
on positiivne punkti.
kuni
Seega vÔime arvata, et laenu tagasimaksmise tÔenÀosus jÀÀb vahemikku
. Mida suurem on funktsiooni vÀÀrtus, seda kĂ”rgem on tĂ”enĂ€osus. - Kui punkt asub sirgest ĂŒleval ja me seame ta klassi
vÔi
, siis funktsiooni vÀÀrtus on negatiivne punkti.
kuni
Siis arvame, et laenu tagasimaksmise tÔenÀosus on vahemikus
ja, mida suurem on funktsiooni vÀÀrtuse absoluutne vÀÀrtus, seda kÔrgem on meie kindel uskumus. - Punkt asub sirgel, kahe klassi piiril. Sellisel juhul funktsiooni vÀÀrtus
on vÔrdne
ja laenu tagasimaksmise tÔenÀosus on
.
NĂŒĂŒd kujutame ette, et meil pole kaht tegurit, vaid kĂŒmneid, laenuvĂ”tjaid on mitte kolm, vaid tuhandeid. Siis on meil sirge asemel m-mÔÔtmelise tasandi ja koefitsiendid
meie andmed ei tule lihtsalt nii öeldes, vaid need on saadud kÔigi reeglite kohaselt, tuginedes kogunenud andmetele laenuvÔtjate kohta, kes on laenu tagasi maksnud vÔi mitte. TÔepoolest, mÀrgake, et me praegu valime laenuvÔtjaid juba teadaolevate koefitsientide pÔhjal.
Tegelikult seisneb logistilise regressiooni mudeli ĂŒlesanne just selles, et mÀÀrata parameetrid,
, mille korral kahjumi funktsiooni vÀÀrtus Logistic Loss, pĂŒĂŒab minimaalsele lĂ€heneda. Kuid kuidas vektorit
, me Ă”pime alles artikli 5. osas. Seni suundume tagasi lubatud maale â meie panganduse ja kolme kliendi juurde.
TĂ€nu funktsioonile
me teame, kellele saab laenu anda, ja kellele tuleks keelduda. Kuid selliste andmetega ei saa direktorile minna, kuna nad soovisid saada tĂ”enĂ€osust, et iga laenuvĂ”tja maksab laenu tagasi. Mida teha? Vastus on lihtne â me peame kuidagi muutma funktsiooni
, mille vÀÀrtused jÀÀvad vahemikku
funktsiooniks, mille vÀÀrtused jÀÀvad vahemikku
. Ja selline funktsioon eksisteerib, seda nimetatakse logistilise vastuse funktsiooniks vÔi vastupidiseks logit-muundamiseks.Tutvuge:

Vaadakem samm-sammult, kuidas saame logistilise vastuse funktsiooni.MÀrka, et me liigume vastupidises suunas, st me eeldame, et me teame tÔenÀosuse vÀÀrtust, mis jÀÀb vahemikku
kuni
ja seejĂ€rel âarendameâ seda vÀÀrtust kogu arvude ulatuses alates
kuni
.
03. Saame logistilise vastuse funktsiooni.
Samm 1. Muudame tÔenÀosuse vÀÀrtused vahemikku 
Kunstlik transformatsioonifunktsiooni ajal jĂ€tame meie krediidianalĂŒĂŒtiku rahule ja selle asemel kĂŒlastame spordiennustuskontoreid. Ei, muidugi me ei hakka panuseid tegema, kĂ”ik, mis meid seal huvitab, on vĂ€ljend, nĂ€iteks âvĂ”imalus 4:1â. VĂ”imalused, millega kĂ”ik panustajad tuttavad, on âedukateâ ja âebaedukateâ suhe. TĂ”enĂ€osuste osas on vĂ”imalused sĂŒndmuse toimumise tĂ”enĂ€osus jagatud ebaĂ”nnestumise tĂ”enĂ€osusega. Kirjutame sĂŒndmuse toimumise vĂ”imaluse valemi
ĂŒhes logistilise vastuse funktsiooni.
â sĂŒndmuse toimumise tĂ”enĂ€osus,
:

, kus
â sĂŒndmuse mitte toimumise tĂ”enĂ€osus.
NĂ€iteks, kui tĂ”enĂ€osus, et noor, tugev ja energiline hobune nimega âTuulekeâ ĂŒletab derbihobust nimega âMatildaâ, on
, siis âTuulekeâ eduvĂ”imalused on
, ja vastupidi, teades vÔimalusi, pole meil raske arvutada tÔenÀosust.
kellele
Seega oleme Ă”ppinud âtĂ”lkimaâ tĂ”enĂ€osust vĂ”imalusteks, mille vÀÀrtused jÀÀvad vahemikku.
:

Teeme veel ĂŒhe sammu ja Ă”pime âtĂ”lkimaâ tĂ”enĂ€osust kogu numbrilisel sirgel alates
kuni
Samm 2. Muudame tÔenÀosuse vÀÀrtused vahemikku
kuni
.
See samm on vĂ€ga lihtne â arvestame vĂ”imalusi Eulerâi numbri alusel 
ja saame:
NĂŒĂŒd teame, et kui

, siis vÀÀrtuse arvutamine
on vÀga lihtne ja, rohkem veel, see peab olema positiivne:
. Nii ongi.
Huvitav kontrollime, et kui
, siis ootame, et nÀha negatiivset vÀÀrtust.
Kontrollime:
. KÔik on Ôige.
NĂŒĂŒd teame, kuidas tĂ”lkida tĂ”enĂ€osuse vÀÀrtus alates
kogu numbrilisel sirgel alates
kuni
. JÀrgmises etapis teeme kÔik vastupidi.
kuni
Ja seni mÀrkime, et logaritmi reeglite kohaselt, teadmine funktsiooni vÀÀrtusest
, saab arvutada vÔimalused:
See meetod vÔimaluste mÀÀramiseks on meile kasulik jÀrgmisel sammul.

Samm 3. Saame valemi vÀlja töötamiseks
Nii oleme Ôppinud, teades 
, leidma funktsiooni vÀÀrtused.
Kuid tegelikult vajame me kĂ”ike vastupidi â teades vÀÀrtust
leida
. Selleks viime sisse mÔiste vastupidine vÔimaluste funktsioon, mille kohaselt:
Selles artiklis me ei hakka vÀljatoodud valemit tuletama, kuid kontrollime numbrite pÔhjal, mis on eespool. Teame, et 4:1 vÔimaluste korral (

) on sĂŒndmuse toimumise tĂ”enĂ€osus 0.8 (
). Teeme asenduse:
. See vastab meie varasemate arvutuste tulemustele. Liigume edasi.
Eelmises etapis leidis, et
, seega saab teha asenduse vastupidises vÔimaluste funktsioonis. Saame:
NĂŒĂŒd jagame nii nimetaja kui ka lugeja

, seega:
Selleks, et olla ettevaatlik, et mitte kuskil viga teha, teeme veel ĂŒhe vĂ€ikese kontrolli. Teises etapis mÀÀrasime, et

on.
SeejÀrel, asendades vÀÀrtuse
logistilise vastuse funktsioonis, ootame, et saada
. Asendame ja saame:
Palju Ônne teile, kallis lugeja, me oleme just vÀlja töötanud ja katsetanud logistilise vastuse funktsiooni. Vaadake graafikut. 
Graafik 3 «Logistilise vastuse funktsioon»
Graafik 3 âLogistilise reaktsiooni funktsioonâ

Kood graafiku joonistamiseks
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()KÀesolevas kirjanduses vÔib leida ka selle funktsiooni nimetust kui sigmoidi funktsioon. Graafikult on selgelt nÀha, et objekti kuuluvuse tÔenÀosus klassi muutub oluliselt suhteliselt kitsas vahemikus
, kuskil
kuni
.
Soovitan naasta meie krediidianalĂŒĂŒtiku juurde ja aidata tal arvutada laenu tagasi maksmise tĂ”enĂ€osust, vastasel juhul riskib ta preemia kaotamisega đ
Tabel 2 âPotentsiaalsed laenajadâ

Kood tabeli genereerimiseks
proba = []
for i in df['f(w,x)']:
proba.append(round(logit(i),2))
df['TÔenÀosus'] = proba
df[['Laenaja', 'Palganumber', 'Makse', 'f(w,x)', 'Otsus', 'TĂ”enĂ€osus']]Nii et oleme mÀÀranud laenu tagasimaksmise tĂ”enĂ€osuse. Ăldiselt nĂ€ib see olevat tĂ”ele lĂ€hedane.
TĂ”epoolest, tĂ”enĂ€osus, et Vassil, kelle palk on 120 000 R, suudab igakuiselt pankadele maksta 3 000 R, on lĂ€hedane 100%-le. Pealegi peame arvestama, et pank vĂ”ib anda laenu ka LeĆĄale, juhul kui panga poliitika nĂ€eb ette, et laenatakse kliente, kelle tagasimakse tĂ”enĂ€osus ĂŒletab nĂ€iteks 0.3. Sel juhul moodustab pank suurema reservi vĂ”imalike kaotuste katmiseks.
Samuti tuleb mÀrkida, et palga ja makse suhe vÀhemalt 3 ja 5 000 R varuga on valitud meelevaldselt. Seega ei saanud me mingil juhul kasutada algselt mÀÀratud kaaluvektorit
. Me pidime proportsioone mÀrgatavalt vÀhendama ning selle tulemuseks jagasime iga koefitsiendi 25 000-ga, see tÀhendab, et me kohandasime tulemuse. Kuid see tehti teadlikult, et lihtsustada materjali mÔistmist alguses. Elus ei peaks me mitte koefitsiente vÀlja mÔtlema ja kohandama, vaid neid leidma. Juba jÀrgmistes artikli osades tuletame vÀlja valemid, mille abil koefitsiendid mÀÀratakse
.
04. VÀhemate ruutude meetod kaaluvektori mÀÀramisel
logistilise vastuse funktsioonis
Niisiis on meil juba teada, et selline kaaluvektori mÀÀramise meetod
, nagu vĂ€hemate ruutude meetod (VRM) ja miks me siis ei vĂ”iks seda kasutada binaarsetes klassifitseerimisĂŒlesannetes? TĂ”epoolest, miski ei takista meie kasutamist MNLK, kuid see meetod annab klassifitseerimisel vĂ€hem tĂ€pseid tulemusi kui Logistic Loss,. Sellel on teoreetiline alus. Alustame ĂŒhe lihtsa nĂ€itega.
Oletame, et meie mudelid (mida kasutame MSE ja Logistic Loss,) on juba alustanud kaaluvektori mÀÀramist
ja me peatasime arvutuse mingil sammul. Ainult, et ei ole tÀhtis, kas keskel, lÔpus vÔi alguses, peamine on see, et meil on juba olemas mÔningad kaaluvektorite vÀÀrtused ja oletame, et sel sammul, kaaluvektorid
mÔlema mudeli jaoks ei erine. Siis vÔtame saadud kaalud ja asetame need logistilise vastuse funktsiooni. (
) mingisuguse objekti jaoks, mis kuulub klassi
. Uurime kahte juhtumit, kui meie mudel, mis pĂ”hineb mÀÀratud kaaluvektoril, eksib tugevalt ja vastupidi â mudel on kindel, et objekt kuulub klassi
. Vaadakem, millised karistused oleksid "vÀlja antud" kasutades MNLK ja Logistic Loss,.
Karistuste arvutamise kood sÔltuvalt kasutatavast kaotuse funktsioonist
# ĐșлаŃŃ ĐŸĐ±ŃĐ”ĐșŃа
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_2Juhul jĂ€medast veast â mudel mÀÀrab objekti klassi
tÔenÀosusega 0,01
Karistus kasutades MNLK koosneb:

Karistus kasutades Logistic Loss, koosneb:

Juhul tugeva enesekindluse korral â mudel mÀÀrab objekti klassi
tÔenÀosusega 0,99
Karistus kasutades MNLK koosneb:

Karistus kasutades Logistic Loss, koosneb:

See nĂ€ide illustreerib hĂ€sti, et jĂ€meda vea korral karistusfunktsioon Log Loss karistab mudelit oluliselt rohkem kui MSE. NĂŒĂŒd lahendame, millised on teoreetilised eeldused kaotuse funktsiooni kasutamiseks Log Loss klassifitseerimisĂŒlesannetes.
05. Maksimaalse tÔenÀosuse meetod ja logistiline regressioon
Nagu lubatud alguses, sisaldab artikkel palju lihtsaid nĂ€iteid. Ateljees on jĂ€rjekordne nĂ€ide ja vanad kĂŒlalised â panga laenuvĂ”tjad: Vassja, Fedja ja LeĆĄa.
Igaks juhuks, enne nĂ€ite arendamist, meenutan, et elus tegeleme Ă”ppimisvalimitega, kus on tuhandeid vĂ”i miljoneid objekte ning kĂŒmneid vĂ”i sadu tunnuseid. Siiski on numbrid siin valitud selliselt, et need mahuksid kergesti algaja andmete teadlase pĂ€he.
Naasime tagasi nĂ€ite juurde. Kujutame ette, et panga direktor otsustas anda laenu kĂ”igile vajajatele, hoolimata sellest, et algoritm soovitas mitte anda laenu Ljale. Ja siis on möödunud piisavalt aega ning saame teada, kes kolmest kangelasest on laenu tagasi maksnud ja kes ei. Nagu oodata vĂ”is: Vassil ja Fedjal Ă”nnestus laen tagasi maksta, kuid Ljale ei Ă”nnestunud. NĂŒĂŒd kujutame ette, et see tulemus on meie jaoks uus Ă”pikogum ja samas on nagu kadunud kĂ”ik andmed, mis mĂ”jutavad laenu tagasi maksmise tĂ”enĂ€osust (laenuvĂ”tja palk, igakuise makse suurus). Seega vĂ”ime intuitiivselt arvata, et iga kolmas laenuvĂ”tja ei tagasta panka laenu, teisisĂ”nu, tĂ”enĂ€osus, et jĂ€rgmine laenuvĂ”tja laenu tagasi maksab, on
. Sellele intuitiivsele oletusele on teoreetiline tÔestus, mis pÔhineb maksimaalse tÔenÀosuse meetodil, mida sageli nimetatakse maksimaalse tÔenÀosuse printsiibiks.
Alustuseks tutvume mÔisted.
Valimi tÔenÀosus on tÔenÀosus, et saame just sellise valimi ja just sellised vaatlus-/tulemused, s.t. iga tulemuse tÔenÀosuste korrutis (nÀiteks Vassi, Fedja ja Lja laenu tagasimaksmine vÔi mitte).
TÔenÀosuse funktsioon seob valimi tÔenÀosuse ja jaotuse parameetrite vÀÀrtused.
Meie puhul kujutab vĂ€ljaĂ”ppe valim endast ĂŒldistatud Bernoulli skeemi, kus juhuslik suhe vĂ”tab ainult kaks vÀÀrtust:
vÔi
. Seega saab valimi tÔenÀosust kirjutada kui tÔenÀosuse funktsiooni parameetri
jÀrgmiselt:


Ălaltoodud vĂ€ljendit vĂ”ib tĂ”lgendada jĂ€rgmiselt. Kuigi Vassil ja Fedjal on laenud tagastatud, on tĂ”enĂ€osus, et Lja EI tagasta laenu,
(kuna toimus just EI tagastamine), seega on kolme sĂŒndmuse ĂŒhine tĂ”enĂ€osus
(kuna juhtus, et laenu ei tasutud), seega on kolme sĂŒndmuse ĂŒhine tĂ”enĂ€osus vĂ”rdne
.
Maksimaalne tÔenÀosusmeetod on parameetri hindamise meetod, mille kÀigus maksimeeritakse tÔenÀosusfunktsiooni. Meie puhul peab leidma sellise vÀÀrtuse
, kus
saab maksimumi.
Kust siis, mĂ”te â otsida teadmata parameetri vÀÀrtust, mille juures tĂ”enĂ€osuse funktsioon saavutab maksimumi? Idee pĂ€rineb arusaamast, et valim on ainus, meile ligipÀÀsetav teadmisallikas populatsiooni kohta. KĂ”ik, mida me teame populatsioonist, on esitatud valimis. Seega saame öelda, et valim on kĂ”ige tĂ€psem peegeldus populatsioonist, mis on meile kergesti kĂ€tte saadav. SeetĂ”ttu peame leidma parameetri, mille juures on olemasolev valim kĂ”ige tĂ”enĂ€olisem.
Ilmselgelt on meil tegemist optimeerimisĂŒlesandega, kus peame leidma funktsiooni ÀÀrmuspunkti. ĂĂ€rmuspunkti leidmiseks tuleb kaaluda esimese jĂ€rgu tingimust, s.t. seada funktsiooni derivaat nulliks ja lahendada vĂ”rrand otsitava parameetri osas. Siiski, paljude tegurite derivaadi leidmine vĂ”ib osutuda tĂŒlikaks, et vĂ€ltida seda, on olemas eritehnika - logaritmile ĂŒleminek tĂ”enĂ€osusfunktsiooni. Miks on selline ĂŒleminek vĂ”imalik? Pöörake tĂ€helepanu sellele, et me ei otsi funktsiooni ÀÀrmust
, vaid ÀÀrmuspunkti, ehk vÀÀrtust, mille juures teadmata parameeter
, kus
saab maksimumi. Logaritmile ĂŒleminekul ÀÀrmuspunkt ei muutu (kuigi funksioon ise muutub). Logaritm on monotoonne funktsioon.
JĂ€tkame seetĂ”ttu ĂŒlaltoodud kohas esitatud laenude nĂ€ite arendamist. Esiteks liikume tĂ”enĂ€osuse funktsiooni logaritmile:

NĂŒĂŒd saame hĂ”lpsasti tuletada vĂ€ljendit
:

Ja lÔpuks vaatame esimese jÀrgu tingimust - seame funktsiooni tuletise nulliks:

Seega on meie intuitiivne hinnang laenu tagastamise tÔenÀosusele
olnud teoreetiliselt pÔhjendatud.
Olej hĂ€sti, kuid mida me nĂŒĂŒd sellise infoga teeme? Kui arvame, et iga kolmas laenuvĂ”tja ei tagasta panka raha, siis viimane jÀÀb kindlasti pankrotti. Nii on see, kuid kui hindame laenu tagastamise tĂ”enĂ€osust vÀÀrtusega
, ei ole me arvesse vÔtnud tegureid, mis mÔjutavad laenu tagastamist: laenuvÔtja palk ja igakuise makse suurus. Tuletagem meelde, et varem arvutasime laenu tagastamise tÔenÀosust iga kliendi jaoks, arvestades neid tegureid. On loogiline, et ka meie tÔenÀosused on saadud erinevad kui konstant, mis on
.
MÀÀratlegem valimite tÔenÀosus:
Kood tÔenÀosuste arvutamiseks
functools'i kaupa importimine
def tÔenÀosus(y,p):
rea_tÔenÀosus = []
for i in range(len(y)):
ltp_i = p[i]**y[i]*(1-p[i])**(1-y[i])
rea_tÔenÀosus.append(ltp_i)
tÔenÀosus = []
return reduce(lambda a, b: a*b, rea_tÔenÀosus)
y = [1.0,1.0,0.0]
p_log_response = df['Probability']
const = 2.0/3.0
p_const = [const, const, const]
print 'Valim tÔenÀosus konstantsel vÀÀrtusel p=2/3:', round(tÔenÀosus(y,p_const),3)
print '****************************************************************************************************'
print 'Valim tÔenÀosus arvutatud vÀÀrtusel p:', round(tÔenÀosus(y,p_log_response),3)Valim tÔenÀosus konstantsel vÀÀrtusel
:

Valim tÔenÀosus, kui arvestada krediidi tagasimaksmise tÔenÀosust teguritega
:


Valim tĂ”enĂ€osus, mille tĂ”enĂ€osus arvutati sĂ”ltuvalt teguritest, on suurem kui tĂ”enĂ€osus konstantsel vÀÀrtusel. Mida see tĂ€hendab? See tĂ€hendab, et teadmised teguritest vĂ”imaldasid tĂ€psemini mÀÀrata krediidi tagasimaksmise tĂ”enĂ€osuse iga kliendi jaoks. SeetĂ”ttu on jĂ€rgmise krediidi andmisel parem kasutada artikli 3. peatĂŒki lĂ”pus pakutud mudelit krediidi tagasimaksmise tĂ”enĂ€osuse hindamiseks.
Aga kui me peame maksimeerima valimi tÔenÀosuse funktsiooni, siis miks mitte kasutada mingit algoritmi, mis annaks tÔenÀosused Vasjale, Fedjale ja Ljoshale, nÀiteks 0.99, 0.99 ja 0.01 vastavalt. See algoritm vÔib osutuda tÔhusaks treeningu valimisel, kuna see viib valimi tÔenÀosuse lÀhedale
, kuid kĂ”igepealt on sellisel algoritmil tĂ”enĂ€oliselt ĂŒldistamisvĂ”imekuse probleemid, ja teiseks, see algoritm ei ole kindlasti lineaarne. Kui meetodid ĂŒletreenimise vastu (samuti nĂ”rk ĂŒldistamisvĂ”ime) ei ole selgelt selle artikli plaanis, siis lĂ€heme teise punkti juurde lĂ€hemale. Selleks piisab lihtsale kĂŒsimusele vastamisest. Kas Vasja ja Fedja krediidi tagasimaksmise tĂ”enĂ€osus vĂ”ib olla sama, arvestades meile teadaolevaid tegureid? Tervislikust mĂ”istusest lĂ€htuvalt, loomulikult mitte, ei saa. Nii et Vasja maksab igakuiselt 2.5% oma palgast tagasi, samas kui Fedja peaaegu 27,8%. Samuti nĂ€eme, et joonisel 2 "Kliendiklassifikatsioon" asub Vasja oluliselt kauem klasside eraldusjoonest kui Fedja. Ja lĂ”puks, me teame, et funktsioon
Vasja ja Fedja jaoks vĂ”tab erinevaid vÀÀrtusi: 4.24 Vasjale ja 1.0 Fedjale. Kui nĂ€iteks Fedja teeniks kordades rohkem vĂ”i kĂŒsiks vĂ€iksemat laenu, siis oleks Vasja ja Fedja krediidi tagasimaksmise tĂ”enĂ€osused sarnased. Teisiti öeldes, lineaarset sĂ”ltuvust ei saa petta. Ja kui me tĂ”eliselt arvutasime koefitsiendid
, mitte ei vÔtnud neid lihtsalt arvesse, siis saaksime julgesti vÀita, et meie vÀÀrtused
on parimad, et hinnata iga laenuandja krediidi tagasimaksmise tÔenÀosust, kuid kuna me oleme nÔustunud, et koefitsientide mÀÀramine
toimus kĂ”igi reeglite jĂ€rgi, siis oletame, et meie koefitsiendid vĂ”imaldavad anda parima hindamise tĂ”enĂ€osusele đ
Kuid oleme kÔrvale kaldunud. Selles jaos peame selgeks saama, kuidas mÀÀratakse kaalude vektor
, mis on vajalik iga laenuandja krediidi tagasimaksmise tÔenÀosuse hindamiseks.
KokkuvÔtteks, millise arsenali abil me koefitsientide otsingut alustame
:
1. Eeldame, et seos sihtmuutuja (prognoositava vÀÀrtuse) ja tulemusele mÔju avaldava teguri vahel on lineaarne. SeetÔttu kasutatakse lineaarse regressiooni funktsioon kuju
, mille joon jagab objektid (kliendid) klassideks
ja
vÔi
(kliendid, kes suudavad laenu tagastada ja need, kes ei suuda). Meie juhul on vÔrrandi kuju
.
2. Kasutame tagasipööratud logit-muundamisfunktsiooni kuju
objekti klassi kuuluvuse tÔenÀosuse mÀÀramiseks
.
3. KĂ€sitleme meie treeningvalimit kui ĂŒldise Bernoulli skeemi, see tĂ€hendab, et iga objekti jaoks genereeritakse juhuslik muutuja, mis tĂ”enĂ€osusega
(iga objekti oma) vÔtab vÀÀrtuse 1 ja tÔenÀosusega
â 0.
4. Me teame, et peame maksimeerima valimi tĂ”enĂ€osuse funktsiooni arvestades vĂ”etud tegureid, et olemasolev valim oleks kĂ”ige tĂ”enĂ€olisem. TeisisĂ”nu, me peame leidma sellised parameetrid, mille korral valim on kĂ”ige tĂ”enĂ€olisem. Meie puhul on mÀÀratav parameeter â krediidi tagasimaksmise tĂ”enĂ€osus
, mis sÔltub omakorda tundmatutest koefitsientidest
. Seega vajame kaalude vektorit
, mille korral valimi tÔenÀosus on maksimaalne.
5. Teame, et maksimeerimiseks valimi tÔenÀosuse funktsiooni vÔib kasutada maksimaalne tÔenÀosusmeetod. Ja me teame kÔiki selle meetodi kohta salajaste trikke.
Nii et selline mitme sammuga protsess ongi đ
Ja nĂŒĂŒd tuletame meelde, et artikli alguses soovisime tuua vĂ€lja kaks erinevat kaotuse funktsiooni Logistic Loss, sĂ”ltuvalt sellest, kuidas objektide klassid on mÀÀratletud. Niisiis on tavaline, et kahe klassi klassifitseerimise ĂŒlesannetes klasifitseeritakse klassid kui
ja
vÔi
. Klassifikaatsiooni mÀÀratlemise pÔhjal on vastava vÀljundi korraliku kaotuse funktsioon.
Juhtum 1. Objektide klassifitseerimine
ja 
A varem, proovide tÔenÀosuse mÀÀratlemisel, kus laenuvÔtja vÔlgade tasumise tÔenÀosus arvutati lÀhtudes teguritest ja anti koefitsientidest
, kasutasime valemit:

Tegelikult
â see on vÀÀrtus logistilise vastuse funktsioon
antud kaaluvÔrgustiku vektoriga 
Seega ei takista meid miski kirjutamast vÀlja proovide tÔenÀosuse funktsiooni nii:

Kuid mĂ”nikord on mĂ”ned algajad analĂŒĂŒtikud keerulised kohe mĂ”ista, kuidas see funktsioon töötab. Uurime nelja lĂŒhikest nĂ€idet, mis kĂ”ik selgitavad:
1. Kui
(st, kui vastavalt koolitusproovile kuulub objekt klassi +1), ja meie algoritm
mÀÀra objekti tÔenÀosus kuuluda klassi
olekul 0.9, nii et see tĂ”enĂ€osuse tĂŒkk arvutatakse jĂ€rgmiselt:

2. Kui
, ja
, siis arvutus oleks selline:

3. Kui
, ja
, siis arvutus oleks selline:

4. Kui
, ja
, siis arvutus oleks selline:

Ilmselgelt maksimeeritakse tĂ”enĂ€osuse funktsioon juhtudel 1 ja 3 vĂ”i ĂŒldiselt â Ă”igete tĂ”enĂ€osuse vÀÀrtuste puhul objekti klassile mÀÀramisel
.
Kuna objekti tÔenÀosuse mÀÀratlemisel klassile
ei ole meile teada ainult koefitsiendid
, siis me otsime neid. Nagu eelpool nimetatud, on see optimeerimise probleem, kus esialgu peaksime leidma tÔenÀosuse funktsiooni derivatiivi kaaluvÔrgustiku vektori suhtes
. Siiski on mĂ”istlik alustada oma ĂŒlesande lihtsustamisest: otsime derivatiivi logaritmist tĂ”enĂ€osusfunktsiooni.

Miks logaritmimise jÀrel, logistilise vea funktsioonis, vaihtaa mÀrk
jÀrgnevaga
. KĂ”ik on lihtne, kuna mudeli kvaliteedi hindamise ĂŒlesannetes on tavaks miinimumida funktsiooni vÀÀrtust, seega korrutame vĂ€ljendi paremat poolt
ja vastavalt rikka jaoks, nĂŒĂŒd miinimumime funktsiooni.
Tegelikult, praegu, teie silmade ees oli paljude kannatustega vĂ€lja tuletatud kaotuse funktsioon â Logistic Loss, kaks klassi sisaldavates koolitusproovides:
ja
.
NĂŒĂŒd, koefitsiendi leidmiseks, vajame lihtsalt derivatiivi leidmist logistilise vea funktsioonis ja seejĂ€rel, kasutades numbrilisi optimeerimismeetodeid, nagu nĂ€iteks gradientide langetamine vĂ”i stohhastiline gradientide langetamine, et leida kĂ”ige optimaalsed koefitsiendid.
. Kuid arvestades juba mitte vÀhe artikli mahukust, soovitatakse diffeerimist iseseisvalt teha vÔi vÔib-olla on see jÀrgmise suuremate arvutuste artikli teema.
Juhtum 2. Objektide klassifitseerimine
ja 
LĂ€henemine siin on sama, mis klasside puhul
ja
, kuid tee kaotuse funktsiooni leidmiseni Logistic Loss,, on keerukam. Alustame. TÔenÀosuse funktsiooni mÀÀramiseks kasutame operaatorit "kui..., siis...". See tÀhendab, et kui
-ndal objektil on klass
, siis tÔenÀosuse kontseptsiooni arvutamiseks kasutame tÔenÀosust
, kui objekt kuulub klassi
, siis asendame tÔenÀosuse
. Nii nÀeb vÀlja tÔenÀosuse funktsioon:

KÀe peal vÀljendame, kuidas see töötab. Uurime nelja juhtumit:
1. Kui
ja
, siis tÔenÀosuse proovile "jÔuab" 
2. Kui
ja
, siis tÔenÀosuse proovile "jÔuab" 
3. Kui
ja
, siis tÔenÀosuse proovile "jÔuab" 
4. Kui
ja
, siis tÔenÀosuse proovile "jÔuab" 
Ilmselgelt 1. ja 3. juhul, kui tĂ”enĂ€osused oli algoritmiga Ă”igesti mÀÀratletud, tĂ”enĂ€osuse funktsioon maksimeeritakse, just seda me soovisime saavutada. Siiski on selline lĂ€henemine piisavalt kolossaalne ja hiljem vaatame tihedamat kirja. Kuid esmalt muudame tĂ”enĂ€osuse funktsiooni logaritmimiseks, mĂ€rkides ĂŒmber, kuna nĂŒĂŒd hakkame seda minimeerima.

Asendame
avaldusega
:

Lihtsustame Ôigusprinti logaritmibaasi all vaadata, kasutades lihtsaid aritmeetilisi meetodeid ja saame:

Ja nĂŒĂŒd on aeg vabaneda operaatorist "kui..., siis...". TĂ€heldame, et kui objekt
kuulub klassi
, siis logaritmi avaldis, nimetaja
on tÔstetud
, kui objekt kuulub klassi
, seega $e$ on tÔstetud
. Seega saab lauseastme kirja lihtsustada â ĂŒhendame mĂ”lemad juhtumid ĂŒheks:
. Siis logistilise vea funktsioon kuju:

Logaritmimise reeglite kohaselt, pöörame murru ĂŒmber ja viime mĂ€rgi "
" (miinus) logaritmi vÀlja, saame:

Teie ees on kaotuse funktsioon logistic Loss, mis rakendub koolitusproovides klassidesse kuuluvate objektide suhtes:
ja
.
Noh, sellel hetkel ma lahkun ja lÔpetame artikli.
Autori eelmine töö â "Viime lineaarse regressioonivĂ”rrandi maatriksmoodusesse"
Abimaterjalid
1. Kirjandus
1) Rakendatav regressioonianalĂŒĂŒs / N. Draper, G. Smith â 2. vĂ€ljaanne â M.: Finants ja statistika, 1986 (tĂ”lge inglise keelest)
2) TĂ”enĂ€osusteooria ja matemaatiline statistika / V.E. Gmurman â 9. vĂ€ljaanne â M.: KĂ”rgkool, 2003
3) TĂ”enĂ€osusteooria / N.I. TĆĄernova â Novosibirsk: Novosibirski riiklik ĂŒlikool, 2007
4) ĂrianalĂŒĂŒs: andmetest teadmisteni / Paklin N. B., Oreshkov V. I. â 2. vĂ€ljaanne â Peterburi: Peter, 2013
5) Andmete teadus: nullist Ă”ppimine / Joel Grass â Peterburi: BHV Peterburi, 2017
6) Praktika statistika spetsialistidele Andmete Teaduses / P. Bruce, E. Bruce â Peterburi: BHV Peterburi, 2018
2. Loengud, kursused (video)
1)
2)
3)
4)
5)
3. Internetiallikad
1)
2)
3)
4)
5)
6)
7)
8)
Allikas: habr.com

ĂŒhes logistilise vastuse funktsiooni. 
funktsioonid Logistic Loss,
:

, siis funktsiooni vÀÀrtus
on positiivne punkti.
kuni
Seega vÔime arvata, et laenu tagasimaksmise tÔenÀosus jÀÀb vahemikku
. Mida suurem on funktsiooni vÀÀrtus, seda kÔrgem on tÔenÀosus.
vÔi
, siis funktsiooni vÀÀrtus on negatiivne punkti.
kuni
Siis arvame, et laenu tagasimaksmise tÔenÀosus on vahemikus
ja, mida suurem on funktsiooni vÀÀrtuse absoluutne vÀÀrtus, seda kÔrgem on meie kindel uskumus.
on vÔrdne
ja laenu tagasimaksmise tÔenÀosus on
.


logistilise vastuse funktsioonis
ja 
ja 