Mestecând regresia logistică

Mestecând regresia logistică

În acest articol, vom analiza calculele teoretice ale transformării funcții de regresie liniară в funcția de transformare logit inversă (altfel numită funcție de răspuns logistic). Apoi, folosind arsenalul metoda cu maxima probabilitate, în conformitate cu modelul de regresie logistică, derivăm funcția de pierdere Pierdere logistică, sau cu alte cuvinte, vom defini o funcție cu care parametrii vectorului de greutate sunt selectați în modelul de regresie logistică Mestecând regresia logistică.

Schița articolului:

  1. Să repetăm ​​relația liniară dintre două variabile
  2. Să identificăm nevoia de transformare funcții de regresie liniară Mestecând regresia logistică в funcția de răspuns logistic Mestecând regresia logistică
  3. Să efectuăm transformările și ieșirea funcția de răspuns logistic
  4. Să încercăm să înțelegem de ce metoda celor mai mici pătrate este proastă la selectarea parametrilor Mestecând regresia logistică funcții Pierdere logistică
  5. Folosim metoda cu maxima probabilitate pentru determinare funcții de selecție a parametrilor Mestecând regresia logistică:

    5.1. Cazul 1: funcția Pierdere logistică pentru obiectele cu denumiri de clasă 0 и 1:

    Mestecând regresia logistică

    5.2. Cazul 2: funcția Pierdere logistică pentru obiectele cu denumiri de clasă -1 и +1:

    Mestecând regresia logistică


Articolul este plin cu exemple simple în care toate calculele sunt ușor de făcut oral sau pe hârtie; în unele cazuri, poate fi necesar un calculator. Așa că pregătește-te :)

Acest articol este destinat în principal oamenilor de știință ai datelor cu un nivel inițial de cunoștințe în elementele de bază ale învățării automate.

Articolul va oferi, de asemenea, cod pentru desenarea graficelor și calculelor. Tot codul este scris în limba piton 2.7. Permiteți-mi să explic în prealabil „noutatea” versiunii utilizate - aceasta este una dintre condițiile pentru a urma cursul binecunoscut de la Yandex pe o platformă de educație online la fel de cunoscută Courserași, după cum s-ar putea presupune, materialul a fost pregătit pe baza acestui curs.

01. Dependență de linie dreaptă

Este destul de rezonabil să punem întrebarea - ce legătură are dependența liniară și regresia logistică cu aceasta?

E simplu! Regresia logistică este unul dintre modelele care aparțin clasificatorului liniar. Cu cuvinte simple, sarcina unui clasificator liniar este de a prezice valorile țintă Mestecând regresia logistică din variabile (regressori) Mestecând regresia logistică. Se crede că dependența dintre caracteristici Mestecând regresia logistică și valorile țintă Mestecând regresia logistică liniar. De aici și numele clasificatorului - liniar. Pentru a spune foarte aproximativ, modelul de regresie logistică se bazează pe presupunerea că există o relație liniară între caracteristici Mestecând regresia logistică și valorile țintă Mestecând regresia logistică. Aceasta este conexiunea.

Există primul exemplu în studio și este, în mod corect, despre dependența rectilinie a cantităților studiate. În procesul de pregătire a articolului, am dat peste un exemplu care a pus deja pe mulți oameni pe margine - dependența curentului de tensiune („Analiza de regresie aplicată”, N. Draper, G. Smith). O să ne uităm și aici.

Potrivit Legea lui Ohm:

Mestecând regresia logisticăUnde Mestecând regresia logistică - puterea curentului, Mestecând regresia logistică - Voltaj, Mestecând regresia logistică - rezistenta.

Daca nu am sti Legea lui Ohm, atunci am putea găsi dependența empiric prin schimbare Mestecând regresia logistică și măsurarea Mestecând regresia logistică, în timp ce sprijină Mestecând regresia logistică fix. Apoi am vedea că graficul de dependență Mestecând regresia logistică din Mestecând regresia logistică dă o linie mai mult sau mai puțin dreaptă prin origine. Spunem „mai mult sau mai puțin” deoarece, deși relația este de fapt exactă, măsurătorile noastre pot conține mici erori și, prin urmare, punctele din grafic s-ar putea să nu cadă exact pe linie, ci vor fi împrăștiate în jurul ei în mod aleatoriu.

Graficul 1 „Dependență” Mestecând regresia logistică din Mestecând regresia logistică»

Mestecând regresia logistică

Cod de desen grafic

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. Necesitatea transformării ecuației de regresie liniară

Să ne uităm la un alt exemplu. Să ne imaginăm că lucrăm într-o bancă și sarcina noastră este să stabilim probabilitatea ca debitorul să ramburseze împrumutul în funcție de anumiți factori. Pentru a simplifica sarcina, vom lua în considerare doar doi factori: salariul lunar al împrumutatului și suma lunară de rambursare a împrumutului.

Sarcina este foarte condiționată, dar cu acest exemplu putem înțelege de ce nu este suficient de utilizat funcții de regresie liniară, și, de asemenea, aflați ce transformări trebuie efectuate cu funcția.

