Logistilise regressiooni närimine

Logistilise regressiooni närimine

Käesolevas artiklis analüüsime teisenduse teoreetilisi arvutusi lineaarse regressiooni funktsioonid в pöördlogiti teisendusfunktsioon (muidu nimetatakse logistilise vastuse funktsiooniks). Seejärel, kasutades arsenali maksimaalse tõenäosuse meetod, tuletame vastavalt logistilise regressiooni mudelile kadufunktsiooni Logistiline kaotusehk teisisõnu defineerime funktsiooni, millega logistilises regressioonimudelis valitakse kaaluvektori parameetrid Logistilise regressiooni närimine.

Artikli ülevaade:

  1. Kordame lineaarset seost kahe muutuja vahel
  2. Teeme kindlaks ümberkujundamise vajaduse lineaarse regressiooni funktsioonid Logistilise regressiooni närimine в logistilise reageerimise funktsioon Logistilise regressiooni närimine
  3. Teeme teisendused ja väljundi logistilise reageerimise funktsioon
  4. Proovime mõista, miks vähimruutude meetod on parameetrite valimisel halb Logistilise regressiooni närimine funktsioonid Logistiline kaotus
  5. Me kasutame maksimaalse tõenäosuse meetod määramiseks parameetrite valiku funktsioonid Logistilise regressiooni närimine:

    5.1. Juhtum 1: funktsioon Logistiline kaotus klassitähistustega objektidele 0 и 1:

    Logistilise regressiooni närimine

    5.2. Juhtum 2: funktsioon Logistiline kaotus klassitähistustega objektidele -1 и +1:

    Logistilise regressiooni närimine


Artikkel on täis lihtsaid näiteid, kus kõiki arvutusi on lihtne teha suuliselt või paberil; mõnel juhul võib vaja minna kalkulaatorit. Nii et olge valmis :)

See artikkel on mõeldud eelkõige andmeteadlastele, kellel on algteadmised masinõppe põhitõdedest.

Artiklist leiate ka koodi graafikute ja arvutuste tegemiseks. Kogu kood on kirjutatud keeles püüton 2.7. Lubage mul eelnevalt selgitada kasutatud versiooni "uudsust" - see on üks tingimusi tuntud kursuse läbimiseks. Yandex sama tuntud veebipõhisel haridusplatvormil Coursera, ja nagu arvata võib, koostati materjal selle kursuse põhjal.

01. Sirgejooneline sõltuvus

Täiesti mõistlik on esitada küsimus – mis seos on sellega lineaarsel sõltuvusel ja logistilisel regressioonil?

See on lihtne! Logistiline regressioon on üks mudeleid, mis kuuluvad lineaarsesse klassifikaatorisse. Lihtsamalt öeldes on lineaarse klassifikaatori ülesanne sihtväärtusi ennustada Logistilise regressiooni närimine muutujatest (regressorid) Logistilise regressiooni närimine. Usutakse, et omaduste vaheline sõltuvus Logistilise regressiooni närimine ja sihtväärtusi Logistilise regressiooni närimine lineaarne. Sellest ka klassifikaatori nimi – lineaarne. Väga jämedalt öeldes põhineb logistilise regressiooni mudel eeldusel, et tunnuste vahel on lineaarne seos. Logistilise regressiooni närimine ja sihtväärtusi Logistilise regressiooni närimine. See on ühendus.

Stuudios on esimene näide ja see räägib õigesti uuritavate suuruste sirgjoonelisest sõltuvusest. Artikli ettevalmistamise käigus puutusin kokku näitega, mis on juba paljusid inimesi segadusse ajanud - voolu sõltuvus pingest ("Rakenduslik regressioonanalüüs", N. Draper, G. Smith). Vaatame seda ka siin.

Kooskõlas Ohmi seadus:

Logistilise regressiooni närimineKus Logistilise regressiooni närimine - voolutugevus, Logistilise regressiooni närimine - Pinge, Logistilise regressiooni närimine - vastupanu.

Kui me ei teaks Ohmi seadus, siis saaksime sõltuvuse leida empiiriliselt muutes Logistilise regressiooni närimine ja mõõtmine Logistilise regressiooni närimine, toetades samal ajal Logistilise regressiooni närimine fikseeritud. Siis näeksime, et sõltuvusgraafik Logistilise regressiooni närimine pärit Logistilise regressiooni närimine annab enam-vähem sirge läbi alguspunkti. Me ütleme "enam-vähem", sest kuigi seos on tegelikult täpne, võivad meie mõõtmised sisaldada väikseid vigu ja seetõttu ei pruugi graafiku punktid täpselt joonele langeda, vaid on selle ümber juhuslikult hajutatud.

Graafik 1 "Sõltuvus" Logistilise regressiooni närimine pärit Logistilise regressiooni närimine»

Logistilise regressiooni närimine

Diagrammi 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 = 'Actual results')
plt.xlabel('I', size = 16)
plt.ylabel('U', size = 16)
plt.legend(prop = {'size': 14})
plt.show()

02. Lineaarse regressiooni võrrandi teisendamise vajadus

Vaatame teist näidet. Kujutagem ette, et töötame pangas ja meie ülesandeks on kindlaks teha laenuvõtja laenu tagasimaksmise tõenäosus sõltuvalt teatud teguritest. Ülesande lihtsustamiseks võtame arvesse ainult kahte tegurit: laenuvõtja kuupalka ja igakuise laenu tagasimakse summat.

Ülesanne on väga tingimuslik, kuid selle näite abil saame aru, miks selle kasutamisest ei piisa lineaarse regressiooni funktsioonidja saate ka teada, milliseid teisendusi tuleb funktsiooniga läbi viia.

