Queste note sono molto di base. Per cose leggermente più avanzate bisogna guardare Bayesian Linear Regression, Linear Regression methods.
Introduzione alla logistic regression
Giustificazione del metodo
Questo è uno dei modelli classici, creati da Minsky qualche decennio fa In questo caso andiamo direttamente a computare il valore di P(Y|X) durante l’inferenza, quindi si parla di modello discriminativo.
Introduzione al problema
Supponiamo che
- Y siano variabili booleane
- Xi siano variabili continue
- Xi siano indipendenti uno dall’altro.
- P(Xi|Y=k) sono modellate tramite distribuzioni gaussiane N(μik,σi)
- NOTA! la varianza non dipende dalle feature!, questo mi permetterebbe di poi togliere la cosa quadratico dopo, rendendo poi l’approssimazione lineare
- Per esempio se utilizziamo nelle immagini, avrebbe senso normalizzare pixel by pixel, e non image wide con un unico valore, è una assunzione, che se funziona dovrebbe poi far andare meglio la regressione logistica!
- Y è una distribuzione bernoulliana.
Ci chiediamo come è fatto P(Y|X)?
Caratterizzazione di P(Y|X) 🟨+
Proviamo a calcolare analiticamente come è fatto P(Y|X) usando le assunzioni di sopra
P(Y=1|X=⟨x1,…,xn⟩)=11+exp(w0+∑iwixi)
E poi sappiamo che
lnP(Xi|Y=0)P(Xi|Y=1)=lne−(Xi−μi0)22σ20e−(Xi−μi1)22σ21=−(Xi−μi0)22σ2i+(Xi−μi1)22σ2iE si può notare che poi abbiamo il risultato di sopra e diventa sensato avere la forma di Sigmoid, che esce in modo molto molto naturale
Dalla parte in blu capiamo che è una cosa lineare, perché se è maggiore di zero allora è meglio la probabilità di stare da una parte rispetto all’altra.
Funzione di Sigmoid 🟩

Possiamo scrivere la probabilità di ogni singolo campione come in figura sotto
Funzione di loss 🟩

Ottimizzazione discesa del gradiente
Intuizione sul gradiente 🟩
abbiamo alla fine che il gradiente è
δL(w)δwi=∑lxli⋅(yl−αl)Perché già (y−α) sta misurando in un certo senso la differenza (l’errore), e il prodotto lo sta legando all’input preciso, quindi è molto bello quando la formula è interpretabile in modo fisico quasi.
∇wℓ(w)(x,y)=[σ(w⋅x)−y]xCalcolo del gradiente cross entropy 🟨++
al=σ(w0+∑ixiwi)=σ(z)∑llogP(Y=yl|xl,w)=∑lyllog(αl)+(1−yl)(1−log(αl))Dalla formula di sopra riscritta in altro modo.

Fase update del gradiente 🟩
δL(w)δwi=∑l(yl−αl)xlPossiamo usare questa per aggiornare il peso di wi
wi=wi+μδL(w)δwiwi=wi+μδL(w)δwi+μλ|wi|Che implica il fatto che se abbiamo un singolo peso grande, farà molta fatica ad esserci nel regolarizzatore (quindi ho meno varianza fra i pesi diciamo).