Să revenim la exemplu. Se înțelege că cu cât salariul este mai mare, cu atât împrumutatul va putea aloca lunar pentru rambursarea împrumutului. În același timp, pentru un anumit interval de salariu, această relație va fi destul de liniară. De exemplu, să luăm un interval de salariu de la 60.000 RUR la 200.000 RUR și să presupunem că, în intervalul de salariu specificat, dependența mărimii plății lunare de mărimea salariului este liniară. Să presupunem că pentru intervalul specificat de salarii s-a dezvăluit că raportul salariu-plată nu poate scădea sub 3, iar împrumutatul trebuie să aibă în rezervă 5.000 RUR. Și numai în acest caz, vom presupune că împrumutatul va rambursa împrumutul băncii. Apoi, ecuația de regresie liniară va lua forma:

Mestecând regresia logistică

unde Mestecând regresia logistică, Mestecând regresia logistică, Mestecând regresia logistică, Mestecând regresia logistică - salariu Mestecând regresia logistică- al împrumutatului, Mestecând regresia logistică - plata împrumutului Mestecând regresia logistică- al-lea împrumutat.

Înlocuirea salariului și a plății împrumutului cu parametri fixe în ecuație Mestecând regresia logistică Puteți decide dacă acordați sau refuzați un împrumut.

Privind în viitor, observăm că, cu parametrii dați Mestecând regresia logistică funcția de regresie liniară, folosit in funcții de răspuns logistic va produce valori mari care vor complica calculele pentru a determina probabilitățile de rambursare a creditului. Prin urmare, se propune să ne reducem coeficienții, să spunem, de 25.000 de ori. Această transformare a coeficienților nu va schimba decizia de a acorda un împrumut. Să ne amintim acest punct pentru viitor, dar acum, pentru a ne clarifica și mai mult despre ce vorbim, să luăm în considerare situația cu trei potențiali debitori.

Tabelul 1 „Debitori potențiali”

Mestecând regresia logistică

Cod pentru generarea tabelului

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

Conform datelor din tabel, Vasia, cu un salariu de 120.000 RUR, vrea să primească un credit pentru a-l rambursa lunar la 3.000 RUR. Am stabilit că, pentru aprobarea împrumutului, salariul lui Vasya trebuie să depășească de trei ori valoarea plății și trebuie să mai rămână 5.000 de lei. Vasya îndeplinește această cerință: Mestecând regresia logistică. Au mai rămas chiar și 106.000 RUR. În ciuda faptului că la calcul Mestecând regresia logistică am redus șansele Mestecând regresia logistică De 25.000 de ori, rezultatul a fost același - împrumutul poate fi aprobat. Fedya va primi și un împrumut, dar Lesha, în ciuda faptului că primește cel mai mult, va trebui să-și stăpânească poftele.

Să desenăm un grafic pentru acest caz.

Graficul 2 „Clasificarea debitorilor”

Mestecând regresia logistică

Cod pentru desenarea graficului

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

Deci, linia noastră dreaptă, construită în conformitate cu funcția Mestecând regresia logistică, separă debitorii „răi” de cei „buni”. Acei debitori ale căror dorințe nu coincid cu capacitățile lor sunt deasupra liniei (Lesha), în timp ce cei care, conform parametrilor modelului nostru, sunt capabili să ramburseze împrumutul sunt sub linie (Vasya și Fedya). Cu alte cuvinte, putem spune acest lucru: linia noastră directă împarte debitorii în două clase. Să le notăm astfel: la clasă Mestecând regresia logistică Vom clasifica acei debitori care sunt cel mai probabil să ramburseze împrumutul ca Mestecând regresia logistică sau Mestecând regresia logistică Vom include acei debitori care cel mai probabil nu vor putea rambursa împrumutul.

Să rezumam concluziile din acest exemplu simplu. Să luăm un punct Mestecând regresia logistică și, înlocuind coordonatele punctului în ecuația corespunzătoare a dreptei Mestecând regresia logistică, luați în considerare trei opțiuni:

  1. Dacă punctul se află sub linie și îl atribuim clasei Mestecând regresia logistică, apoi valoarea funcției Mestecând regresia logistică va fi pozitiv de la Mestecând regresia logistică la Mestecând regresia logistică. Aceasta înseamnă că putem presupune că probabilitatea de rambursare a împrumutului este în limite Mestecând regresia logistică. Cu cât valoarea funcției este mai mare, cu atât probabilitatea este mai mare.
  2. Dacă punctul este deasupra liniei și îl atribuim clasei Mestecând regresia logistică sau Mestecând regresia logistică, atunci valoarea funcției va fi negativă de la Mestecând regresia logistică la Mestecând regresia logistică. Apoi vom presupune că probabilitatea de rambursare a datoriei este în limita Mestecând regresia logistică și, cu cât valoarea absolută a funcției este mai mare, cu atât este mai mare încrederea noastră.
  3. Punctul se află pe o linie dreaptă, la limita dintre două clase. În acest caz, valoarea funcției Mestecând regresia logistică va fi egal Mestecând regresia logistică iar probabilitatea de rambursare a creditului este egală cu Mestecând regresia logistică.

Acum, să ne imaginăm că nu avem doi factori, ci zeci și nu trei, ci mii de debitori. Atunci în loc de o linie dreaptă vom avea m-dimensional plan și coeficienți Mestecând regresia logistică nu vom fi scoși din aer, ci derivați după toate regulile, și pe baza datelor acumulate despre debitorii care au sau nu au rambursat împrumutul. Și într-adevăr, rețineți că acum selectăm debitori folosind coeficienți deja cunoscuți Mestecând regresia logistică. De fapt, sarcina modelului de regresie logistică este tocmai de a determina parametrii Mestecând regresia logistică, la care valoarea funcției de pierdere Pierdere logistică va tinde la minim. Dar despre cum se calculează vectorul Mestecând regresia logistică, vom afla mai multe în secțiunea a 5-a a articolului. Între timp, ne întoarcem pe pământul promis – la bancherul nostru și cei trei clienți ai săi.

Datorită funcției Mestecând regresia logistică știm cui i se poate acorda un împrumut și cui trebuie refuzat. Dar nu puteți merge la director cu astfel de informații, pentru că au vrut să obțină de la noi probabilitatea rambursării împrumutului de către fiecare împrumutat. Ce să fac? Răspunsul este simplu - trebuie să transformăm cumva funcția Mestecând regresia logistică, ale căror valori se află în interval Mestecând regresia logistică la o funcție ale cărei valori se vor afla în interval Mestecând regresia logistică. Și o astfel de funcție există, se numește funcția de răspuns logistic sau transformarea logit invers. Întâlni:

Mestecând regresia logistică

Să vedem pas cu pas cum funcționează funcția de răspuns logistic. Rețineți că vom merge în direcția opusă, adică. vom presupune că știm valoarea probabilității, care se află în intervalul de la Mestecând regresia logistică la Mestecând regresia logistică și apoi vom „desface” această valoare la întregul interval de numere din Mestecând regresia logistică la Mestecând regresia logistică.

03. Deducem funcția de răspuns logistic

Pasul 1. Convertiți valorile probabilității într-un interval Mestecând regresia logistică

În timpul transformării funcţiei Mestecând regresia logistică в funcția de răspuns logistic Mestecând regresia logistică Îl vom lăsa pe analistul de credit în pace și vom face un tur al caselor de pariuri. Nu, desigur, nu vom plasa pariuri, tot ceea ce ne interesează acolo este sensul expresiei, de exemplu, șansa este 4 la 1. Cotele, familiare tuturor pariorilor, sunt raportul dintre „reușite” și „ eșecuri”. În termeni de probabilitate, cotele sunt probabilitatea ca un eveniment să se producă împărțită la probabilitatea ca evenimentul să nu se producă. Să notăm formula pentru șansa ca un eveniment să se producă Mestecând regresia logistică:

Mestecând regresia logistică

Unde Mestecând regresia logistică - probabilitatea producerii unui eveniment, Mestecând regresia logistică — probabilitatea ca un eveniment să NU se producă

De exemplu, dacă probabilitatea ca un cal tânăr, puternic și jucăuș poreclit „Veterok” să învingă o bătrână și flăcătoare pe nume „Matilda” la o cursă este egală cu Mestecând regresia logistică, atunci șansele de succes pentru „Veterok” vor fi Mestecând regresia logistică к Mestecând regresia logistică Mestecând regresia logistică și invers, cunoscând șansele, nu ne va fi greu să calculăm probabilitatea Mestecând regresia logistică:

Mestecând regresia logistică

Astfel, am învățat să „traducem” probabilitatea în șanse, din care iau valori Mestecând regresia logistică la Mestecând regresia logistică. Să mai facem un pas și să învățăm să „traducem” probabilitatea pe întreaga linie numerică din Mestecând regresia logistică la Mestecând regresia logistică.

Pasul 2. Convertiți valorile probabilității într-un interval Mestecând regresia logistică

Acest pas este foarte simplu - să luăm logaritmul cotelor la baza numărului lui Euler Mestecând regresia logistică și obținem:

Mestecând regresia logistică

Acum știm că dacă Mestecând regresia logistică, apoi calculați valoarea Mestecând regresia logistică va fi foarte simplu și, în plus, ar trebui să fie pozitiv: Mestecând regresia logistică. Asta este adevărat.

De curiozitate, să verificăm ce dacă Mestecând regresia logistică, atunci ne așteptăm să vedem o valoare negativă Mestecând regresia logistică. Verificăm: Mestecând regresia logistică. Asta e corect.

Acum știm cum să convertim valoarea probabilității din Mestecând regresia logistică la Mestecând regresia logistică de-a lungul întregii drepte numerice de la Mestecând regresia logistică la Mestecând regresia logistică. În pasul următor vom face invers.

Deocamdată, observăm că în conformitate cu regulile logaritmului, cunoașterea valorii funcției Mestecând regresia logistică, puteți calcula cotele:

Mestecând regresia logistică

Această metodă de determinare a cotelor ne va fi utilă în pasul următor.

Pasul 3. Să derivăm o formulă pentru a determina Mestecând regresia logistică

Așa că am învățat, știind Mestecând regresia logistică, găsiți valorile funcției Mestecând regresia logistică. Cu toate acestea, de fapt, avem nevoie de exact opusul - cunoașterea valorii Mestecând regresia logistică a găsi Mestecând regresia logistică. Pentru a face acest lucru, să ne întoarcem la un astfel de concept precum funcția de cote inverse, conform căreia:

Mestecând regresia logistică

În articol nu vom deriva formula de mai sus, dar o vom verifica folosind numerele din exemplul de mai sus. Știm că cu cote de 4 la 1 (Mestecând regresia logistică), probabilitatea ca evenimentul să se producă este de 0.8 (Mestecând regresia logistică). Să facem o înlocuire: Mestecând regresia logistică. Acest lucru coincide cu calculele noastre efectuate mai devreme. Sa trecem peste.

În ultimul pas am dedus că Mestecând regresia logistică, ceea ce înseamnă că puteți face o înlocuire în funcția de cote inverse. Primim:

Mestecând regresia logistică

Împărțiți atât numărătorul cât și numitorul cu Mestecând regresia logistică, Apoi:

Mestecând regresia logistică

Pentru orice eventualitate, pentru a ne asigura că nu am greșit nicăieri, vom face încă o mică verificare. La pasul 2, noi pentru Mestecând regresia logistică a determinat că Mestecând regresia logistică. Apoi, înlocuind valoarea Mestecând regresia logistică în funcția de răspuns logistic, ne așteptăm să ajungem Mestecând regresia logistică. Inlocuim si obtinem: Mestecând regresia logistică

Felicitări, dragă cititor, tocmai am derivat și testat funcția de răspuns logistic. Să ne uităm la graficul funcției.

Graficul 3 „Funcția de răspuns logistic”

Mestecând regresia logistică

Cod pentru desenarea graficului

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

În literatură puteți găsi și numele acestei funcții ca funcția sigmoidă. Graficul arată clar că principala modificare a probabilității ca un obiect să aparțină unei clase are loc într-un interval relativ mic. Mestecând regresia logistică, undeva de Mestecând regresia logistică la Mestecând regresia logistică.

Vă sugerez să reveniți la analistul nostru de credit și să-l ajutați să calculeze probabilitatea rambursării creditului, altfel riscă să rămână fără bonus :)

Tabelul 2 „Debitori potențiali”

Mestecând regresia logistică

Cod pentru generarea tabelului

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

Deci, am determinat probabilitatea rambursării creditului. În general, acest lucru pare să fie adevărat.

Într-adevăr, probabilitatea ca Vasya, cu un salariu de 120.000 RUR, să poată oferi băncii 3.000 RUR în fiecare lună este aproape de 100%. Apropo, trebuie să înțelegem că banca poate acorda un împrumut către Lesha dacă politica băncii prevede, de exemplu, acordarea de împrumuturi clienților cu o probabilitate de rambursare a creditului mai mare de, să zicem, 0.3. Doar că în acest caz banca va crea o rezervă mai mare pentru eventuale pierderi.

De remarcat, de asemenea, că din plafon a fost luată raportul salariu-plată de minim 3 și cu o marjă de 5.000 RUR. Prin urmare, nu am putea folosi vectorul greutăților în forma sa originală Mestecând regresia logistică. Trebuia să reducem foarte mult coeficienții, iar în acest caz am împărțit fiecare coeficient la 25.000, adică, în esență, am ajustat rezultatul. Dar acest lucru a fost făcut special pentru a simplifica înțelegerea materialului la etapa inițială. În viață, nu va trebui să inventăm și să ajustam coeficienți, ci să-i găsim. În secțiunile următoare ale articolului vom deriva ecuațiile cu care sunt selectați parametrii Mestecând regresia logistică.

04. Metoda celor mai mici pătrate pentru determinarea vectorului greutăților Mestecând regresia logistică în funcţia de răspuns logistic

Cunoaștem deja această metodă de selectare a unui vector de greutăți Mestecând regresia logisticăca metoda celor mai mici pătrate (LSM) și de fapt, de ce nu îl folosim atunci în probleme de clasificare binară? Într-adevăr, nimic nu vă împiedică să utilizați MNC, numai această metodă în probleme de clasificare dă rezultate mai puțin precise decât Pierdere logistică. Există o bază teoretică pentru aceasta. Să ne uităm mai întâi la un exemplu simplu.

Să presupunem că modelele noastre (folosind MSE и Pierdere logistică) au început deja să selecteze vectorul greutăților Mestecând regresia logistică și am oprit calculul la un pas. Nu contează dacă la mijloc, la sfârșit sau la început, principalul lucru este că avem deja niște valori ale vectorului greutăților și să presupunem că la acest pas, vectorul greutăților Mestecând regresia logistică pentru ambele modele nu exista diferente. Apoi luați greutățile rezultate și înlocuiți-le în funcția de răspuns logistic (Mestecând regresia logistică) pentru un obiect care aparține clasei Mestecând regresia logistică. Examinăm două cazuri în care, în conformitate cu vectorul de greutăți selectat, modelul nostru este foarte greșit și invers - modelul este foarte încrezător că obiectul aparține clasei Mestecând regresia logistică. Să vedem ce amenzi vor fi emise la utilizare MNC и Pierdere logistică.

Cod pentru calcularea penalităților în funcție de funcția de pierdere utilizată

# класс объекта
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

Un caz de gafă — modelul atribuie un obiect unei clase Mestecând regresia logistică cu o probabilitate de 0,01

Penalizare la utilizare MNC va fi:
Mestecând regresia logistică

Penalizare la utilizare Pierdere logistică va fi:
Mestecând regresia logistică

Un caz de încredere puternică — modelul atribuie un obiect unei clase Mestecând regresia logistică cu o probabilitate de 0,99

Penalizare la utilizare MNC va fi:
Mestecând regresia logistică

Penalizare la utilizare Pierdere logistică va fi:
Mestecând regresia logistică

Acest exemplu ilustrează bine că în cazul unei erori grave funcția de pierdere Pierderea jurnalului penalizează modelul semnificativ mai mult decât MSE. Să înțelegem acum care este fundalul teoretic pentru utilizarea funcției de pierdere Pierderea jurnalului în probleme de clasificare.

05. Metoda maximă de probabilitate și regresie logistică

După cum am promis la început, articolul este plin de exemple simple. În studio există un alt exemplu și oaspeți vechi - debitori bancar: Vasya, Fedya și Lesha.

Pentru orice eventualitate, înainte de a dezvolta exemplul, permiteți-mi să vă reamintesc că în viață avem de-a face cu un eșantion de antrenament de mii sau milioane de obiecte cu zeci sau sute de caracteristici. Cu toate acestea, aici numerele sunt luate astfel încât să se încadreze cu ușurință în capul unui cercetător de date începător.

Să revenim la exemplu. Să ne imaginăm că directorul băncii a decis să acorde un împrumut tuturor celor care au nevoie, în ciuda faptului că algoritmul i-a spus să nu-l dea lui Lesha. Și acum a trecut destul timp și știm care dintre cei trei eroi a rambursat împrumutul și care nu. Ce era de așteptat: Vasya și Fedya au rambursat împrumutul, dar Lesha nu. Acum să ne imaginăm că acest rezultat va fi un nou eșantion de formare pentru noi și, în același timp, parcă toate datele privind factorii care influențează probabilitatea rambursării împrumutului (salariul debitorului, mărimea plății lunare) ar fi dispărut. Apoi, intuitiv, putem presupune că fiecare al treilea debitor nu rambursează împrumutul băncii, sau cu alte cuvinte, probabilitatea ca următorul împrumutat să ramburseze împrumutul. Mestecând regresia logistică. Această presupunere intuitivă are confirmare teoretică și se bazează pe metoda cu maxima probabilitate, adesea în literatură se numește principiul maximului probabilitate.

În primul rând, să ne familiarizăm cu aparatul conceptual.

Probabilitatea de eșantionare este probabilitatea de a obține exact un astfel de eșantion, de a obține exact astfel de observații/rezultate, i.e. produsul probabilităților de obținere a fiecăruia dintre rezultatele eșantionului (de exemplu, dacă împrumutul lui Vasya, Fedya și Lesha a fost rambursat sau nu în același timp).

Funcția de probabilitate raportează probabilitatea unui eșantion de valorile parametrilor de distribuție.

În cazul nostru, eșantionul de antrenament este o schemă Bernoulli generalizată, în care variabila aleatoare ia doar două valori: Mestecând regresia logistică sau Mestecând regresia logistică. Prin urmare, probabilitatea eșantionului poate fi scrisă ca o funcție de probabilitate a parametrului Mestecând regresia logistică după cum urmează:

Mestecând regresia logistică
Mestecând regresia logistică

Intrarea de mai sus poate fi interpretată după cum urmează. Probabilitatea comună ca Vasya și Fedya să ramburseze împrumutul este egală cu Mestecând regresia logistică, probabilitatea ca Lesha să NU ramburseze împrumutul este egală cu Mestecând regresia logistică (din moment ce NU a avut loc rambursarea creditului), prin urmare probabilitatea comună a tuturor celor trei evenimente este egală Mestecând regresia logistică.

Metoda maximă de probabilitate este o metodă de estimare a unui parametru necunoscut prin maximizare funcții de probabilitate. În cazul nostru, trebuie să găsim o astfel de valoare Mestecând regresia logisticăla care Mestecând regresia logistică atinge maximul său.

De unde vine ideea reală - de a căuta valoarea unui parametru necunoscut la care funcția de probabilitate atinge un maxim? Originile ideii provin din ideea că un eșantion este singura sursă de cunoștințe pe care o avem la dispoziție despre populație. Tot ceea ce știm despre populație este reprezentat în eșantion. Prin urmare, tot ce putem spune este că un eșantion este cea mai fidelă reflectare a populației pe care o avem la dispoziție. Prin urmare, trebuie să găsim un parametru la care eșantionul disponibil devine cel mai probabil.

Evident, avem de-a face cu o problemă de optimizare în care trebuie să găsim punctul extremum al unei funcții. Pentru a găsi punctul extremum, este necesar să luăm în considerare condiția de ordinul întâi, adică să echivalăm derivata funcției la zero și să rezolvăm ecuația în raport cu parametrul dorit. Cu toate acestea, căutarea unei derivate a unui produs dintr-un număr mare de factori poate fi o sarcină îndelungată; pentru a evita acest lucru, există o tehnică specială - trecerea la logaritm funcții de probabilitate. De ce este posibilă o astfel de tranziție? Să fim atenți la faptul că nu căutăm extremul funcției în sineMestecând regresia logistică, și punctul extremum, adică valoarea parametrului necunoscut Mestecând regresia logisticăla care Mestecând regresia logistică atinge maximul său. Când treceți la un logaritm, punctul extremum nu se schimbă (deși extremul în sine va diferi), deoarece logaritmul este o funcție monotonă.

Să continuăm, în conformitate cu cele de mai sus, să dezvoltăm exemplul nostru cu împrumuturi de la Vasya, Fedya și Lesha. Mai întâi să trecem la logaritmul funcției de probabilitate:

Mestecând regresia logistică

Acum putem diferenția cu ușurință expresia prin Mestecând regresia logistică:

Mestecând regresia logistică

Și, în sfârșit, luăm în considerare condiția de ordinul întâi - echivalăm derivata funcției cu zero:

Mestecând regresia logistică

Astfel, estimarea noastră intuitivă a probabilității de rambursare a creditului Mestecând regresia logistică era teoretic justificată.

Grozav, dar ce ar trebui să facem acum cu aceste informații? Dacă presupunem că fiecare al treilea debitor nu returnează banii băncii, atunci aceasta din urmă va da inevitabil faliment. Așa este, dar numai atunci când se evaluează probabilitatea de rambursare a creditului egală cu Mestecând regresia logistică Nu am luat în considerare factorii care influențează rambursarea împrumutului: salariul debitorului și mărimea plății lunare. Să ne amintim că am calculat anterior probabilitatea de rambursare a creditului de către fiecare client, ținând cont de acești factori. Este logic că am obținut probabilități diferite de constanta egală Mestecând regresia logistică.

Să definim probabilitatea eșantioanelor:

Cod pentru calcularea probabilităților de eșantionare

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)

Probabilitatea eșantionului la o valoare constantă Mestecând regresia logistică:

Mestecând regresia logistică

Probabilitatea eșantionului la calcularea probabilității de rambursare a împrumutului ținând cont de factori Mestecând regresia logistică:

Mestecând regresia logistică
Mestecând regresia logistică

Probabilitatea unui eșantion cu o probabilitate calculată în funcție de factori s-a dovedit a fi mai mare decât probabilitatea cu o valoare constantă a probabilității. Ce spune? Acest lucru sugerează că cunoștințele despre factori au făcut posibilă selectarea mai precisă a probabilității de rambursare a creditului pentru fiecare client. Prin urmare, la emiterea următorului împrumut, mai corect ar fi să se utilizeze modelul propus la sfârșitul secțiunii 3 din articol pentru evaluarea probabilității de rambursare a datoriilor.

Dar atunci, dacă vrem să maximizăm funcția de probabilitate a eșantionului, atunci de ce să nu folosiți un algoritm care va produce probabilități pentru Vasya, Fedya și Lesha, de exemplu, egale cu 0.99, 0.99 și, respectiv, 0.01. Poate că un astfel de algoritm va funcționa bine pe eșantionul de antrenament, deoarece va aduce valoarea probabilității eșantionului mai aproape de Mestecând regresia logistică, dar, în primul rând, un astfel de algoritm va avea cel mai probabil dificultăți cu capacitatea de generalizare și, în al doilea rând, acest algoritm cu siguranță nu va fi liniar. Și dacă metodele de combatere a supraantrenamentului (capacitatea de generalizare la fel de slabă) nu sunt în mod clar incluse în planul acestui articol, atunci să trecem prin al doilea punct mai detaliat. Pentru a face acest lucru, trebuie doar să răspundeți la o întrebare simplă. Probabilitatea ca Vasya și Fedya să ramburseze împrumutul poate fi aceeași, ținând cont de factorii cunoscuți de noi? Din punctul de vedere al logicii sunetului, desigur că nu, nu se poate. Deci, Vasya va plăti lunar 2.5% din salariu pentru a rambursa împrumutul, iar Fedya - aproape 27,8%. Tot în graficul 2 „Clasificarea clienților” vedem că Vasya este mult mai departe de linia care separă clasele decât Fedya. Și în sfârșit, știm că funcția Mestecând regresia logistică pentru Vasya și Fedya ia valori diferite: 4.24 pentru Vasya și 1.0 pentru Fedya. Acum, dacă Fedya, de exemplu, a câștigat cu un ordin de mărime mai mult sau a cerut un împrumut mai mic, atunci probabilitățile de rambursare a împrumutului pentru Vasya și Fedya ar fi similare. Cu alte cuvinte, dependența liniară nu poate fi păcălită. Și dacă am calculat efectiv șansele Mestecând regresia logistică, și nu le-am scos din aer, am putea spune cu siguranță că valorile noastre Mestecând regresia logistică cel mai bine ne permit să estimăm probabilitatea de rambursare a împrumutului de către fiecare împrumutat, dar întrucât am convenit să presupunem că determinarea coeficienților Mestecând regresia logistică a fost efectuat conform tuturor regulilor, atunci vom presupune că da - coeficienții noștri ne permit să oferim o estimare mai bună a probabilității :)

Totuși, ne divagăm. În această secțiune trebuie să înțelegem cum este determinat vectorul greutăților Mestecând regresia logistică, care este necesar pentru evaluarea probabilității de rambursare a împrumutului de către fiecare împrumutat.

Să rezumăm pe scurt cu ce arsenal căutăm cote Mestecând regresia logistică:

1. Presupunem că relația dintre variabila țintă (valoarea de predicție) și factorul care influențează rezultatul este liniară. Din acest motiv este folosit funcția de regresie liniară specie Mestecând regresia logistică, a cărui linie împarte obiectele (clienții) în clase Mestecând regresia logistică и Mestecând regresia logistică sau Mestecând regresia logistică (clienții care sunt în măsură să ramburseze împrumutul și cei care nu sunt). În cazul nostru, ecuația are forma Mestecând regresia logistică.