Tuleme tagasi näite juurde. On arusaadav, et mida kõrgem on palk, seda rohkem on laenuvõtjal võimalik igakuiselt laenu tagasimaksmiseks eraldada. Samas on teatud palgavahemiku puhul see suhe üsna lineaarne. Näiteks võtame palgavahemiku 60.000 200.000 kuni 3 5.000 RUR ja eeldame, et määratud palgavahemikus on kuumakse suuruse sõltuvus palga suurusest lineaarne. Oletame, et määratud palgavahemiku puhul selgus, et palga ja maksete suhe ei saa langeda alla XNUMX ja laenuvõtjal peab olema veel XNUMX RUR reservis. Ja ainult sel juhul eeldame, et laenuvõtja maksab laenu pangale tagasi. Seejärel on lineaarse regressiooni võrrand järgmine:

Logistilise regressiooni närimine

kus Logistilise regressiooni närimine, Logistilise regressiooni närimine, Logistilise regressiooni närimine, Logistilise regressiooni närimine - palk Logistilise regressiooni närimine- kolmas laenuvõtja, Logistilise regressiooni närimine - laenumakse Logistilise regressiooni närimine-th laenuvõtja.

Palga ja laenumakse asendamine fikseeritud parameetritega võrrandisse Logistilise regressiooni närimine Saate otsustada, kas laenu väljastada või sellest keelduda.

Tulevikku vaadates märgime, et antud parameetritega Logistilise regressiooni närimine lineaarse regressiooni funktsioon, kasutatakse logistilise reageerimise funktsioonid annab suuri väärtusi, mis raskendavad arvutusi laenu tagasimaksmise tõenäosuse määramiseks. Seetõttu tehakse ettepanek vähendada meie koefitsiente näiteks 25.000 XNUMX korda. See koefitsientide ümberkujundamine ei muuda laenu väljastamise otsust. Pidagem seda tulevikku silmas pidades meeles, kuid nüüd, et oleks veelgi selgem, millest me räägime, kaalume olukorda kolme potentsiaalse laenuvõtjaga.

Tabel 1 "Potentsiaalsed laenuvõtjad"

Logistilise regressiooni närimine

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 = {'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']]

Vastavalt tabeli andmetele soovib 120.000 3.000 RUR suuruse palgaga Vasya laenu saada, et saaks selle igakuiselt tagasi maksta 5.000 rubla ulatuses. Tegime kindlaks, et laenu kinnitamiseks peab Vasja palk ületama kolmekordset maksesummat ning alles peab jääma XNUMX RUR. Vasya vastab sellele nõudele: Logistilise regressiooni närimine. Järele jääb isegi 106.000 XNUMX RUR. Vaatamata sellele, et arvutamisel Logistilise regressiooni närimine oleme koefitsiente vähendanud Logistilise regressiooni närimine 25.000 XNUMX korda, tulemus oli sama – laenu saab kinnitada. Fedya saab ka laenu, kuid Lesha peab hoolimata sellest, et ta saab kõige rohkem, oma isusid ohjeldama.

Joonistame selle juhtumi jaoks graafiku.

Joonis 2 “Laenuvõtjate klassifikatsioon”

Logistilise regressiooni närimine

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 = '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()

Niisiis, meie sirgjoon, mis on konstrueeritud vastavalt funktsioonile Logistilise regressiooni närimine, eraldab "halvad" laenuvõtjad "headest". Need laenuvõtjad, kelle soovid ei kattu nende võimalustega, on joonest kõrgemal (Lesha), samas kui need, kes meie mudeli parameetrite järgi suudavad laenu tagasi maksta, on joonest allpool (Vasya ja Fedya). Teisisõnu võime öelda nii: meie otseliin jagab laenuvõtjad kahte klassi. Tähistagem neid järgmiselt: klassi Logistilise regressiooni närimine Klassifitseerime need laenuvõtjad, kes kõige tõenäolisemalt laenu tagasi maksavad Logistilise regressiooni närimine või Logistilise regressiooni närimine Kaasame need laenuvõtjad, kes suure tõenäosusega laenu tagasi maksta ei suuda.

Võtame selle lihtsa näite järeldused kokku. Võtame punkti Logistilise regressiooni närimine ja punkti koordinaatide asendamine sirge vastava võrrandiga Logistilise regressiooni närimine, kaaluge kolme võimalust:

  1. Kui punkt on joone all ja omistame selle klassile Logistilise regressiooni närimine, siis funktsiooni väärtus Logistilise regressiooni närimine on positiivne alates Logistilise regressiooni närimine kuni Logistilise regressiooni närimine. See tähendab, et võime eeldada, et laenu tagasimaksmise tõenäosus on sees Logistilise regressiooni närimine. Mida suurem on funktsiooni väärtus, seda suurem on tõenäosus.
  2. Kui punkt asub sirgest kõrgemal ja omistame selle klassile Logistilise regressiooni närimine või Logistilise regressiooni närimine, siis on funktsiooni väärtus negatiivne alates Logistilise regressiooni närimine kuni Logistilise regressiooni närimine. Siis eeldame, et võla tagasimaksmise tõenäosus on sees Logistilise regressiooni närimine ja mida suurem on funktsiooni absoluutväärtus, seda suurem on meie usaldus.
  3. Punkt asub sirgel, kahe klassi vahelisel piiril. Sel juhul funktsiooni väärtus Logistilise regressiooni närimine saab olema võrdne Logistilise regressiooni närimine ja laenu tagasimaksmise tõenäosus on võrdne Logistilise regressiooni närimine.

