Come prevedere il risultato di un evento: la Regressione Logistica

La regressione logistica è un modello statistico utilizzato per prevedere la probabilità di un evento in base a un insieme di variabili indipendenti.
E’ particolarmente utile quando si vuole classificare un evento come appartenente o meno ad una determinata categoria (ad esempio, un cliente che acquisterà o meno un prodotto, un paziente che svilupperà o meno una malattia).

Si tratta di un algoritmo di Apprendimento Automatico Supervisionato che può essere utilizzato per modellare la probabilità di una determinata classe o evento. Viene utilizzato quando i dati sono linearmente separabili – cioè se esiste una linea o un piano che possono essere utilizzati per separare i dati in diverse classi in modo univoco – e l’esito è binario o dicotomico.
Ciò significa che la regressione logistica viene solitamente utilizzata per problemi di classificazione binaria (Sì/No, Corretto/Sbagliato, Vero/Falso, ecc.),

Nel corso di questo post mostrerò come eseguire una regressione logistica binomiale per creare un modello di classificazione, al fine di prevedere risposte binarie su un determinato insieme di predittori.

Come funziona la regressione logistica e i passi per costruirla

La regressione logistica è una tecnica di modellizzazione statistica utilizzata per prevedere la probabilità di un evento binario (ad esempio, sì/no, vero/falso) in base a un insieme di variabili indipendenti.

A differenza della regressione lineare, che è utilizzata per prevedere valori continui, la regressione logistica utilizza la funzione logistica per “modellizzare” la probabilità dell’evento osservato.

La regressione logistica utilizza la funzione logistica, anche conosciuta come sigmoide, per produrre la probabilità di un evento.
La funzione logistica produce un valore compreso tra 0 e 1, che può essere interpretato come una probabilità.
Dopo che il modello è stato addestrato, si può utilizzare per fare previsioni su nuovi dati, fornendo una stima della probabilità di un evento.

grafico sigmoide
La funzione sigmoide è utile per mappare qualsiasi valore previsto di probabilità: il valore previsto è sempre compreso tra 0 e 1

I passi per costruire una regressione logistica sono i seguenti:

  1. Selezionare e raccogliere i dati: raccogli i dati che desideri utilizzare per prevedere l’evento binario e seleziona le variabili indipendenti che ritieni pertinenti per la tua analisi.
  2. Pulire e preparare i dati: controlla i dati per eventuali valori mancanti o errati e assicurati che i dati siano adeguatamente formattati per l’analisi.
  3. Costruire il modello: utilizza la funzione logistica per costruire il modello sui dati di training. La funzione logistica è una funzione “S-shaped” che restituisce valori compresi tra 0 e 1, che possono essere interpretati come probabilità.
  4. Valutare il modello: Utilizza i dati di test per valutare l’accuratezza del modello. Ci sono varie metriche che si possono utilizzare per la valutazione, come l’accuratezza, la precisione e il recall.
  5. Interpretare i risultati: analizza i coefficienti del modello per capire l’importanza relativa delle variabili indipendenti e per capire meglio come i valori delle variabili influiscono sulla probabilità dell’evento.
  6. Utilizzare il modello per fare previsioni: utilizza il modello per fare previsioni sui nuovi dati in base alle variabili indipendenti fornite.

Questi sono ovviamente i passi generali per costruire una regressione logistica. Tuttavia, in alcune situazioni potrebbe essere necessario fare ulteriori operazioni o aggiustamenti, come ad esempio utilizzare metodi di regularizzazione per evitare problemi di overfitting, oppure utilizzare la cross-validation per avere una stima più affidabile dell’accuratezza del modello.

Un esempio in R: calcolare la probabilità di sopravvivenza sul Titanic

Pe fare un esempio pratico molto semplificato, ho scaricato un dataset tra i più noti e usati, quello relativo ai passeggeri del Titanic, che contiene informazioni sui passeggeri del famoso naufragio del Titanic, tra cui età, sesso, classe sociale e se i passeggeri sopravvissero o meno all’incidente.

Io l’ho preso da questo indirizzo e l’ho salvato in locale come titanic.csv

nb: il dataset Titanic è disponibile anche nella biblioteca di dati di Kaggle (kaggle.com) e nella raccolta di dataset UCI Machine Learning (archive.ics.uci.edu/ml/datasets.php).