2. Folosim funcția de logit invers specie Mestecând regresia logistică pentru a determina probabilitatea ca un obiect să aparțină unei clase Mestecând regresia logistică.

3. Considerăm setul nostru de instruire ca o implementare a unui generalizat Scheme Bernoulli, adică pentru fiecare obiect se generează o variabilă aleatoare, care cu probabilitate Mestecând regresia logistică (proprie pentru fiecare obiect) ia valoarea 1 si cu probabilitate Mestecând regresia logistică - 0.

4. Știm ce trebuie să maximizăm funcția de probabilitate a eșantionului luând în considerare factorii acceptați astfel încât eșantionul disponibil să devină cel mai plauzibil. Cu alte cuvinte, trebuie să selectăm parametrii la care eșantionul va fi cel mai plauzibil. În cazul nostru, parametrul selectat este probabilitatea rambursării creditului Mestecând regresia logistică, care la rândul său depinde de coeficienți necunoscuți Mestecând regresia logistică. Deci trebuie să găsim un astfel de vector de greutăți Mestecând regresia logistică, la care probabilitatea eșantionului va fi maximă.

5. Știm ce să maximizăm funcții de probabilitate a eșantionului puteți folosi metoda cu maxima probabilitate. Și știm toate trucurile complicate pentru a lucra cu această metodă.

Așa se dovedește a fi o mișcare în mai mulți pași :)

Acum amintiți-vă că la începutul articolului am vrut să derivăm două tipuri de funcții de pierdere Pierdere logistică în funcţie de modul în care sunt desemnate clasele de obiecte. Sa întâmplat ca în problemele de clasificare cu două clase, clasele sunt notate ca Mestecând regresia logistică и Mestecând regresia logistică sau Mestecând regresia logistică. În funcție de notație, ieșirea va avea o funcție de pierdere corespunzătoare.

Cazul 1. Clasificarea obiectelor în Mestecând regresia logistică и Mestecând regresia logistică

Mai devreme, la determinarea probabilității unui eșantion, în care probabilitatea rambursării datoriilor de către împrumutat a fost calculată pe baza factorilor și a coeficienților dați Mestecând regresia logistică, am aplicat formula:

Mestecând regresia logistică

De fapt Mestecând regresia logistică este sensul funcții de răspuns logistic Mestecând regresia logistică pentru un vector dat de greutăți Mestecând regresia logistică

Atunci nimic nu ne împiedică să scriem funcția de probabilitate a eșantionului după cum urmează:

Mestecând regresia logistică

Se întâmplă că uneori este dificil pentru unii analiști începători să înțeleagă imediat cum funcționează această funcție. Să ne uităm la 4 exemple scurte care vor clarifica totul:

1. Dacă Mestecând regresia logistică (adică, conform eșantionului de antrenament, obiectul aparține clasei +1), iar algoritmul nostru Mestecând regresia logistică determină probabilitatea de a clasifica un obiect într-o clasă Mestecând regresia logistică egal cu 0.9, atunci această probabilitate a eșantionului va fi calculată după cum urmează:

Mestecând regresia logistică

2. Dacă Mestecând regresia logisticăȘi Mestecând regresia logistică, atunci calculul va fi astfel:

Mestecând regresia logistică

3. Dacă Mestecând regresia logisticăȘi Mestecând regresia logistică, atunci calculul va fi astfel:

Mestecând regresia logistică

4. Dacă Mestecând regresia logisticăȘi Mestecând regresia logistică, atunci calculul va fi astfel:

Mestecând regresia logistică

Este evident că funcția de probabilitate va fi maximizată în cazurile 1 și 3 sau în cazul general - cu valori ghicite corect ale probabilităților de atribuire a unui obiect unei clase. Mestecând regresia logistică.

Datorită faptului că atunci când se determină probabilitatea atribuirii unui obiect unei clase Mestecând regresia logistică Numai că nu știm coeficienții Mestecând regresia logistică, atunci îi vom căuta. După cum am menționat mai sus, aceasta este o problemă de optimizare în care mai întâi trebuie să găsim derivata funcției de probabilitate în raport cu vectorul greutăților Mestecând regresia logistică. Cu toate acestea, mai întâi este logic să simplificăm sarcina pentru noi înșine: vom căuta derivata logaritmului funcții de probabilitate.

Mestecând regresia logistică

De ce după logaritm, în funcții de eroare logistică, am schimbat semnul din Mestecând regresia logistică pe Mestecând regresia logistică. Totul este simplu, deoarece în problemele de evaluare a calității unui model se obișnuiește să se minimizeze valoarea unei funcții, am înmulțit partea dreaptă a expresiei cu Mestecând regresia logistică și în consecință, în loc să maximizăm, acum minimizăm funcția.

De fapt, chiar acum, sub ochii tăi, funcția de pierdere a fost derivată dureros - Pierdere logistică pentru un set de antrenament cu două clase: Mestecând regresia logistică и Mestecând regresia logistică.

Acum, pentru a găsi coeficienții, trebuie doar să găsim derivata funcții de eroare logistică apoi, folosind metode de optimizare numerică, cum ar fi coborârea gradientului sau coborârea gradientului stocastic, selectați cei mai optimi coeficienți Mestecând regresia logistică. Dar, având în vedere volumul considerabil al articolului, se propune să realizezi diferențierea pe cont propriu, sau poate că acesta va fi un subiect pentru următorul articol cu ​​multă aritmetică fără exemple atât de detaliate.