Kujutagem nüüd ette, et meil pole mitte kahte tegurit, vaid kümneid ja mitte kolm, vaid tuhandeid laenuvõtjaid. Siis on meil sirge asemel m-mõõtmeline tasapind ja koefitsiendid Logistilise regressiooni närimine meid ei võeta tühjast ilmast, vaid tuletatakse kõigi reeglite järgi ja kogutud andmete alusel laenu tagasimaksnud või mittemaksnud laenuvõtjate kohta. Ja tõepoolest, pange tähele, et me valime nüüd laenuvõtjaid juba teadaolevate koefitsientide abil Logistilise regressiooni närimine. Tegelikult on logistilise regressiooni mudeli ülesanne just parameetrite määramine Logistilise regressiooni närimine, mille juures kaotusfunktsiooni väärtus Logistiline kaotus kipub miinimumini. Aga sellest, kuidas vektorit arvutatakse Logistilise regressiooni närimine, saame rohkem teada artikli 5. jaotisest. Vahepeal pöördume tagasi tõotatud maale – oma pankuri ja tema kolme kliendi juurde.

Tänu funktsioonile Logistilise regressiooni närimine me teame, kellele saab laenu anda ja kellele tuleb keelduda. Kuid te ei saa sellise teabega direktori juurde minna, sest nad tahtsid meilt saada iga laenuvõtja laenu tagasimaksmise tõenäosust. Mida teha? Vastus on lihtne – me peame funktsiooni kuidagi ümber muutma Logistilise regressiooni närimine, mille väärtused jäävad vahemikku Logistilise regressiooni närimine funktsioonile, mille väärtused jäävad vahemikku Logistilise regressiooni närimine. Ja selline funktsioon on olemas, seda nimetatakse logistilise vastuse funktsioon või logiti pöördteisendus. Tutvuge:

Logistilise regressiooni närimine

Vaatame samm-sammult, kuidas see toimib logistilise reageerimise funktsioon. Pange tähele, et me kõnnime vastupidises suunas, st. eeldame, et teame tõenäosuse väärtust, mis asub vahemikus alates Logistilise regressiooni närimine kuni Logistilise regressiooni närimine ja siis "keerame" selle väärtuse lahti kogu arvude vahemikust Logistilise regressiooni närimine kuni Logistilise regressiooni närimine.

03. Tuletame logistilise vastuse funktsiooni

1. samm. Teisendage tõenäosusväärtused vahemikku Logistilise regressiooni närimine

Funktsiooni ümberkujundamise ajal Logistilise regressiooni närimine в logistilise reageerimise funktsioon Logistilise regressiooni närimine Jätame oma krediidianalüütiku rahule ja teeme selle asemel ringkäigu kihlveokontorites. Ei, muidugi, me ei tee panuseid, kõik, mis meid seal huvitab, on väljendi tähendus, näiteks võimalus on 4:1. Koefitsiendid, mis on kõigile panustajatele tuttavad, on „edu“ ja „edu“ suhe. ebaõnnestumised”. Tõenäosuse mõistes on koefitsient sündmuse toimumise tõenäosus jagatud sündmuse mittetoimumise tõenäosusega. Kirjutame üles sündmuse toimumise võimaluse valem Logistilise regressiooni närimine:

Logistilise regressiooni närimine

Kus Logistilise regressiooni närimine - sündmuse toimumise tõenäosus, Logistilise regressiooni närimine — sündmuse EI toimumise tõenäosus

Näiteks kui tõenäosus, et noor, tugev ja mänguhimuline hobune hüüdnimega “Veterok” võidab võidusõidul vana ja lõtv vana naise nimega “Matilda”, on võrdne Logistilise regressiooni närimine, siis on Veteroki eduvõimalused Logistilise regressiooni närimine к Logistilise regressiooni närimine Logistilise regressiooni närimine ja vastupidi, teades koefitsiente, ei ole meil raske tõenäosust arvutada Logistilise regressiooni närimine:

Logistilise regressiooni närimine

Seega oleme õppinud tõenäosust "tõlkima" võimalusteks, millest lähtuvad väärtused Logistilise regressiooni närimine kuni Logistilise regressiooni närimine. Astume veel ühe sammu ja õpime tõenäosust “tõlkima” tervele arvureale alates Logistilise regressiooni närimine kuni Logistilise regressiooni närimine.

2. samm. Teisendage tõenäosusväärtused vahemikku Logistilise regressiooni närimine

See samm on väga lihtne – võtame koefitsientide logaritmi Euleri arvu alusele Logistilise regressiooni närimine ja saame:

Logistilise regressiooni närimine

Nüüd teame, et kui Logistilise regressiooni närimine, seejärel arvutage väärtus Logistilise regressiooni närimine on väga lihtne ja pealegi peaks see olema positiivne: Logistilise regressiooni närimine. See on tõsi.

Uudishimust uurime, mis siis, kui Logistilise regressiooni närimine, siis eeldame negatiivset väärtust Logistilise regressiooni närimine. Kontrollime: Logistilise regressiooni närimine. See on õige.

Nüüd teame, kuidas teisendada tõenäosusväärtust Logistilise regressiooni närimine kuni Logistilise regressiooni närimine piki kogu arvurida alates Logistilise regressiooni närimine kuni Logistilise regressiooni närimine. Järgmises etapis teeme vastupidist.

Praeguseks märgime, et vastavalt logaritmi reeglitele, teades funktsiooni väärtust Logistilise regressiooni närimine, saate arvutada koefitsiendid:

Logistilise regressiooni närimine

See koefitsientide määramise meetod on meile kasulik järgmises etapis.

3. etapp. Tuletame määramiseks valemi Logistilise regressiooni närimine

Nii et me õppisime, teades Logistilise regressiooni närimine, leidke funktsiooni väärtused Logistilise regressiooni närimine. Kuid tegelikult vajame täpselt vastupidist – väärtuse tundmist Logistilise regressiooni närimine leidma Logistilise regressiooni närimine. Selleks pöördume sellise kontseptsiooni nagu pöördkoefitsientide funktsioon, mille kohaselt:

Logistilise regressiooni närimine

Artiklis me ülaltoodud valemit ei tuleta, vaid kontrollime seda ülaltoodud näite numbrite abil. Teame, et koefitsiendiga 4:1 (Logistilise regressiooni närimine), on sündmuse toimumise tõenäosus 0.8 (Logistilise regressiooni närimine). Teeme asendused: Logistilise regressiooni närimine. See langeb kokku meie varem tehtud arvutustega. Liigume edasi.

Viimases etapis järeldasime selle Logistilise regressiooni närimine, mis tähendab, et saate pöördkoefitsientide funktsioonis asendada. Saame:

Logistilise regressiooni närimine

Jagage nii lugeja kui ka nimetaja arvuga Logistilise regressiooni närimine, Siis:

Logistilise regressiooni närimine

Igaks juhuks, veendumaks, et me pole kuskil eksinud, teeme veel ühe väikese kontrolli. 2. sammus me jaoks Logistilise regressiooni närimine määras selle Logistilise regressiooni närimine. Seejärel asendage väärtus Logistilise regressiooni närimine logistilise reageerimise funktsiooni, loodame saada Logistilise regressiooni närimine. Asendame ja saame: Logistilise regressiooni närimine

Õnnitleme, kallis lugeja, just tuletasime ja testisime logistilise reageerimise funktsiooni. Vaatame funktsiooni graafikut.

Graafik 3 "Logistilise reageerimise funktsioon"

Logistilise regressiooni närimine

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()

Kirjandusest leiate ka selle funktsiooni nimetuse as sigmoidne funktsioon. Graafik näitab selgelt, et põhiline muutus klassi kuulumise tõenäosuses toimub suhteliselt väikeses vahemikus Logistilise regressiooni närimine, kuskilt Logistilise regressiooni närimine kuni Logistilise regressiooni närimine.

Soovitan pöörduda tagasi meie krediidianalüütiku juurde ja aidata tal välja arvutada laenu tagasimaksmise tõenäosus, vastasel juhul on oht jääda ilma boonusest :)

Tabel 2 "Potentsiaalsed laenuvõtjad"

Logistilise regressiooni närimine

Kood tabeli genereerimiseks

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']]

Seega oleme määranud laenu tagasimaksmise tõenäosuse. Üldiselt tundub see tõsi olevat.

Tõepoolest, tõenäosus, et 120.000 3.000 RUR suuruse palgaga Vasya suudab iga kuu pangale 100 rubla anda, on peaaegu 0.3%. Muide, peame mõistma, et pank võib Leshale laenu väljastada, kui panga poliitika näeb ette näiteks laenu andmist klientidele, mille laenu tagasimaksmise tõenäosus on suurem kui näiteks XNUMX. Asi on selles, et sel juhul loob pank suurema reservi võimalike kahjude jaoks.

Samuti tuleb märkida, et laest võeti palga ja väljamaksete suhe vähemalt 3 ja marginaaliga 5.000 RUR. Seetõttu ei saanud me kasutada kaalude vektorit selle algsel kujul Logistilise regressiooni närimine. Meil oli vaja koefitsiente kõvasti vähendada ja sel juhul jagasime iga koefitsiendi 25.000 XNUMX-ga ehk sisuliselt korrigeerisime tulemust. Kuid seda tehti spetsiaalselt selleks, et lihtsustada materjali mõistmist algetapis. Elus ei pea me koefitsiente välja mõtlema ja kohandama, vaid need leidma. Artikli järgmistes osades tuletame võrrandid, millega parameetrid valitakse Logistilise regressiooni närimine.

04. Vähimruutude meetod kaalude vektori määramiseks Logistilise regressiooni närimine logistilise reageerimise funktsioonis

Me juba teame seda kaaluvektori valimise meetodit Logistilise regressiooni näriminekui vähimruutude meetod (LSM) ja tegelikult, miks me ei kasuta seda binaarse klassifikatsiooni ülesannetes? Tõepoolest, miski ei takista teid kasutamast MNC, annab ainult see meetod klassifitseerimisprobleemides tulemusi, mis on vähem täpsed kui Logistiline kaotus. Sellel on teoreetiline alus. Vaatame kõigepealt ühte lihtsat näidet.

Oletame, et meie mudelid (kasutades MSE и Logistiline kaotus) on juba alustanud kaaluvektori valimist Logistilise regressiooni närimine ja me lõpetasime arvutamise mingil etapil. Pole vahet, kas keskel, lõpus või alguses, peaasi, et meil on juba mõned kaaluvektori väärtused ja oletame, et selles etapis on kaalude vektor Logistilise regressiooni närimine mõlema mudeli puhul pole erinevusi. Seejärel võtke saadud raskused ja asendage need logistilise reageerimise funktsioon (Logistilise regressiooni närimine) mõne objekti puhul, mis kuulub klassi Logistilise regressiooni närimine. Uurime kahte juhtumit, kui vastavalt valitud kaaluvektorile on meie mudel väga ekslik ja vastupidi - mudel on väga kindel, et objekt kuulub klassi Logistilise regressiooni närimine. Vaatame, millised trahvid kasutamisel väljastatakse MNC и Logistiline kaotus.

Kood trahvide arvutamiseks sõltuvalt kasutatavast kahjufunktsioonist

# класс объекта
y = 1
# вероятность отнесения объекта к классу в соответствии с параметрами w
proba_1 = 0.01

MSE_1 = (y - proba_1)**2
print 'Штраф MSE при грубой ошибке =', MSE_1

# напишем функцию для вычисления f(w,x) при известной вероятности отнесения объекта к классу +1 (f(w,x)=ln(odds+))
def f_w_x(proba):
    return math.log(proba/(1-proba)) 

LogLoss_1 = math.log(1+math.exp(-y*f_w_x(proba_1)))
print 'Штраф Log Loss при грубой ошибке =', LogLoss_1

proba_2 = 0.99

MSE_2 = (y - proba_2)**2
LogLoss_2 = math.log(1+math.exp(-y*f_w_x(proba_2)))

print '**************************************************************'
print 'Штраф MSE при сильной уверенности =', MSE_2
print 'Штраф Log Loss при сильной уверенности =', LogLoss_2

Juhtum eksimisest — mudel määrab klassile objekti Logistilise regressiooni närimine tõenäosusega 0,01

Karistus kasutamise eest MNC saab:
Logistilise regressiooni närimine

Karistus kasutamise eest Logistiline kaotus saab:
Logistilise regressiooni närimine

Tugeva enesekindluse juhtum — mudel määrab klassile objekti Logistilise regressiooni närimine tõenäosusega 0,99

Karistus kasutamise eest MNC saab:
Logistilise regressiooni närimine

Karistus kasutamise eest Logistiline kaotus saab:
Logistilise regressiooni närimine

See näide illustreerib hästi, et jämevea korral on kahjufunktsioon Logikadu karistab mudelit oluliselt rohkem kui MSE. Saame nüüd aru, mis on kadufunktsiooni kasutamise teoreetiline taust Logikadu klassifikatsiooniprobleemides.

05. Maksimaalse tõenäosuse meetod ja logistiline regressioon

Nagu alguses lubatud, on artikkel täis lihtsaid näiteid. Stuudios on veel üks näide ja vanad külalised - pangalaenuvõtjad: Vasya, Fedya ja Lesha.

Enne näite väljatöötamist tuletan igaks juhuks meelde, et elus on meil tegemist tuhandetest või miljonitest kümnete või sadade funktsioonidega objektidest koosneva õppenäidisega. Siin on aga numbrid võetud selleks, et need algajale andmeteadlasele kergesti pähe ära mahuksid.

Tuleme tagasi näite juurde. Kujutagem ette, et panga direktor otsustas kõigile abivajajatele laenu väljastada, hoolimata asjaolust, et algoritm käskis tal seda Leshale mitte väljastada. Ja nüüd on juba piisavalt aega möödas ja me teame, kes kolmest kangelasest maksis laenu tagasi ja kes mitte. Mida oli oodata: Vasya ja Fedja maksid laenu tagasi, Lesha aga mitte. Kujutagem nüüd ette, et see tulemus on meie jaoks uus koolitusnäidis ja samas on justkui kadunud kõik andmed laenu tagasimaksmise tõenäosust mõjutavate tegurite kohta (laenusaaja palk, kuumakse suurus). Siis võime intuitiivselt eeldada, et iga kolmas laenuvõtja ei maksa pangale laenu ehk teisisõnu tõenäosus, et järgmine laenuvõtja maksab laenu tagasi. Logistilise regressiooni närimine. Sellel intuitiivsel eeldusel on teoreetiline kinnitus ja see põhineb maksimaalse tõenäosuse meetod, sageli kirjanduses nimetatakse seda maksimaalse tõenäosuse põhimõte.

Kõigepealt tutvume kontseptuaalse aparaadiga.

Valimi võtmise tõenäosus on tõenäosus saada täpselt selline valim, saada täpselt sellised vaatlused/tulemused, s.t. iga näidistulemuse saamise tõenäosuse korrutis (näiteks kas Vasya, Fedja ja Lesha laen maksti tagasi või ei makstud samal ajal tagasi).

Tõenäolisuse funktsioon seob valimi tõenäosuse jaotusparameetrite väärtustega.

Meie puhul on treeningvalimiks üldistatud Bernoulli skeem, milles juhuslik muutuja võtab ainult kaks väärtust: Logistilise regressiooni närimine või Logistilise regressiooni närimine. Seetõttu saab valimi tõenäosuse kirjutada parameetri tõenäosusfunktsioonina Logistilise regressiooni närimine järgmiselt:

Logistilise regressiooni närimine
Logistilise regressiooni närimine

Ülaltoodud kirjet saab tõlgendada järgmiselt. Ühine tõenäosus, et Vasya ja Fedja maksavad laenu tagasi, on võrdne Logistilise regressiooni närimine, on tõenäosus, et Lesha EI maksa laenu tagasi, võrdne Logistilise regressiooni närimine (kuna tegemist EI olnud laenu tagasimaksmisega), siis on kõigi kolme sündmuse ühine tõenäosus võrdne Logistilise regressiooni närimine.

Maksimaalse tõenäosuse meetod on meetod tundmatu parameetri hindamiseks maksimeerimise teel tõenäosusfunktsioonid. Meie puhul peame sellise väärtuse leidma Logistilise regressiooni näriminekus Logistilise regressiooni närimine saavutab maksimumi.

Kust tuleb tegelik idee – otsida tundmatu parameetri väärtust, mille juures tõenäosusfunktsioon saavutab maksimumi? Idee päritolu tuleneb ideest, et valim on ainus meile kättesaadavate teadmiste allikas elanikkonna kohta. Valimis on esindatud kõik, mida me üldkogumi kohta teame. Seetõttu võime vaid öelda, et valim peegeldab meile saadaolevat üldkogumit kõige täpsemini. Seetõttu peame leidma parameetri, mille puhul saadaolev valim muutub kõige tõenäolisemaks.

Ilmselgelt on meil tegemist optimeerimisprobleemiga, mille puhul peame leidma funktsiooni äärmuspunkti. Ekstreemumipunkti leidmiseks on vaja arvestada esimest järku tingimust, st võrdsustada funktsiooni tuletis nulliga ja lahendada võrrand soovitud parameetri suhtes. Kuid paljude tegurite korrutise tuletise otsimine võib olla pikk ülesanne, selle vältimiseks on spetsiaalne tehnika - logaritmile üleminek tõenäosusfunktsioonid. Miks on selline üleminek võimalik? Pöörakem tähelepanu asjaolule, et me ei otsi funktsiooni enda ekstreemumitLogistilise regressiooni närimine, ja äärmuspunkt, st tundmatu parameetri väärtus Logistilise regressiooni näriminekus Logistilise regressiooni närimine saavutab maksimumi. Logaritmile üleminekul ekstreemumipunkt ei muutu (kuigi ekstreemum ise erineb), kuna logaritm on monotoonne funktsioon.