Non ho bisogno in questo caso di pulire i dati, perchè utilizzo un set di dati “sicuro” e ampiamente testato.
Ovviamente, in un caso d’uso “reale” i dati andranno accuratamente esaminati, studiati, e “trattati” in fase preliminare…

Ecco allora un codice d’esempio in R:

# Carico le librerie
library(ggplot2)
library(caret)

# Carico i dati nel dataset titanic
# Sostituisco il percorso con quello nel mio pc
titanic <- read.csv("/ilmiopath/titanic.csv")

# Visualizzo le prime 10 righe
head(titanic, 10)

# Creo le variabili dummy per i campi categorici
titanic$Sex <- as.factor(titanic$Sex)
titanic$Survived <- as.factor(titanic$Survived)

# Creo un model di regressione logistica
model <- glm(Survived ~ Pclass + Sex + Age + SibSp + Parch + Fare + Embarked, data = titanic, family = binomial(link = "logit"))

# Mostro il modello
summary(model)


# Come predire la probabilita' di sopravvivenza di un caso di esempio
example <- data.frame(Pclass = 3, Sex = "male", Age = 32, SibSp = 0, Parch = 0, Fare = 8.05, Embarked = "S")
predict(model, newdata = example, type = "response")

# Visualizzo graficamente le probabilita' di sopravvivenza in base alla classe
ggplot(titanic, aes(x = Pclass, fill = factor(Survived))) + 
  geom_bar(position = "fill") +
  labs(x = "Classe", y = "Probabilita' di sopravvivenza") +
  scale_fill_discrete(name = "Sopravvissuto", labels = c("No", "Si"))

In questo caso, notiamo come un uomo di 32 anni in terza classe avrebbe avuto l’8,5% circa di probabilità di sopravvivere.
Graficamente, abbiamo poi modo di visualizzare la probabilità di sopravvivenza in base alla classe del posto.

grafico che rappresenta la probabilità di sopravvivenza al naufragio del Titanic in base alla Classe del viaggio

Un po’ di matematica: l’equazione logit

Come abbiamo visto, l’equazione logit è un’equazione matematica che viene usata nella regressione logistica per descrivere la relazione tra la variabile dipendente (che può assumere solo valori binari) e una o più variabili indipendenti (chiamate anche predittori o covariate).

In generale la forma dell’equazione logit è la seguente:

\( logit(p) = \ln\left(\frac{p}{1-p}\right) = b_0 + b_1x_1 + b_2x_2 + … + b_n*x_n \\ \\ \)

dove:

p è la probabilità che la variabile dipendente assuma il valore “1”
logit(p) è chiamato logaritmo del rapporto di probabilità (log-odds)
b_0, b_1, b_2, …, b_n sono i coefficienti del modello (chiamati anche pesi o parametri)
x_1, x_2, …, x_n sono le variabili indipendenti (predittori o covariate)

In sintesi, l’equazione logit descrive come la probabilità di un evento (es. una risposta binaria) dipenda dai valori delle variabili indipendenti, attraverso i pesi del modello.

Tiriamo le somme

La regressione logistica è un potente modello statistico che può aiutare a prevedere il risultato di un evento in base a un insieme di variabili indipendenti. E’ facile da usare ed interpretare, e può essere utilizzato in molti ambiti, dalla medicina alla finanza.

Rappresenta uno strumento efficace per risolvere problemi di classificazione binaria perché consente di modellare la relazione tra la variabile dipendente binaria e una o più variabili indipendenti.

Consente di:

  • Modellare la relazione tra una variabile dipendente binaria e una o più variabili indipendenti.
  • Prevedere la probabilità che la variabile dipendente assuma un valore specifico (es. 1 o 0) in base ai valori delle variabili indipendenti.
  • Utilizzare queste previsioni di probabilità per classificare nuovi casi in base a una soglia predefinita (ad esempio, se la probabilità di un caso di essere classificato come 1 è superiore a 0.5, allora viene classificato come 1, altrimenti come 0)
  • Interpretare i pesi del modello (coefficienti) per comprendere quali variabili indipendenti sono più importanti per la classificazione.

Risorse per approfondire

I titoli e le risorse a disposizione sono innumerevoli. Qualche segnalazione:

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *