4.6 KiB
La regressione logistica è una tecnica di machine learning fondamentale e ampiamente utilizzata per risolvere problemi di classificazione binaria. A differenza della regressione lineare, che è più adatta per problemi di previsione continua, la regressione logistica si focalizza sulla previsione di classi distinte, trasformando un input continuo in una probabilità, grazie alla funzione sigmoide: \sigma(z) = \frac{1}{1+e^{-z}}
!
Ipotizziamo di avere la seguente situazione, per valori bassi della nostra variabile x, tutti i sample hanno classe 0, viceversa per valori alti. Ma per valori intermedi abbiamo sia sample nella classe 0 che nella classe 1.
!
La funzione sigmoide nel grafico a destra rappresenterà quindi la probabilità di cadere nella classe 1.
La regressione logistica è una tecnica per trovare una "linea ondulata" ottimale che rappresenta la probabilità di appartenere alla Classe 1 per vari valori della variabile. Ogni punto su questa linea indica la probabilità (p) di appartenere alla classe: i punti in basso hanno probabilità zero (p=0), mentre quelli in alto raggiungono la probabilità massima (p=1). La funzione logistica (es. la sigmoide, ma un altro esempio è la softmax) mappa valori da uno spazio infinito (-∞, +∞) a uno spazio probabilistico [0,1]. Al contrario, la funzione logit può trasformare lo spazio delle probabilità [0,1] in uno spazio che si estende da (-∞, +∞).
logit(p)=log\left(\frac{p}{1-p}\right)
Trasformare lo spazio [0,1] in (-∞, +∞) rende il problema simile a una regressione lineare, facilitando l'ottimizzazione. La ricerca della linea ottimale parte da una retta iniziale nello spazio logit variabile, con l'obiettivo di regolarne i coefficienti per massimizzare la verosimiglianza.
Per una variabile, l'equazione è: \text{logit}(p) = \log \left( \frac{p}{1 - p} \right) = \beta_0 + \beta_1 \cdot v
L'obiettivo è adattare la retta ai punti dati nel grafico logit vs variabile in modo che, una volta trasformata nella curva ondulata tramite l'inversa della funzione logit, separi il maggior numero di punti tra le classi. Per fare questo, si utilizza una strategia simile alla regressione lineare, ma invece di minimizzare i residui quadrati (mean squared error), si massimizza la likelihood.
Procediamo nel seguente modo:
- scegliamo dei valori arbitrari per definire una linear regression iniziale
- proiettiamo i punti sulla retta. Applicando la funzione logistica otteniamo una roba tipo quella che si vede nel terzo grafico
Pensandoci, possiamo rappresentare le probabilità con questa equazione:
P(Y=y | X;\theta)=\sigma(\beta^Tx)^y[1-\sigma(\beta^Tx)]^{1-y}
e se ci facciamo caso è praticamente una distribuzione di Bernoulli. Si legge come: la probabilità che Y sia y (che ricordiamo, può essere 0 oppure 1), dati i valori di X (la variabile v nei grafici sopra per intenderci) e \theta
(il vettore dei coefficienti della regressione lineare che dicevamo prima).
La likelihood totale per il vettore di pesi \beta
è quindi:
L(\beta) = \prod_{i=1}^{n} P(Y_i \mid x_i)
Sostituendo l'equazione 4 nell'equazione 5 otteniamo:
L(\beta) = \prod_{i=1}^{n} \sigma(\beta^T x^{(i)})^{y^{(i)}} \cdot [1 - \sigma(\beta^T x^{(i)})]^{(1 - y^{(i)})}
L'idea è di stimare i parametri (
\beta
) in modo da massimizzare L(\beta)
. Tuttavia, per comodità matematica, massimizziamo il logaritmo di L(\beta)
e lo chiamiamo log-likelihood:
LL(\beta) = \sum_{i=1}^{n} y^{(i)} \log \sigma(\beta^T x^{(i)}) + (1 - y^{(i)}) \log[1 - \sigma(\beta^T x^{(i)})]
A questo punto, spero che l'obiettivo precedentemente dichiarato sia più chiaro: trovare i migliori parametri di adattamento β nello spazio logit vs variabile, in modo che LL(β) nello spazio probabilità vs variabile sia massimo.
Come si risolve questo problema? Vediamo due modi!
Gradient Ascend
Calcoliamo la derivata parziale della funzione LL:
!
Però dobbiamo calcolarlo per tutti i sample ovviamente, per cui:
!
Poi aggiorniamo il valore così:
!
il parametro
\eta
indica il rate di apprendimento, come nel gradiant descend della linear regression. Lo scegliamo noi, se è troppo grande l'algoritmo non convergerà mai, se è troppo piccolo ci metterà un fottio, ma sarà più preciso.
Newton's method
Un altro metodo è quello di Newton, che è pure migliore. Però ora devo andare alla maker faire quindi ne parliamo settimana prossima, ciao.