Jätkame vastavalt ülaltoodule oma näite arendamist Vasya, Fedya ja Lesha laenudega. Kõigepealt liigume edasi tõenäosusfunktsiooni logaritm:

Logistilise regressiooni närimine

Nüüd saame väljendit hõlpsasti eristada Logistilise regressiooni närimine:

Logistilise regressiooni närimine

Ja lõpuks, kaaluge esimest järku tingimust - võrdsustame funktsiooni tuletise nulliga:

Logistilise regressiooni närimine

Seega meie intuitiivne hinnang laenu tagasimaksmise tõenäosusele Logistilise regressiooni närimine oli teoreetiliselt õigustatud.

Suurepärane, aga mida me peaksime selle teabega nüüd tegema? Kui eeldada, et iga kolmas laenuvõtja ei tagasta raha pangale, siis viimane läheb paratamatult pankrotti. See on õige, kuid ainult laenu tagasimaksmise tõenäosuse hindamisel Logistilise regressiooni närimine Me ei võtnud arvesse laenu tagasimaksmist mõjutavaid tegureid: laenuvõtja töötasu ja kuumakse suurust. Meenutagem, et eelnevalt arvutasime iga kliendi laenu tagasimaksmise tõenäosuse, võttes arvesse samu tegureid. On loogiline, et saime konstantsest võrdsest erinevad tõenäosused Logistilise regressiooni närimine.

Määratleme proovide tõenäosuse:

Kood valimi tõenäosuse 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 'Правдоподобие выборки при константном значении p=2/3:', round(likelihood(y,p_const),3)

print '****************************************************************************************************'

print 'Правдоподобие выборки при расчетном значении p:', round(likelihood(y,p_log_response),3)

Valimi tõenäosus konstantsel väärtusel Logistilise regressiooni närimine:

Logistilise regressiooni närimine

Näidistõenäosus laenu tagasimaksmise tõenäosuse arvutamisel, võttes arvesse tegureid Logistilise regressiooni närimine:

Logistilise regressiooni närimine
Logistilise regressiooni närimine

Teguritest sõltuvalt arvutatud tõenäosusega valimi tõenäosus osutus suuremaks kui konstantse tõenäosuse väärtusega tõenäosus. Mida see tähendab? See viitab sellele, et teadmine teguritest võimaldas täpsemalt valida iga kliendi laenu tagasimaksmise tõenäosust. Seetõttu oleks järgmise laenu väljastamisel õigem kasutada võla tagasimaksmise tõenäosuse hindamiseks artikli punkti 3 lõpus pakutud mudelit.

Aga siis, kui tahame maksimeerida tõenäosusfunktsiooni näidis, siis miks mitte kasutada mõnda algoritmi, mis loob näiteks Vasya, Fedya ja Lesha tõenäosused vastavalt 0.99, 0.99 ja 0.01. Võib-olla toimib selline algoritm koolitusvalimis hästi, kuna see lähendab valimi tõenäosuse väärtuse Logistilise regressiooni närimine, kuid esiteks on sellisel algoritmil suure tõenäosusega raskusi üldistusvõimega ja teiseks ei ole see algoritm kindlasti lineaarne. Ja kui ületreeningu (sama nõrk üldistusvõime) vastu võitlemise meetodid selle artikli plaanis selgelt ei sisaldu, siis käsitleme teist punkti üksikasjalikumalt. Selleks vastake lihtsalt lihtsale küsimusele. Kas meile teadaolevaid tegureid arvestades võib Vasya ja Fedja laenu tagasimaksmise tõenäosus olla sama? Heliloogika seisukohalt muidugi mitte, ei saa. Seega maksab Vasya laenu tagasimaksmiseks 2.5% oma palgast kuus ja Fedya - peaaegu 27,8%. Ka graafikul 2 “Klientide klassifikatsioon” näeme, et Vasya on klasse eraldavast joonest palju kaugemal kui Fedja. Ja lõpuks, me teame, et funktsioon Logistilise regressiooni närimine Vasya ja Fedya jaoks on erinevad väärtused: Vasya jaoks 4.24 ja Fedja jaoks 1.0. Kui nüüd näiteks Fedja teeniks suurusjärgu võrra rohkem või küsiks väiksemat laenu, siis oleks Vasja ja Fedja laenu tagasimaksmise tõenäosus sarnane. Teisisõnu, lineaarset sõltuvust ei saa petta. Ja kui me tegelikult koefitsiendid välja arvutasime Logistilise regressiooni närimine, ja ei võtnud neid tühjaks, võiks julgelt öelda, et meie väärtused Logistilise regressiooni närimine kõige paremini võimaldab meil hinnata laenu tagasimaksmise tõenäosust iga laenuvõtja poolt, kuid kuna nõustusime eeldama, et koefitsientide määramine Logistilise regressiooni närimine viidi läbi kõigi reeglite järgi, siis eeldame nii - meie koefitsiendid võimaldavad tõenäosust paremini hinnata :)

Siiski kaldume kõrvale. Selles jaotises peame mõistma, kuidas kaalude vektorit määratakse Logistilise regressiooni närimine, mis on vajalik iga laenuvõtja laenu tagasimaksmise tõenäosuse hindamiseks.

Teeme lühidalt kokkuvõtte, millise arsenaliga koefitsiente otsime Logistilise regressiooni närimine:

1. Eeldame, et sihtmuutuja (ennustusväärtuse) ja tulemust mõjutava teguri vaheline seos on lineaarne. Sel põhjusel kasutatakse seda lineaarse regressiooni funktsioon omamoodi Logistilise regressiooni närimine, mille rida jagab objektid (kliendid) klassideks Logistilise regressiooni närimine и Logistilise regressiooni närimine või Logistilise regressiooni närimine (kliendid, kes on võimelised laenu tagasi maksma ja need, kes ei suuda). Meie puhul on võrrandil vorm Logistilise regressiooni närimine.

2. Me kasutame logiti pöördfunktsioon omamoodi Logistilise regressiooni närimine klassi kuulumise tõenäosuse määramiseks Logistilise regressiooni närimine.

3. Peame oma koolituskomplekti üldistatud teostuseks Bernoulli skeemidst iga objekti jaoks genereeritakse juhuslik muutuja, mis tõenäosusega Logistilise regressiooni närimine (iga objekti jaoks oma) võtab väärtuse 1 ja tõenäosusega Logistilise regressiooni närimine - 0.

4. Me teame, mida me peame maksimeerima tõenäosusfunktsiooni näidis võttes arvesse aktsepteeritud tegureid, et saadaolev valim muutuks kõige usutavamaks. Teisisõnu peame valima parameetrid, mille puhul valim on kõige usutavam. Meie puhul on valitud parameeter laenu tagasimaksmise tõenäosus Logistilise regressiooni närimine, mis omakorda sõltub tundmatutest koefitsientidest Logistilise regressiooni närimine. Seega peame leidma sellise kaalude vektori Logistilise regressiooni närimine, mille puhul valimi tõenäosus on maksimaalne.

5. Teame, mida maksimeerida tõenäosusfunktsioonide näidised saate seda kasutada maksimaalse tõenäosuse meetod. Ja me teame kõiki selle meetodiga töötamise keerulisi nippe.

Nii saabki see mitmeastmeline käik :)

Pidage meeles, et artikli alguses tahtsime tuletada kahte tüüpi kahjufunktsioone Logistiline kaotus olenevalt sellest, kuidas objektiklassid on määratud. Juhtus nii, et kahe klassiga klassifikatsiooniülesannetes tähistatakse klasse kui Logistilise regressiooni närimine и Logistilise regressiooni närimine või Logistilise regressiooni närimine. Olenevalt tähistusest on väljundil vastav kadufunktsioon.

Juhtum 1. Objektide liigitamine Logistilise regressiooni närimine и Logistilise regressiooni närimine

Varem valimi tõenäosuse määramisel arvutati laenuvõtja võla tagasimaksmise tõenäosus tegurite ja antud koefitsientide alusel. Logistilise regressiooni närimine, rakendasime valemit:

Logistilise regressiooni närimine

Tegelikult Logistilise regressiooni närimine on tähendus logistilise reageerimise funktsioonid Logistilise regressiooni närimine antud kaaluvektori jaoks Logistilise regressiooni närimine

Siis ei takista miski meil näidis tõenäosusfunktsiooni järgmiselt kirjutamast:

Logistilise regressiooni närimine

Juhtub, et mõnikord on mõnel algajal analüütikul raske selle funktsiooni toimimisest kohe aru saada. Vaatame 4 lühikest näidet, mis selgitavad asju:

1. kui Logistilise regressiooni närimine (st koolitusnäidise järgi kuulub objekt klassi +1) ja meie algoritm Logistilise regressiooni närimine määrab objekti klassi klassifitseerimise tõenäosuse Logistilise regressiooni närimine võrdne 0.9, siis arvutatakse see valimi tõenäosus järgmiselt:

Logistilise regressiooni närimine

2. kui Logistilise regressiooni närimineJa Logistilise regressiooni närimine, siis on arvutus järgmine:

Logistilise regressiooni närimine

3. kui Logistilise regressiooni närimineJa Logistilise regressiooni närimine, siis on arvutus järgmine:

Logistilise regressiooni närimine

4. kui Logistilise regressiooni närimineJa Logistilise regressiooni närimine, siis on arvutus järgmine:

Logistilise regressiooni närimine

On ilmne, et tõenäosusfunktsioon maksimeeritakse juhtudel 1 ja 3 või üldjuhul - objekti klassi määramise tõenäosuse õigesti äraarvatud väärtustega Logistilise regressiooni närimine.

Tulenevalt sellest, et objekti klassi määramise tõenäosuse määramisel Logistilise regressiooni närimine Me ei tea ainult koefitsiente Logistilise regressiooni närimine, siis otsime need üles. Nagu eespool mainitud, on see optimeerimisülesanne, mille puhul peame esmalt leidma tõenäosusfunktsiooni tuletise kaalude vektori suhtes Logistilise regressiooni närimine. Esmalt on aga mõttekas ülesannet enda jaoks lihtsustada: otsime logaritmi tuletist tõenäosusfunktsioonid.

Logistilise regressiooni närimine

Miks pärast logaritmi, sisse logistilised veafunktsioonid, muutsime märgi alates Logistilise regressiooni närimine edasi Logistilise regressiooni närimine. Kõik on lihtne, kuna mudeli kvaliteedi hindamise ülesannetes on tavaks funktsiooni väärtust minimeerida, korrutasime avaldise parema poole Logistilise regressiooni närimine ja vastavalt sellele, maksimeerimise asemel, nüüd minimeerime funktsiooni.

Tegelikult, just praegu, teie silme all, tuletati kaotusfunktsioon hoolikalt - Logistiline kaotus kahe klassiga treeningkomplekti jaoks: Logistilise regressiooni närimine и Logistilise regressiooni närimine.