Cazul 2. Clasificarea obiectelor în Mestecând regresia logistică и Mestecând regresia logistică

Abordarea aici va fi aceeași ca și la cursuri Mestecând regresia logistică и Mestecând regresia logistică, ci calea în sine către ieșirea funcției de pierdere Pierdere logistică, va fi mai ornamentat. Să începem. Pentru funcția de probabilitate vom folosi operatorul "daca atunci..."... Adică dacă Mestecând regresia logisticăCel de-al-lea obiect aparține clasei Mestecând regresia logistică, apoi pentru a calcula probabilitatea eșantionului folosim probabilitatea Mestecând regresia logistică, dacă obiectul aparține clasei Mestecând regresia logistică, apoi înlocuim în probabilitate Mestecând regresia logistică. Iată cum arată funcția de probabilitate:

Mestecând regresia logistică

Să descriem pe degete cum funcționează. Să luăm în considerare 4 cazuri:

1. Dacă Mestecând regresia logistică и Mestecând regresia logistică, atunci probabilitatea de eșantionare va „merge” Mestecând regresia logistică

2. Dacă Mestecând regresia logistică и Mestecând regresia logistică, atunci probabilitatea de eșantionare va „merge” Mestecând regresia logistică

3. Dacă Mestecând regresia logistică и Mestecând regresia logistică, atunci probabilitatea de eșantionare va „merge” Mestecând regresia logistică

4. Dacă Mestecând regresia logistică и Mestecând regresia logistică, atunci probabilitatea de eșantionare va „merge” Mestecând regresia logistică

Este evident că în cazurile 1 și 3, când probabilitățile au fost corect determinate de algoritm, funcția de probabilitate va fi maximizat, adică exact asta ne-am dorit să obținem. Cu toate acestea, această abordare este destul de greoaie și în continuare vom lua în considerare o notație mai compactă. Dar mai întâi, să logaritmăm funcția de probabilitate cu o schimbare de semn, deoarece acum o vom minimiza.

Mestecând regresia logistică

Să înlocuim în schimb Mestecând regresia logistică expresie Mestecând regresia logistică:

Mestecând regresia logistică

Să simplificăm termenul potrivit sub logaritm folosind tehnici aritmetice simple și să obținem:

Mestecând regresia logistică

Acum este timpul să scapi de operator "daca atunci...". Rețineți că atunci când un obiect Mestecând regresia logistică aparține clasei Mestecând regresia logistică, apoi în expresia sub logaritm, în numitor, Mestecând regresia logistică ridicat la putere Mestecând regresia logistică, dacă obiectul aparține clasei Mestecând regresia logistică, atunci $e$ este ridicat la putere Mestecând regresia logistică. Prin urmare, notația pentru grad poate fi simplificată prin combinarea ambelor cazuri într-unul singur: Mestecând regresia logistică. atunci funcția de eroare logistică va lua forma:

Mestecând regresia logistică

În conformitate cu regulile logaritmului, întoarcem fracția și stingem semnul "Mestecând regresia logistică„(minus) pentru logaritm, obținem:

Mestecând regresia logistică

Aici este funcția de pierdere pierderi logistice, care este utilizat în setul de antrenament cu obiecte alocate claselor: Mestecând regresia logistică и Mestecând regresia logistică.

Ei bine, în acest moment îmi iau concediu și încheiem articolul.

Mestecând regresia logistică Lucrarea anterioară a autorului este „Aducerea ecuației de regresie liniară în formă de matrice”

Materiale auxiliare

1. literatură

1) Analiza de regresie aplicată / N. Draper, G. Smith - ed. a II-a. – M.: Finanțe și Statistică, 2 (traducere din engleză)

2) Teoria probabilității și statistică matematică / V.E. Gmurman - ed. a 9-a. - M.: Liceu, 2003

3) Teoria probabilității / N.I. Chernova - Novosibirsk: Universitatea de Stat din Novosibirsk, 2007

4) Analiza afacerilor: de la date la cunoaștere / Paklin N. B., Oreshkov V. I. - ed. a II-a. — Sankt Petersburg: Peter, 2

5) Știința datelor Știința datelor de la zero / Joel Gras - Sankt Petersburg: BHV Petersburg, 2017

6) Statistici practice pentru specialiștii în știința datelor / P. Bruce, E. Bruce - St. Petersburg: BHV Petersburg, 2018

2. Prelegeri, cursuri (video)

1) Esența metodei de maximă probabilitate, Boris Demeshev

2) Metoda maximă de probabilitate în cazul continuu, Boris Demeshev

3) Regresie logistică. Curs deschis ODS, Yury Kashnitsky

4) Cursul 4, Evgeny Sokolov (din 47 de minute de videoclip)

5) Regresie logistică, Vyacheslav Vorontsov

3. Surse de internet

1) Clasificare liniară și modele de regresie

2) Cum să înțelegeți cu ușurință regresia logistică

3) Funcție de eroare logistică

4) Teste independente și formula Bernoulli

5) Balada MMP

6) Metoda maximă de probabilitate

7) Formule și proprietăți ale logaritmilor

8) De ce număr Mestecând regresia logistică?

9) Clasificator liniar

Sursa: www.habr.com

Adauga un comentariu