Sunteți pe pagina 1din 5

Szilagyi Andras Marton

Regresia logistică

Regresia logistică este utilizată în general pentru scopuri de


clasificare. Spre deosebire de regresia liniară, variabila dependentă
poate lua un număr limitat de valori numai dacă variabila dependentă
este categorică. Atunci când numărul de rezultate posibile este doar
două, regresia se numește regresie logistică binară. În regresia liniară,
ieșirea este suma ponderată a intrărilor. Regresia logistică este o
regresie liniară generalizată, în sensul că nu emitem direct suma
ponderată de intrări directe, dar le transmitem printr-o funcție care poate
să aibă orice valoare reală între 0 și 1.
Funcția de activare utilizată este cunoscută ca funcția
sigmoid.Imaginea funcției sigmoid arată astfel:

Putem vedea că valoarea funcției sigmoide este întotdeauna între


0 și 1. Valoarea este exact 0,5 la X = 0. Putem folosi 0.5 ca prag de
probabilitate pentru a determina clasele. Dacă probabilitatea este mai
mare de 0,5, o clasificăm ca Clasă-1 (Y = 1) sau altfel ca Clasa-0 (Y =
0).
Înainte de a ne construi modelul, să ne uităm la ipotezele făcute de
regresia logistică:
- Variabila dependentă trebuie să fie categorică
- Variabilele independente (caracteristicile) trebuie să fie
independente (pentru a evita multicoliniaritatea).
În statistică, multicoliniaritatea este un fenomen în care o variabilă
predictivă într-un model de regresie multiplă poate fi prezisă liniar din
celelalte, cu un grad substanțial de precizie.
Am folosit setul de date marks.txt . Datele sunt compuse din note de
două examene pentru 100 de solicitanți. Valoarea țintă preia valorile
binare 1,0. 1 înseamnă că solicitantul a fost admis la universitate, în timp
ce 0 înseamnă că reclamantul nu a primit o admitere. Obiectivul este de
a construi un clasificator care să poată prevedea dacă o aplicație va fi
admisă la universitate sau nu.

Acum, că avem o înțelegere clară a problemei și a datelor, să mergem


mai departe și să construim modelul nostru.
Până acum am înțeles modul în care poate fi folosit Regresia logistică
pentru a clasifica instanțele în diferite clase. În această secțiune, vom
defini ipoteza și funcția de cost.
Un model de regresie liniară poate fi reprezentat de ecuația:

Apoi aplicăm funcția sigmoidă la ieșirea regresiei liniare:

unde funcția sigmoidă este reprezentată de,

Ipoteza pentru regresia logistică devine apoi,

Dacă suma ponderată a intrărilor este mai mare decât zero, clasa
prevăzută este 1 și invers. Astfel, limita de decizie care separă ambele
clase poate fi găsită prin setarea sumei ponderate a intrărilor la 0.
Ca și regresia liniară, vom defini o funcție de cost pentru modelul nostru
și obiectivul va fi acela de a minimiza costul.
Funcția de cost pentru un singur exemplu de instruire poate fi dată de:
Dacă clasa actuală este 1 și modelul prezice 0, ar trebui să o penalizăm
foarte mult și invers. Așa cum puteți vedea din imaginea de mai jos,
pentru plotul -log (h (x)) ca h (x) apropie 1, costul este 0 și ca h (x) se
apropie 0, costul este infinit modelul greu). În mod similar, pentru plotul -
log (1-h (x)) atunci când valoarea effectivă este 0 și modelul prezice 0,
costul este 0 și costul devine infinit pe măsură ce h (x) se apropie 1.

Putem combina ecuațiile folosind:

Costul pentru toate exemplele de antrenare indicate de J (θ) poate fi


calculat prin luarea mediei peste costul tuturor eșantioanelor de formare:

unde m este numărul de eșantioane de instruire.


Vom folosi gradient descent pentru a minimiza funcția de cost.
Gradientul w.r.t orice parametru poate fi dat de:
Gradient descent este un algoritm de optimizare iterativ de ordinul
întâi pentru a găsi minimul unei funcții.

Ecuația este similară cu ceea ce am obținut în regresia liniară, numai h


(x) este diferită în ambele cazuri.
Acum putem construi modelul,avînd la dispoziție datele necesare.
De asemenea, definim funcția de potrivire care va fi utilizată pentru a
găsi parametrii modelului care minimizează funcția de cost.
Am codificat abordarea “gradient descent” pentru a calcula parametrii
modelului. Am folosit funcția fmin_tnc din biblioteca scipy.
Acesta poate fi folosit pentru a calcula minimul pentru
orice funcție. Ea are nevoie de argumentele următoare:

-func: funcția de a minimiza


-x0: valorile inițiale ale parametrilor pe care vrem să le găsim
-fprime: argumente care trebuie transmise funcțiilor.

S-ar putea să vă placă și