Nüüd, koefitsientide leidmiseks peame lihtsalt leidma tuletise logistilised veafunktsioonid ja seejärel, kasutades arvulisi optimeerimismeetodeid, nagu gradiendi laskumine või stohhastiline gradiendi laskumine, valige kõige optimaalsemad koefitsiendid Logistilise regressiooni närimine. Kuid artikli märkimisväärset mahtu arvestades tehakse ettepanek diferentseerimine ise läbi viia või võib-olla on see järgmise artikli teema, kus on palju aritmeetikat ilma selliste üksikasjalike näideteta.

Juhtum 2. Objektide liigitamine Logistilise regressiooni närimine и Logistilise regressiooni närimine

Siin on lähenemisviis sama, mis klasside puhul Logistilise regressiooni närimine и Logistilise regressiooni närimine, vaid tee ise kadufunktsiooni väljundisse Logistiline kaotus, saab olema uhkem. Alustame. Tõenäosuse funktsiooni jaoks kasutame operaatorit "kui siis..."... See tähendab, et kui Logistilise regressiooni närimineth objekt kuulub klassi Logistilise regressiooni närimine, siis valimi tõenäosuse arvutamiseks kasutame tõenäosust Logistilise regressiooni närimine, kui objekt kuulub klassi Logistilise regressiooni närimine, siis asendame tõenäosusega Logistilise regressiooni närimine. Nii näeb tõenäosusfunktsioon välja:

Logistilise regressiooni närimine

Kirjeldagem sõrmedel, kuidas see toimib. Vaatleme 4 juhtumit:

1. kui Logistilise regressiooni närimine и Logistilise regressiooni närimine, siis valimi võtmise tõenäosus "läheb" Logistilise regressiooni närimine

2. kui Logistilise regressiooni närimine и Logistilise regressiooni närimine, siis valimi võtmise tõenäosus "läheb" Logistilise regressiooni närimine

3. kui Logistilise regressiooni närimine и Logistilise regressiooni närimine, siis valimi võtmise tõenäosus "läheb" Logistilise regressiooni närimine

4. kui Logistilise regressiooni närimine и Logistilise regressiooni närimine, siis valimi võtmise tõenäosus "läheb" Logistilise regressiooni närimine

On ilmne, et juhtudel 1 ja 3, kui tõenäosused olid algoritmiga õigesti määratud, tõenäosusfunktsioon maksimeeritakse, see tähendab, et see on täpselt see, mida me tahtsime saada. See lähenemisviis on aga üsna tülikas ja järgmisena kaalume kompaktsemat tähistust. Kuid kõigepealt logaritme tõenäosusfunktsiooni märgi muutusega, kuna nüüd minimeerime selle.

Logistilise regressiooni närimine

Asendame hoopis Logistilise regressiooni närimine väljend Logistilise regressiooni närimine:

Logistilise regressiooni närimine

Lihtsustame õiget terminit logaritmi all lihtsate aritmeetikatehnikate abil ja saame:

Logistilise regressiooni närimine

Nüüd on aeg operaatorist lahti saada "kui siis...". Pange tähele, et kui objekt Logistilise regressiooni närimine kuulub klassi Logistilise regressiooni närimine, siis avaldises logaritmi all, nimetajas, Logistilise regressiooni närimine võimule tõstetud Logistilise regressiooni närimine, kui objekt kuulub klassi Logistilise regressiooni närimine, siis tõstetakse $e$ astmeni Logistilise regressiooni närimine. Seetõttu saab kraadi märkimist lihtsustada, ühendades mõlemad juhtumid üheks: Logistilise regressiooni närimine. Siis logistilise vea funktsioon toimub järgmisel kujul:

Logistilise regressiooni närimine

Vastavalt logaritmi reeglitele pöörame murdosa ümber ja paneme välja märgi "Logistilise regressiooni närimine" (miinus) logaritmi jaoks saame:

Logistilise regressiooni närimine

Siin on kaotusfunktsioon logistiline kaotus, mida kasutatakse treeningkomplektis klassidele määratud objektidega: Logistilise regressiooni närimine и Logistilise regressiooni närimine.

Noh, siinkohal võtan puhkuse ja lõpetame artikli.

Logistilise regressiooni närimine Autori eelmine töö on "Lineaarse regressioonivõrrandi toomine maatriksi kujule"

Abimaterjalid

1. Kirjandus

1) Rakenduslik regressioonanalüü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õrgkool, 2003

3) Tõenäosusteooria / N.I. Tšernova - Novosibirsk: Novosibirski Riiklik Ülikool, 2007

4) Ärianalüütika: andmetest teadmisteni / Paklin N. B., Oreshkov V. I. - 2nd ed. — Peterburi: Peeter, 2013

5) Andmeteadus Andmeteadus nullist / Joel Gras - St. Petersburg: BHV Petersburg, 2017

6) Praktiline statistika andmeteaduse spetsialistidele / P. Bruce, E. Bruce - St. Petersburg: BHV Petersburg, 2018

2. Loengud, kursused (video)

1) Maksimaalse tõenäosuse meetodi olemus, Boriss Demešev

2) Maksimaalse tõenäosuse meetod pideval juhul, Boriss Demešev

3) Logistiline regressioon. Avatud ODS-kursus, Juri Kašnitski

4) 4. loeng, Jevgeni Sokolov (47 minuti pikkusest videost)

5) Logistiline regressioon, Vjatšeslav Vorontsov

3. Interneti-allikad

1) Lineaarsed klassifikatsiooni- ja regressioonimudelid

2) Kuidas logistilist regressiooni hõlpsalt mõista

3) Logistilise vea funktsioon

4) Sõltumatud testid ja Bernoulli valem

5) Ballaad MMP-st

6) Maksimaalse tõenäosuse meetod

7) Logaritmide valemid ja omadused

8) Miks number Logistilise regressiooni närimine?

9) Lineaarne klassifikaator

Allikas: www.habr.com

Lisa kommentaar