
Selles artiklis käsitleme teoreetilisi põhialuseid lineaarse regressioonifunktsiooni ja tagasilogitiseerimise funktsiooni (tuntud ka kui logistilise vastuse funktsioon). Seejärel, kasutades maksimaalsete tõenäosuste meetodit, tuletame välja kaotuse funktsiooni vastavalt logistilise regressiooni mudelile Logistic Loss, teisisõnu, määratleme funktsioon, millega logistilise regressiooni mudelis kohandatakse kaaluvektori parameetreid
.
Artikli plaan:
- Korrame ka sirgjoonelist sõltuvust kahe muutuja vahel
- Määratleme vajaduse transformeerimise järele lineaarse regressioonifunktsiooni
ja logistilise vastuse funktsiooni 
- Teeme ümberkujundusi ja tuletame välja logistilise vastuse funktsiooni
- Püüame mõista, miks on minimaalsete ruutude meetod parameetrite kohandamisel halb valik
funktsioone Logistic Loss - Kasutame maksimaalse tõenäosuse meetodit selleks, et tuvastada parameetrite kohandamise funktsioonid
:5.1. Juhtum 1: funktsioon Logistic Loss klassimärgistuse objektide jaoks 0 ja 1:

5.2. Juhtum 2: funktsioon Logistic Loss klassimärgistuse objektide jaoks -1 ja +1:

Artikkel on täis lihtsaid näiteid, kus kõik arvutused on kergesti teostatavad suuliselt või paberil, mõningatel juhtudel võib osutuda vajalikuks kalkulaator. Nii et valmistuge 🙂
See artikkel on rohkem suunatud andeteadlastele, kellel on algteadmised masinõppe põhialustes.
Artiklis on lisatud ka kood jooniste ja arvutuste tegemiseks. Kogu kood on kirjutatud keeles python 2.7. Selgitan eelnevalt, et „uuendus“ seotud versioonist on üks tingimustest tuntud kursuse läbitamiseks Yandexilt tuntud veebihariduse platvormil Coursera, ja nagu võib arvata, on materjal koostatud selle kursuse põhjal.
01. Sirgjooneline sõltuvus
On täiesti mõistlik küsida - mis tähenduses on sirgjooneline sõltuvus ja logistiline regressioon?
Kõik on lihtne! Logistiline regressioon on üks mudeleid, mis kuuluvad lineaarsete klassifikaatorite rikkausse. Lihtsustatult öeldes, lineaarse klassifikaatori ülesanne on ennustada sihtväärtusi
muutujatest (regressoritest)
. Samuti eeldatakse, et seos tunnuste vahel
ja sihtväärtuste
on lineaarne. Sealt ka klassifikaatori nimi - lineaarne. Kui väga üldiselt kokku võtta, siis logistilise regressiooni mudeli aluseks on eeldus, et tunnuste vahel on lineaarne sõltuvus
ja sihtväärtuste
. Siin on see - seos.
Stuudios on esimene näide, ja see on õigesti, otsene seos uuritavate suuruste vahel. Artikli ettevalmistamise käigus sattusin näite peale, mis on paljudele juba üpris tuttav – sõltuvus voolust pingest. („Rakenduslik regressioonianalüüs“, N. Dreiper, G. Smith). Siin vaatleme seda samuti.
Vastavalt Oma seaduse järgi:
, kus
— vool,
— pinge,
— takistus.
Kui me ei teaks Oma seadust, võiksime leida sõltuvuse empiiriliselt, muutes
ja mõõtes
, hoides samas
constantsena. Siis näeksime, et sõltuvuse graafik
alates
annab rohkem või vähem sirge joone, mis läbib koordinaatide alguspunkti. Ütlesime „rohkem või vähem“, kuna kuigi sõltuvus on tegelikult täpne, võivad meie mõõtmised sisaldada väikeseid vigu ja seetõttu ei pruugi punktid graafikul rangelt joonele langeda, vaid on juhuslikult selle ümber hajutatud.
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 = 'Reaalsete tulemuste')
plt.xlabel('I', size = 16)
plt.ylabel('U', size = 16)
plt.legend(prop = {'size': 14})
plt.show()02. Lineaarse regressiooni võrrandi ümberkujundamise vajadus
Käime läbi järgmise näite. Kujutame ette, et töötame pangas ja meil on ülesanne kindlaks teha krediidi tagasimaksmise tõenäosus laenuvõtja poolt sõltuvalt mõnest tegurist. Ülesande lihtsustamiseks vaatleme ainult kahte tegurit: laenuvõtja kuu palk ja kuu suurus, mida makstakse krediidi tagasimakseks.
Ülesanne on väga teoreetiline, kuid selle näite kaudu suudame mõista, miks selle lahendamiseks ei piisa lineaarse regressioonifunktsiooni, ja saame teada, milliseid muudatusi funktsiooniga on vaja teha.
Tagasi meie näite juurde. On arusaadav, et mida kõrgem on palk, seda rohkem suudab laenuvõtja igakuiselt maksta laenu tagasimiseks. Samuti, teatud palgarange puhul on see seos suhteliselt lineaarne. Oletame, et võtame palgavahemiku 60 000 R kuni 200 000 R ja eeldame, et antud palgavahemikus on igakuise makse ja palga suhe lineaarne. Oletame, et antud palgavahemikus on leitud, et laenuvõtja palk ei tohi olla madalam kui kolmandik makset ning laenuvõtjal peab jääma 5 000 R varuks. Ainult sel juhul arvame, et laenuvõtja suudab laenu pangale tagasi maksta. Seega, lineaarse regressiooni valem on järgmine:

