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)Logistic Regression-1697464292967 Nella derivazione di sopra si ha che π=P(Y=1)

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σ2i

E 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 🟩

Logistic Regression-1697464563385 Questo ci dà una motivazione del motivo per cui utilizziamo  Funzione di sigmoid: Ïƒ(x)=11+e−x Questa funzione si può vedere come un caso particolare di Softmax Function. σ′(x)=σ(x)(1−σ(x))P(Y=1|x,w)=σ(w0+∑iwixi)

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

Funzione di loss 🟩

Logistic Regression-1697462930410 Che sembra una cross-entropy classica, che però non ha una soluzione analitica, per questo motivo si utilizza **discesa del gradiente**.

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

Calcolo 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.

Logistic Regression-1697463186166 Questo è esattamente poi quanto sarà fatto durante il percettrone, per l'aggiornamento delle variabili in quelle istanze.

Fase update del gradiente 🟩

δL(w)δwi=∑l(yl−αl)xl

Possiamo 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).