Pre-requisito: Regressione lineare
Questo articolo discute le basi della regressione logistica e la sua implementazione in Python. La regressione logistica è fondamentalmente un algoritmo di classificazione supervisionata. In un problema di classificazione, la variabile obiettivo (o output), y, può assumere solo valori discreti per un dato insieme di caratteristiche (o input), X.
Contrariamente alla credenza popolare, la regressione logistica è un modello di regressione. Il modello costruisce un modello di regressione per prevedere la probabilità che un dato dato dato appartenga alla categoria numerata come “1”. Proprio come la regressione lineare presuppone che i dati seguano una funzione lineare, la regressione logistica modella i dati utilizzando la funzione sigmoide.
La regressione logistica diventa una tecnica di classificazione solo quando viene introdotta una soglia di decisione. L’impostazione del valore di soglia è un aspetto molto importante della regressione logistica e dipende dal problema di classificazione stesso.
La decisione per il valore della soglia è principalmente influenzata dai valori di precisione e richiamo. Idealmente, vogliamo che sia la precisione che il richiamo siano 1, ma questo è raramente il caso. Nel caso di un compromesso tra precisione e richiamo, usiamo i seguenti argomenti per decidere la soglia:-
1. Bassa precisione/alto richiamo: Nelle applicazioni in cui vogliamo ridurre il numero di falsi negativi senza necessariamente ridurre il numero di falsi positivi, scegliamo un valore di decisione che abbia un basso valore di precisione o un alto valore di richiamo. Per esempio, in un’applicazione di diagnosi del cancro, non vogliamo che un paziente affetto sia classificato come non affetto senza prestare molta attenzione al fatto che al paziente sia stato erroneamente diagnosticato il cancro. Questo perché, l’assenza di cancro può essere rilevata da altre malattie mediche ma la presenza della malattia non può essere rilevata in un candidato già respinto.
2. Alta precisione/basso richiamo: Nelle applicazioni in cui vogliamo ridurre il numero di falsi positivi senza necessariamente ridurre il numero di falsi negativi, scegliamo un valore di decisione che abbia un alto valore di Precision o un basso valore di Recall. Per esempio, se stiamo classificando i clienti se reagiranno positivamente o negativamente a una pubblicità personalizzata, vogliamo essere assolutamente sicuri che il cliente reagirà positivamente alla pubblicità perché altrimenti, una reazione negativa può causare una perdita di vendite potenziali da parte del cliente.
In base al numero di categorie, la regressione logistica può essere classificata come:
- binomiale: la variabile obiettivo può avere solo 2 tipi possibili: “0” o “1” che possono rappresentare “vittoria” contro “perdita”, “passaggio” contro “fallimento”, “morto” contro “vivo”, ecc.
- multinomiale: la variabile obiettivo può avere 3 o più tipi possibili che non sono ordinati (cioè i tipi non hanno significato quantitativo) come “malattia A” contro “malattia B” contro “malattia C”.
- ordinale: si occupa delle variabili obiettivo con categorie ordinate. Per esempio, il punteggio di un test può essere categorizzato come: “molto scarso”, “scarso”, “buono”, “molto buono”. Qui, ad ogni categoria può essere dato un punteggio come 0, 1, 2, 3.
Prima di tutto, esploriamo la forma più semplice di Regressione Logistica, cioè Regressione Logistica Binomiale.
Regressione Logistica Binomiale
Consideriamo un dataset di esempio che mappa il numero di ore di studio con il risultato di un esame. Il risultato può assumere solo due valori, cioè superato (1) o fallito (0):
Ore(x) | 0.50 | 0.75 | 1.00 | 1.25 | 1.50 | 1.75 | 2.00 | 2.25 | 2.50 | 2.75 | 3.00 | 3.25 | 3.50 | 3.75 | 4.00 | 4.25 | 4.50 | 4.75 | 5.00 | 5.50 | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Pass(y) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
So, abbiamo
i.e. y è una variabile target categorica che può prendere solo due tipi possibili: “0” o “1”.
Per generalizzare il nostro modello, assumiamo che:
- Il dataset ha ‘p’ variabili caratteristiche e ‘n’ osservazioni.
- La matrice delle caratteristiche è rappresentata come:
Qui, denota i valori di caratteristica per l’osservazione.
Qui, stiamo mantenendo la convenzione di lasciare = 1. (Continuate a leggere, capirete la logica tra qualche istante). - L’osservazione, , può essere rappresentata come:
- rappresenta la risposta prevista per l’osservazione, cioè . La formula che usiamo per il calcolo si chiama ipotesi.
Se avete fatto la regressione lineare, dovreste ricordare che nella regressione lineare, l’ipotesi che abbiamo usato per la previsione era:
dove, sono i coefficienti di regressione.
Lasciate che la matrice/vettore dei coefficienti di regressione sia:
Quindi, in una forma più compatta,
La ragione per prendere = 1 è abbastanza chiara ora.
Avevamo bisogno di fare un prodotto di matrice, ma non c’era nessun
attuale moltiplicato per nella formula dell’ipotesi originale. Così, abbiamo definito = 1.
Ora, se proviamo ad applicare la regressione lineare al problema di cui sopra, è probabile che otteniamo valori continui usando l’ipotesi che abbiamo discusso sopra. Inoltre, non ha senso prendere valori più grandi di 1 o più piccoli di 0.
Così, alcune modifiche sono fatte all’ipotesi per la classificazione:
dove,
è chiamata funzione logistica o la funzione sigmoide.
Ecco un grafico che mostra g(z):
Possiamo dedurre dal grafico sopra che:
- g(z) tende a 1 come
- g(z) tende a 0 come
- g(z) è sempre delimitata tra 0 e 1
Quindi, ora, possiamo definire le probabilità condizionali per 2 etichette(0 e 1) per l’osservazione come:
Possiamo scriverlo in modo più compatto come:
Ora, definiamo un altro termine, la probabilità dei parametri come:
La probabilità non è altro che la probabilità dei dati (esempi di formazione), dato un modello e valori di parametri specifici (qui, ). Essa misura il supporto fornito dai dati per ogni possibile valore del modello. La otteniamo moltiplicando tutti i valori per dati .
E per facilitare i calcoli, prendiamo il log likelihood:
La funzione di costo della regressione logistica è proporzionale all’inverso del likelihood dei parametri. Quindi, possiamo ottenere un’espressione per la funzione di costo, J usando l’equazione di verosimiglianza logaritmica come:
e il nostro scopo è di stimare in modo che la funzione di costo sia minimizzata!!!
Usando l’algoritmo di discesa a gradiente
Prima di tutto, prendiamo le derivate parziali di w.r.t. per ricavare la regola di discesa del gradiente stocastico (qui presentiamo solo il valore finale derivato):
Qui, y e h(x) rappresentano il vettore risposta e il vettore risposta previsto (rispettivamente). Inoltre, è il vettore che rappresenta i valori di osservazione per la caratteristica.
Ora, al fine di ottenere min,
dove è chiamato tasso di apprendimento e deve essere impostato esplicitamente.
Vediamo l’implementazione python di questa tecnica su un set di dati di esempio (scaricalo da qui):
Nota: La discesa del gradiente è uno dei tanti modi per stimare. Questi algoritmi sono:
- BFGS(Broyden-Fletcher-Goldfarb-Shanno algorithm)
- L-BFGS(Come BFGS ma usa una memoria limitata)
- Conjugate Gradient
Svantaggi/svantaggi dell’uso di uno qualsiasi di questi algoritmi rispetto alla discesa del gradiente:
- Svantaggi
- Non è necessario scegliere il tasso di apprendimento
- Spesso è più veloce (non sempre è il caso)
- Può approssimare numericamente il gradiente per te (non sempre funziona bene)
- Svantaggi
- Più complesso
- Più una scatola nera a meno che tu non impari le specifiche
Regressione logistica multinomiale
Nella regressione logistica multinomiale, la variabile di uscita può avere più di due possibili uscite discrete. Si consideri il set di cifre. Qui, la variabile di uscita è il valore della cifra che può assumere valori tra (0, 12, 3, 4, 5, 6, 7, 8, 9).
Di seguito è riportata l’implementazione della Regressione Logistica Multinomiale utilizzando scikit-learn per fare previsioni sul dataset di cifre.
Logistic Regression model accuracy(in %): 95.6884561892
Infine, ecco alcuni punti sulla regressione logistica su cui riflettere:
- Non assume una relazione lineare tra la variabile dipendente e le variabili indipendenti, ma assume una relazione lineare tra il logit delle variabili esplicative e la risposta.
- Le variabili indipendenti possono essere anche i termini di potenza o qualche altra trasformazione non lineare delle variabili indipendenti originali.
- La variabile dipendente NON ha bisogno di essere distribuita normalmente, ma tipicamente assume una distribuzione da una famiglia esponenziale (es. binomiale, Poisson, multinomiale, normale,…); la regressione logistica binaria assume una distribuzione binomiale della risposta.
- L’omogeneità della varianza NON deve essere soddisfatta.
- Gli errori devono essere indipendenti ma NON normalmente distribuiti.
- Utilizza la stima di massima verosimiglianza (MLE) piuttosto che i minimi quadrati ordinari (OLS) per stimare i parametri, e quindi si basa su approssimazioni a grandi campioni.
Questo articolo è stato contribuito da Nikhil Kumar. Se ti piace GeeksforGeeks e vuoi contribuire, puoi anche scrivere un articolo usando contribute.geeksforgeeks.org o inviare il tuo articolo a [email protected]. Vedi il tuo articolo apparire sulla pagina principale di GeeksforGeeks e aiuta gli altri Geek.
.