kus
,
,
,
— laenuvõtja palk
-
— laenu makse
-i laenuvõtja.
Asendades valemisse palga ja laenu makse fikseeritud parameetritega
saame teha otsuse laenu andmise või keeldumise osas.
Kiire ülevaate tegemiseks tasub märkida, et antud parameetrite puhul
lineaarse regressiooni funktsioon, mida kasutatakse logistilise vastuse funktsiooni kaalud, toovad välja suured väärtused, mis muudavad laenu tagasimaksetõenäosuste arvutamiseks keeruliseks. Seetõttu on soovitatav meie koefitsiente vähendada näiteks 25 000 korda. Sellest koefitsientide muutmisest laenu andmise otsus ei muutu. Jätame selle hetke meelde tuleviku tarbeks ja et oleks veel selgem, millest räägime, vaatleme kolme potentsiaalset laenuvõtjat.
Tabel 1 «Potentsiaalsed laenuvõtjad»

Kood tabeli loomiseks
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 = 'Kinnitatud'
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 Vasya, kelle palk on 120 000 R, saada laenu, mille taotlemiseks peab ta igakuiselt maksma 3 000 R. Oleme kindlaks teinud, et laenu kinnitamiseks peab Vasya palk olema vähemalt kolm korda suurem kui makse ning tal peab olema veel 5 000 R varuks. See nõue on Vasya puhul täidetud:
. Jääb isegi 106.000R. Hoolimata sellest, et arvutamisel
vähendasime koefitsiente
25.000 korda, saime sama tulemuse — laen võib olla kinnitatud. Fedja saab ka laenu, kuid Leonid, hoolimata sellest, et ta teenib kõige rohkem, peab oma soove alandama.
Joonistame selle puhul graafiku.
Graafik 2 «Laenuvõtjate klassifikatsioon»

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['Decision'] == 'Approved']['Salary'], df[df['Decision'] == 'Approved']['Payment'],
'o', color='green', markersize=12, label='Otsus - Laen kinnitatud')
plt.plot(df[df['Decision'] == 'Refusal']['Salary'], df[df['Decision'] == 'Refusal']['Payment'],
's', color='red', markersize=12, label='Otsus - Laenu tagasi lükatud')
plt.xlabel('Palga', size=16)
plt.ylabel('Makse', size=16)
plt.legend(prop={'size':14})
plt.show()Nii et meie sirge, mis on koostatud funktsiooni
, eraldab «halbu» laenuvõtjaid «headest». Need laenuvõtjad, kelle soovid ei lange kokku võimalustega, asuvad sirge kohal (Leonid), need, kes on suuteline vastavalt meie mudeli parameetritele laenu tagasi maksma, asuvad sirge all (Vassja ja Fedja). Teisisõnu, meie sirge jagab laenuvõtjad kaheks klassiks. Määratleme need järgmiselt: klassi
kuuluvad need laenuvõtjad, kes tõenäoliselt maksavad laenu tagasi, klassi
või
kuuluvad need laenuvõtjad, kes tõenäoliselt ei suuda laenu tagasi maksta.
Kokkuvõtvalt teeme selle lihtsa näite põhjal järeldused. Vambilge punkt
ja, sisestades punktide koordinaadid vastavasse sirge võrrandisse
, vaatleme kolme varianti:
- Kui punkt asub sirge all ja me kuulume selle klassi
, siis funktsiooni väärtus
on positiivne väärtus
kuni
. See tähendab, et meie arvestus krediidi tagasimaksmise tõenäosusest on
. Mida suurem on funktsiooni väärtus, seda suurem on tõenäosus. - Kui punkt on sirge kohal ja me kuulume selle klassi
või
, siis funktsiooni väärtus on negatiivne väärtus
kuni
. Sel juhul arvame, et makseraskuste tõenäosus on
ja, mida suurem on funktsiooni absoluutne väärtus, seda suurem on meie kindel tunne. - Punkt asub sirgel, kahe klassi piiril. Sellisel juhul on funktsiooni väärtus
võrdne
ja krediidi tagasimaksmise tõenäosus on
.
Nüüd kujutame ette, et meil ei ole kahte tegurit, vaid kümneid, laenuvõtjaid mitte kolme, vaid tuhandeid. Siis on meil sirge asemel m-mõõteline tasand ja koefitsiendid
meie koefitsiendid ei ole välja mõeldud, vaid määratud kõigi reeglite kohaselt, tuginedes kogunenud andmetele laenuvõtjate kohta, kes on oma laenu tagasi maksma või mitte. Ja tõesti, palun märkige, et me valime laenuvõtjaid juba tuntud koefitsientide põhjal
. Tegelikult on logistilise regressiooni mudeli ülesanne just määrata parameetreid,
, mille puhul kaotusfunktsiooni väärtus Logistic Loss püüab olla minimaalne. Kuid sellest, kuidas vektorit
, me veel saame teada artikli 5. osast. Ja praegu naaseme tõotatud maale — meie pangandusesse ja kolme tema kliendi juurde.
Tänu funktsioonile
me teame, kellele võib laenu anda ja kellele tuleb keelduda. Kuid sellise teabega ei saa direktori juurde minna, sest me soovisime saada iga laenuvõtja laenu tagastamise tõenäosust. Mis teha? Vastus on lihtne — meil on vajalik mingil moel funktsioon
, mille väärtused jäävad vahemikku
funktsiooniks, mille väärtused jäävad vahemikku
. Ja selline funktsioon eksisteerib, seda nimetatakse logistilise vastuse funktsiooniks või vastupidise logit-muutmiseks. Tere tulemast:

Vaadakem samm-sammult, kuidas saadakse logistilise vastuse funktsioon.Märkus, et me liigume vastupidises suunas, st eeldame, et me teame tõenäosuse väärtust, mis jääb vahemikku
kuni
ja siis me „aukudame” selle väärtuse kõikide arvude vahemikku
kuni
.
03. Saame logistilise vastuse funktsiooni
Samm 1. Muudame tõenäosuse väärtused vahemikku 
Aja jooksul funktsiooni muundamise
ja logistilise vastuse funktsiooni
me jätame meie krediidianalüütiku rahule ja selle asemel käime läbi mänguportaalide. Ei, loomulikult me ei hakka panuseid tegema, kõik, mis meid seal huvitab, on väljendi tähendus, näiteks, võimalus 4:1. Võimalused, mida tunnevad kõik mängijad, on „edukuse” ja „ebaedukuse” suhe. Tõenäosuste seisukohalt on võimalus - see on toimumise tõenäosus, jagatud tõenäosusega, et sündmus ei toimu. Kirjutame sündmuse toimumise tõenäosuse valemi
:

, kus
— sündmuse toimumise tõenäosus,
— sündmuse mitte toimumise tõenäosus
Näiteks, kui tõenäosus, et noor, tugev ja energiline hobune nimega "Tuulehaug" möödub jõulise ja vanast vanamoodsast naise nimega "Matilda" võistlustel
, siis „Vetrika“ edu võimalused on
aadressile
ja vastupidi, teades võimalusi, ei ole meil raske arvutada tõenäosust
:

Nii oleme õppinud „tõlkima“ tõenäosust võimalusteks, mille väärtused jäävad vahemikku
kuni
. Teeme veel ühe sammu ja õpime „tõlkima“ tõenäosust kogu arvulisel sirgel alates
kuni
.
Samm 2. Tõlgime tõenäosuse väärtused vahemikku 
See samm on väga lihtne - võtame logaritmi Euler'i arvust
ja saame:

Nüüd teame, et kui
, siis on väärtuse arvutamine
väga lihtne ja mis kõige tähtsam, see peaks olema positiivne:
. Nii see on.
Huvitav, kontrollime, et kui
, siis loodame näha negatiivset väärtust
. Kontrollime:
. Kõik on õige.
Nüüd teame, kuidas tõlkida tõenäosuse väärtus alates
kuni
kogu arvulisele sirgele alates
kuni
. Järgmises etapis teeme kõik vastupidi.
Kuni selle ajani, märkige, et logaritmeermise reeglite kohaselt, teades funktsiooni väärtust
, on võimalik arvutada võimalusi:

See meetod võimaluste määramiseks tuleb meile kasuks järgmises etapis.
Samm 3. Jõudke valemini määramiseks 
Nii oleme õppinud, teades
, leidma funktsiooni väärtused
. Kuid tegelikult peame me kõik kõike teha vastupidi - teades väärtust
leidma
. Selleks läheme tagasi sellise mõiste juurde nagu võimaluste pöördfunktsioon, mille kohaselt:

Käesolevas artiklis me ei tohi tuletada ülalmainitud valemit, kuid kontrollime numbrite põhjal eelnevalt. Teame, et 4:1 võimaluste juures (
), on sündmuse tõenäosus 0.8 (
). Teeme asenduse:
. See vastab meie varem tehtud arvutustele. Jätkame.
Eelmisel sammul oleme tuletanud, et
, seega saame teha asenduse võimaluste pöördfunktsioonis. Saame:

Jagame nii nimetaja kui ka nimetaja
, siis:

Igal juhul, et veenduda, et me ei ole kuskil eksinud, teeme veel ühe väikese kontrolli. Samm 2, me määrasime, et
. Seega, asendades väärtuse
logistilise vastuse funktsiooni, loodame saada
. Asendame ja saame:
Palju õnne, austatud lugeja, me oleme just tuletanud ja testinud logistilise vastuse funktsiooni. Vaadakem, milline on funktsiooni graafik. 
Graafik 3 „Logistilise vastuse funktsioon“
Graafik 3 „Logistilise vastuse 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()Kirjanduses võib seda funktsiooni leida ka nimetuses sigmoidi funktsioon. Graafikust on selgelt näha, et tõenäosuse muutus objekti klassi kuulumisele toimub suhteliselt kitsas vahemikus
, kuskil vahemikus
kuni
.
Pakun, et naaseme meie krediidianalüüsi juurde ja aitame tal arvutada krediitide tagasimaksmise tõenäosust, vastasel juhul riskib ta jääda ilma preemiata 🙂
Tabel 2 "Potentsiaalsed laenuvõtjad"

Kood tabeli loomiseks
proba = []
for i in df['f(w,x)']:
proba.append(round(logit(i),2))
df['Probability'] = proba
df[['Laenuvõtja', 'Palk', 'Makse', 'f(w,x)', 'Otsus', 'Tõenäosus']]Nii et me oleme määranud krediidi tagastamise tõenäosuse. Üldiselt on see tõele lähedane.
Tõepoolest, tõenäosus, et Vassil, kelle palk on 120.000R, suudab igakuiselt pangale maksta 3.000R, on ligi 100%. Muide, me peame aru saama, et pank võib anda laenu ka Lešale juhul, kui panga poliitika lubab näiteks laenata kliente, kelle tagastamise tõenäosus on üle 0.3. Lihtsalt sellisel juhul moodustab pank suurema varu võimalike kaotuste jaoks.
Samuti tuleks märkida, et palga ja makse suhe mitte alla 3 ja varuga 5.000R võeti õhust. Seetõttu ei saanud me esialgsetel andmetel kaaluvektoreid kasutada.
. Me pidime koefitsiente oluliselt vähendama, jagades iga koefitsendi 25.000-ga, see tähendab, et tegelikult sättisime tulemuse. Kuid see tehti spetsiaalselt, et lihtsustada materjali mõistmist esimesel etapil. Tegelikus elus peab me leidma koefitsiendid, mitte neid välja mõtlema või kohandama. Just järgmistes artikli osades tuletame valemid, millega parameetreid kohandatakse.
.
04. Väikseimate ruutude meetod kaaluvektorite määramisel
logistilise regressiooni funktsioonis
Meil on juba selline meetod kaaluvektori leidmiseks
, nagu väikseimate ruutude meetod (VRM) ja miks me ei saaks seda kasutada binaarse klassifitseerimise ülesannetes? Tõepoolest, miski ei takista meid kasutamast MNLK, kuid see meetod annab klassifitseerimise ülesannetes vähem täpseid tulemusi kui Logistic Loss. Sellel on teoreetiline alus. Alustame lihtsa näitega.
Oletame, et meie mudelid (kasutades MSE ja Logistic Loss) on juba alustanud kaaluvektori valimist
ja me peatasime arvutuse mingil sammul. Pole tähtis, kas keskel, lõpus või alguses, peamine on see, et meil on juba mingid kaalvektorite väärtused ja oletame, et sel hetkel ei ole mõlema mudeli kaaluväärtuste
erinevusi. Võtame siis saadud kaalud ja paigutame need logistilise vastuse funktsiooni (
) mingisuguse objekti jaoks, mis kuulub klassi
. Uurime kahte juhtumit, kui vastavalt valitud kaaluväärtusele meie mudel eksib tõsiselt ja vastupidi — mudel on kindel, et objekt kuulub klassi
. Vaatame, millised karistused „väljastatakse“ kasutamise korral MNLK ja Logistic Loss.
Kood karistuste arvutamiseks sõltuvalt kasutatavast kaotusfunktsioonist
# класс объекта
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, kui toimub tõsine viga — mudel määrab objekti klassiks
0,01 tõenäosusega
Karistus kasutamise korral MNLK on järgmine:

Karistus kasutamise korral Logistic Loss on järgmine:

Juhul, kui esineb tugev kindlus — mudel määrab objekti klassiks
0,99 tõenäosusega
Karistus kasutamise korral MNLK on järgmine:

Karistus kasutamise korral Logistic Loss on järgmine:

See näide illustreerib hästi, et tõsise vea korral karistab kaotusfunktsioon Log Loss mudelit oluliselt rohkem kui MSE. Vaatame nüüd, millised on teoreetilised eeldused kaotusfunktsiooni kasutamiseks Log Loss klassifitseerimise ülesannetes.
05. Maksimaalne tõenäosusmeetod ja logistiline regressioon
Nagu alguses lubatud, on artikkel täidetud lihtsate näidete korral. Stuudias on uus näide ja vanad külalised — pangalaenuvõtjad: Vassja, Fedja ja Ljoša.
Igaks juhuks, enne kui näidet arendama hakkame, tuletan meelde, et elus tegeleme me õppimisvalimustega, mis koosnevad tuhandetest või miljonitest objektidest, millel on kümneid või sadu tunnuseid. Siiski on siin numbrid valitud nii, et need sobivad kergesti algaja andmete teadlase pähe.
Naas tagasi näite juurde. Kujutame ette, et panga direktor otsustas anda laenu kõigile, kes seda vajavad, hoolimata sellest, et algoritm näitas, et Aleksei'le ei tohiks laenu anda. Ja nüüd on piisavalt aega möödas ning oleme teada saanud, kes kolmest kangelasest laenu tagasi maksis ja kes mitte. Nagu arvata võib: Vasja ja Fedja maksid laenu tagasi, kuid Aleksei — ei. Nüüd kujutame ette, et see tulemus on meie uus õpikogum ja samal ajal on meil justkui kadunud kõik andmed, mis mõjutavad laenu tagasimaksmise tõenäosust (laenuvõtja palk, iga kuu makse suurus). Seega saab intuitiivselt arvata, et iga kolmas laenuvõtja ei maksa panka laenu tagasi, või teisisõnu, järgmise laenuvõtja tagasimaksmise tõenäosus
. Sellele intuitiivsele oletusele on teoreetiline kinnituse leidmine ja see põhineb maksimaalse tõenäosuse meetodil, mida sageli nimetatakse maksimaalse tõenäosuse printsiibiks.
. Alustuseks tutvume mõisted.
Valimi tõenäosus on kindla valimi ja kindlate vaatluste / tulemuste saamise tõenäosus, st iga valimi tulemuse (nt Vasja, Fedja ja Aleksei laenu tagasimaksmine või mitte tagasimaksmine) saamise tõenäosuste korrutis.
Tõenäosuse funktsioon seob valimi tõenäosuse ja jaotuse parameetrite väärtused.
Käesoleval juhul esindab õpikogum üldistatud Bernoulli skeemi, kus juhuslik muutuj võtab ainult kaks väärtust:
või
. Seega saab valimi tõenäosust väljendada tõenäosuse funktsioonina parameetrist
järgmiselt:


Ülaltoodud kujutist saab tõlgendada järgmiselt. Koondtõenäosus, et Vasja ja Fedja maksavad laenu tagasi, on
, tõenäosus, et Aleksei EI maksa laenu tagasi, on
(kuna toimumiseks oli just EI tagasimaksmine), seega kolmes sündmuse koondtõenäosus on
.
Maksimaalse tõenäosuse meetod see on tundmatu parameetri hindamise meetod maksimeerimise teel tõenäosuse funktsiooni. Meie juhul tuleb leida selline väärtus
, mille korral
saab maksimaalse tulemuse.
Kust tuli mõte otsida tundmatu parameetri väärtust, mille korral tõenäosusfunktsioon saavutab maksimaalse väärtuse? Idee juured tulenevad arusaamast, et valim on ainus meie jaoks kättesaadav teadmusallikas kogu populatsiooni osas. Kõik, mida me teame populatsiooni kohta, on esitatud valimis. Seetõttu saame öelda, et valim on kõige täpsem peegeldus populatsioonist, mis on meile kättesaadav. Seega peame leidma sellise parameetri, mille korral antud valim on kõige tõenäolisem.
Ilmselgelt on tegu optimeerimisülesandega, kus tuleb leida funktsiooni ekstremumipunkt. Ekstremumipunkti leidmiseks on vajalik arvestada esimese järgu tingimusega, see tähendab, et tuleb seada funktsiooni tuletis nulliks ja lahendada võrrand otsitava parameetri osas. Siiski võivad tuletiste leidmine paljude tegurite korrutisest osutuda aeganõudvaks, et seda vältida, on olemas spetsiaalne meetod — logaritmi võtmine. tõenäosuse funktsiooni. Miks on selline üleminek võimalik? Pöörame tähelepanu sellele, et me ei otsi mitte funktsiooni enda ekstremumit,
, vaid ekstremumipunkti, s.t. tundmatu parameetri väärtust,
, mille korral
mille korral see saavutab maksimaalse väärtuse. Logaritmi võttes ei muutu ekstremumipunkt (kuigi ise ekstremum muutub), kuna logaritm on monotoonne funktsioon.
Vaatame nüüd vastavalt ülaltoodule edasi meie näidet Vasja, Fedja ja Joosepi laenudest. Alustame logaritmi võtmisega tõenäosusfunktsioonist.:

Nüüd saame hõlpsasti tuletist arvutada vastavalt
:

Ja lõpetuseks vaatame esimese järgu tingimust — seame funktsiooni tuletise nulliks:

Nii, meie intuitiivne hinnang krediidi tagasimaksmise tõenäosusele
oli teoreetiliselt põhjendatud.
Suurepärane, aga mida me nüüd sellise infoga teha saame? Kui me arvame, et iga kolmas laenuvõtja ei maksa pankadele raha tagasi, siis pank teenib kindlasti kahjumit. Nii ongi, kuid krediidi tagasimaksmise tõenäosuse hindamine on väärt.
me ei arvestanud tegureid, mis mõjutavad laenu tagasimakset: laenuvõtja palk ja kuu makse suurus. Tuletame meelde, et varem arvutasime laenu tagasimaksmise tõenäosust iga kliendi jaoks, arvestades just neid tegureid. Loogiliselt öeldes on ka tõenäosused meil saadud erinevad konstanti võrreldes.
.
Määratleme proovide tõenäosuse:
Kood proovide tõenäosuste arvutamiseks
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 'Proovi tõenäosus konstantsel väärtusel p=2/3:', round(likelihood(y,p_const),3)
print '****************************************************************************************************'
print 'Proovi tõenäosus arvutatud väärtusel p:', round(likelihood(y,p_log_response),3)Proovi tõenäosus konstantsel väärtusel
:

Proovi tõenäosus laenu tagasimaksmise tõenäosuse arvutamisel, arvestades tegureid
:


Proovi tõenäosus, mille tõenäosus arvutati tegurite põhjal, osutus kõrgemaks kui konstantsel tõenäosusel. Mis see tähendab? See tähendab, et teadlikkus teguritest võimaldas täpsemalt määrata laenu tagasimaksmise tõenäosuse iga kliendi jaoks. Seetõttu on uute laenude andmisel õigemateks olema kasutada artikli kolmanda osa lõpus pakutud võlgade tagasimaksmise tõenäosuse hindamiseks mudelit.
Aga kui meil on vaja maksimeerida proovide tõenäosuse funktsiooni, siis miks mitte kasutada mõnda algoritmi, mis määrab tõenäosused Vasja, Fedja ja Ljoša jaoks näiteks 0.99, 0.99 ja 0.01. Võib-olla näitab selline algoritm head tulemust treeningproovidel, kuna see toob proovide tõenäosuse väärtuse lähemale.
, aga kõigepealt on sellisel algoritmil tõenäoliselt raskusi üldistamisvõimekusega; teiseks, see algoritm ei ole kindlasti lineaarsel kujul. Kui meetodid üleõppimise vastu (samuti nõrk üldistamisvõime) ilmselgelt ei kuulu artikli plaani, siis vaatame teise punkti lähemalt. Selleks piisab lihtsast küsimusest. Kas laenu tagasimaksmise tõenäosus Vassil ja Fedjal võib olla sama, arvestades meile teadaolevaid tegureid? Tervet mõistust silmas pidades, loomulikult ei saa. Seega tagastab Vassu laenu tagasimaksmiseks igakuiselt oma palgast 2,5%, Fedja aga peaaegu 27,8%. Samuti näeme diagrammil 2 'Klientide klassifitseerimine', et Vassu on liinist, mis jagab klasse, oluliselt kaugemal kui Fedja. Ja lõpuks, me teame, et funktsioon
Vassile ja Fedjale omab erinevaid väärtusi: 4.24 Vassile ja 1.0 Fedjale. Kui Fedja näiteks teeniks korda rohkem või küsiks väiksema laenu, oleks Vassil ja Fedjal laenu tagasimaksmise tõenäosused sarnased. Teiste sõnadega, lineaarsust ei ole võimalik petta. Ja kui me tõepoolest arvutaksime koefitsiendid
, mitte ei võtaks neid lihtsalt seinast, võiksime julgelt väita, et meie väärtused
hindavad parimal viisil laenu tagasimaksmise tõenäosust igale laenuvõtjale, kuid kuna me oleme kokku leppinud, et koefitsientide määramine
on tehtud kõigi reeglite kohaselt, siis jätkame arvestamist — meie koefitsiendid annavad parima hinnangu tõenäosusele 🙂
Kuid me kaldume kõrvale teemale. Selles osas peame aru saama, kuidas määratakse kaaluvektor
, mis on vajalik iga laenuvõtja laenu tagasimaksmise tõenäosuse hindamiseks.
Kokkuvõtteks, millega me koefitsientide otsimisele lähme
:
1. Eeldame, et sõltuvus sihtmuutuja (prognoositav väärtus) ja tulemusele mõjuv tegur — on lineaarne. Seda põhjuse tõttu kasutatakse lineaarse regressiooni funktsioon sarnaseid
, mille joon jaotab objektid (klientid) klassideks
ja
või
(klientideks, kes suudavad laenu tagasi maksta ja kes ei suuda). Meie puhul on võrrand näol
.
2. Kasutame tagasi logit-muutmisfunktsiooni sarnaseid
objekti klassiga kuuluvuse tõenäosuse määramiseks
.
3. Me käsitleme meie treeningu valimit kui üldistatud teostatust Bernoulli skeemid, see tähendab, et iga objekti jaoks genereeritakse juhuslik suurus, mis tõenäosusega
(igaühe jaoks erinev objekt) võtab väärtuse 1 ja tõenäosusega
– 0.
4. Me teame, et peame maksimeerima proovide tõenäosuse funktsiooni arvesse võetud tegurite osas, et olemasolev vaatlus oleks kõige usutavam. Teisisõnu, peame leidma sellised parameetrid, mille puhul vaatlus oleks kõige usutavam. Meie puhul on sobitatav parameeter - laenu tasumise tõenäosus
, mis omakorda sõltub tundmatutest koefitsientidest
. Seega peame leidma sellise kaalude vektori
, mille puhul vaatlus on maksimaalne.
5. Me teame, et vaatlus tõenäosusfunktsiooni maksimeerimiseks on võimalik kasutada maksimaalse tõenäosuse meetodit. Ja me teame kõiki peeneid nippe, kuidas selle meetodiga töötada.
Nii et selline mitmeastmeline ülesanne saadakse 🙂
Ja nüüd meenutame, et artikli alguses soovisime välja tuua kahte tüüpi kaotusfunktsiooni Logistic Loss sõltuvalt sellest, kuidas klasside objekte tähistatakse. Kaksikklassi klasside nimetamise viisid on innustanud meid nimetama neid
ja
või
. Tähistamisest sõltuvalt antakse välja vastav kaotusfunktsioon.
Juhtum 1. Objektide klassifitseerimine
ja 
Varem, valides tõenäosuse arvutamine, kus laenuvõtja tasumise tõenäosus arvutati tegurite ja eelnevalt määratud koefitsientide põhjal
, kasutasime valemit:

Tegelikult
— see on väärtus logistilise vastuse funktsioonist
antud kaalude vektori korral 
Seega ei ole meil midagi, mis takistaks vaatlus tõenäosuse funktsiooni selliseks kirjutamist:

Mõnikord on algajatel analüütikutel keeruline kohe mõista, kuidas see funktsioon töötab. Vaatame 4 lühikest näidet, mis kõik selgitavad:
1. Kui
(st sõltuvalt koolitusjärgsest vaatlusest kuulub objekt klassi +1), samas kui meie algoritm
määrab objekti kuuluvuse tõenäosuse klassi
võrdseks 0.9, siis see vaatlus tõenäosuse tükk arvutatakse nii:

2. Kui
, vaid
, siis arvutus on selline:

3. Kui
, vaid
, siis arvutus on selline:

4. Kui
, vaid
, siis arvutus on selline:

On ilmne, et tõenäosuse funktsioon maksimeeritakse juhtudel 1 ja 3 või üldiselt juhul — õigesti arvatud objekti kuuluvuse tõenäosuste väärtuste korral
.
Seoses sellega, et objekti klassi kuuluvuse tõenäosuse määramisel
meile ei ole teada ainult koefitsiendid
, siis me otsime neid. Nagu eelnevalt mainitud, on see optimeerimiseülesanne, kus alustada tuleb tõenäosusfunktsiooni tuletise leidmisest kaaluvektorile
. Siiski on mõistlik enne lihtsustada ülesannet: tuletise otsime logaritmist tõenäosuse funktsiooni.

