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.
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.
I passi per costruire una regressione logistica sono i seguenti:
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.
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.
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:
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.
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:
I titoli e le risorse a disposizione sono innumerevoli. Qualche segnalazione:
Una delle domande più ricorrenti quando si progetta un A/B test è: quanti utenti mi…
Tre metodi statistici per identificare valori anomali nei dati: z-score, IQR di Tukey e test…
Abbiamo avuto modo di esaminare, nel corso dei precedenti articoli, l'inferenza statistica da una prospettiva…
Abbiamo avuto modo di esaminare, nel corso dei precedenti articoli, come funziona il test delle…
Abbiamo avuto modo di esaminare, nel corso dei precedenti articoli, la distribuzione normale e le…
Abbiamo avuto modo di esaminare, nel corso dei precedenti articoli, come funziona il test delle…