Miks pärast logaritmimist, logistilise vea funktsioonis, me muutisime märki
. Tundub, et
. Kõik on lihtne, kuna mudeli kvaliteedi hindamise ülesannetes on tavaks miinimeerida funktsiooni väärtust, siis me korrutasime väljendi parempoolse osa
ja seega, maksimeerimise asemel, miinimeerime nüüd funktsiooni.
Tegelikult, praegu, teie silme all, on välja arendatud kaotusefunktsioon - Logistic Loss kaks klassi sisaldava treeningvalimi jaoks:
ja
.
Nüüd, koefitsientide leidmiseks, peame lihtsalt leidma tuletise logistilise vea funktsioonis ja seejärel, kasutades numbrilisi optimeerimismeetodeid, nagu gradientne langus või stohhastiline gradientne langus, valima kõige optimaalsemad koefitsiendid
. Kuid arvestades juba suurt artikli mahtu, soovitatakse diferentsieerida iseseisvalt või ehk see on teema järgmiseks artikliks, kus on rohkem aritmeetikat ilma nii detailsete näideteta.
Juhtum 2. Objektide klassifitseerimine
ja 
Lähenemine on sama, mis klasside puhul
ja
, kuid tee kaotusefunktsiooni leidmiseks Logistic Loss, on keerulisem. Alustame. Tõenäosusfunktsioonis kasutame operaatorit „kui…, siis…“. See tähendab, kui
-s objekt kuulub klassi
, siis valimi tõenäosuse arvutamiseks kasutame tõenäosust
, kui objekt kuulub klassi
, siis asendame tõenäosusesse
. Niimoodi välja näeb tõenäosusfunktsioon:

Selgitame, kuidas see töötab. Vaatame 4 juhtumit:
1. Kui
ja
, siis tõenäosuse valimisse „pääseb” 
2. Kui
ja
, siis tõenäosuse valimisse „pääseb” 
3. Kui
ja
, siis tõenäosuse valimisse „pääseb” 
4. Kui
ja
, siis tõenäosuse valimisse „pääseb” 
On ilmne, et 1. ja 3. juhul, kui tõenäosused määrati algoritmi poolt õigesti, tõenäosusfunktsioon saab maksimeeritud, just seda me tahtsime saavutada. Siiski, selline lähenemine on piisavalt mahukas ja seejärel vaatame kompaktsemat vormi. Kuid esmalt logaritmeerime tõenäosusfunktsiooni, muutes märki, kuna nüüd me kavatseme selle miinimeerida.

Asendame
väljendusega
:

Lihtsustame logaritmi paremat liiget, kasutades lihtsaid arvutuste tehnikaid, ja saame:

Nüüd on aeg vabaneda operaatorist „kui…, siis…“. Tähelepanu, et kui objekt
kuulub klassi
, siis logaritmi all oleva väljendi nimetajas
tõstetakse astmesse
, kui objekt kuulub klassi
, siis $e$ tõstetakse astmesse
. Seega saab astme tähistamise lihtsustada — ühendada mõlemad juhtumid üheks:
. Siis logistilise vea funktsioon võtab järgmist vormi:

Vastavalt logaritmeermise reeglitele pöörame murd ümber ja toome miinuse"
" logaritmi ette, saame:

Teie ees on kaotuse funktsioon logistic Loss, mida rakendatakse õpikogumites, milles objektid kuuluvad klassidesse:
ja
.
Noh, ma võtan siinkohal lahkudes ning lõpetame artikli.
Autori eelmine töö — „Viime lineaarse regressiooni võrrandi maatriksi kujule”
Abimaterjalid
1. Kirjandus
1) Rakenduslik regressioonianalüüs / N. Draper, G. Smith – 2. väljaanne – M.: Rahandus ja statistika, 1986 (tõlge inglise keelest)
2) Tõenäosusteooria ja matemaatiline statistika / V.E. Gmurman — 9. väljaanne — M.: Kõrgem kool, 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) Data Science Andmed nullist / Joel Grass — Peterburi: BHV Peterburi, 2017
6) Praktika statistika spetsialistidele Data Science / 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

ja logistilise vastuse funktsiooni 
funktsioone Logistic Loss
:

, siis funktsiooni väärtus
on positiivne väärtus
kuni
. See tähendab, et meie arvestus krediidi tagasimaksmise tõenäosusest on
. Mida suurem on funktsiooni väärtus, seda suurem on tõenäosus.
või
, siis funktsiooni väärtus on negatiivne väärtus
kuni
. Sel juhul arvame, et makseraskuste tõenäosus on
ja, mida suurem on funktsiooni absoluutne väärtus, seda suurem on meie kindel tunne.
võrdne
ja krediidi tagasimaksmise tõenäosus on
.


logistilise regressiooni funktsioonis
ja 
ja 