  {"id":2631,"date":"2023-01-12T15:47:03","date_gmt":"2023-01-12T14:47:03","guid":{"rendered":"https:\/\/www.gironi.it\/blog\/?p=2631"},"modified":"2024-09-20T13:56:14","modified_gmt":"2024-09-20T12:56:14","slug":"la-regressione-logistica","status":"publish","type":"post","link":"https:\/\/www.gironi.it\/blog\/la-regressione-logistica\/","title":{"rendered":"Regressione Logistica: prevedere il risultato di un evento"},"content":{"rendered":"\n<p>La regressione logistica \u00e8 un modello statistico utilizzato per prevedere la probabilit\u00e0 di un evento in base a un insieme di variabili indipendenti.<br>E&#8217; particolarmente utile quando si vuole classificare un evento come appartenente o meno ad una determinata categoria (ad esempio, un cliente che acquister\u00e0 o meno un prodotto, un paziente che svilupper\u00e0 o meno una malattia).<\/p>\n\n\n\n<p>Si tratta di un algoritmo di <strong><em>Apprendimento Automatico Supervisionato<\/em><\/strong> che pu\u00f2 essere utilizzato per modellare la probabilit\u00e0 di una determinata classe o evento. <strong>Viene utilizzato quando i dati sono linearmente separabili<\/strong> &#8211; cio\u00e8 se esiste una linea o un piano che possono essere utilizzati per separare i dati in diverse classi in modo univoco &#8211; <strong>e l&#8217;esito \u00e8 binario o dicotomico<\/strong>.<br>Ci\u00f2 significa che la regressione logistica viene solitamente utilizzata per problemi di <strong><em>classificazione binaria <\/em><\/strong>(S\u00ec\/No, Corretto\/Sbagliato, Vero\/Falso, ecc.),<\/p>\n\n\n\n<p>Nel corso di questo post mostrer\u00f2 come eseguire una regressione logistica binomiale per creare un modello di classificazione, al fine di prevedere risposte binarie su un determinato insieme di predittori.<\/p>\n\n\n\n<!--more-->\n\n\n\t\t\t\t<div class=\"wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-8db1afac      \"\n\t\t\t\t\tdata-scroll= \"1\"\n\t\t\t\t\tdata-offset= \"30\"\n\t\t\t\t\tstyle=\"\"\n\t\t\t\t>\n\t\t\t\t<div class=\"uagb-toc__wrap\">\n\t\t\t\t\t\t<div class=\"uagb-toc__title\">\n\t\t\t\t\t\t\tDi cosa parleremo\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"uagb-toc__list-wrap \">\n\t\t\t\t\t\t<ol class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#come-funziona-la-regressione-logistica-e-i-passi-per-costruirla\" class=\"uagb-toc-link__trigger\">Come funziona la regressione logistica e i passi per costruirla<\/a><li class=\"uagb-toc__list\"><a href=\"#un-esempio-in-r-calcolare-la-probabilit\u00e0-di-sopravvivenza-sul-titanic\" class=\"uagb-toc-link__trigger\">Un esempio in R: calcolare la probabilit\u00e0 di sopravvivenza sul Titanic<\/a><li class=\"uagb-toc__list\"><a href=\"#un-po-di-matematica-lequazione-logit\" class=\"uagb-toc-link__trigger\">Un po&#039; di matematica: l&#039;equazione logit<\/a><li class=\"uagb-toc__list\"><a href=\"#tiriamo-le-somme\" class=\"uagb-toc-link__trigger\">Tiriamo le somme<\/a><li class=\"uagb-toc__list\"><a href=\"#risorse-per-approfondire\" class=\"uagb-toc-link__trigger\">Risorse per approfondire<\/a><\/ol>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\n\n\n<h2 class=\"wp-block-heading\">Come funziona la regressione logistica e i passi per costruirla<\/h2>\n\n\n\n<p>La regressione logistica \u00e8 una<strong> tecnica di modellizzazione statistica<\/strong> utilizzata per <strong>prevedere la probabilit\u00e0 di un evento binario<\/strong> (ad esempio, s\u00ec\/no, vero\/falso) <strong>in base a un insieme di variabili indipendenti<\/strong>.<\/p>\n\n\n\n<p>A differenza della <a href=\"https:\/\/www.gironi.it\/blog\/regressione-lineare-semplice\/\" data-type=\"post\" data-id=\"1807\">regressione lineare<\/a>, che \u00e8 utilizzata per prevedere valori continui, la regressione logistica utilizza la funzione logistica per &#8220;modellizzare&#8221; la probabilit\u00e0 dell&#8217;evento osservato.<\/p>\n\n\n\n<p>La regressione logistica utilizza la<strong> funzione logistica<\/strong>, anche conosciuta come <strong><em>sigmoide<\/em><\/strong>, per produrre la probabilit\u00e0 di un evento. <br>La funzione logistica <strong>produce un valore compreso tra 0 e 1<\/strong>, che pu\u00f2 essere interpretato come una probabilit\u00e0. <br>Dopo che il modello \u00e8 stato addestrato, si pu\u00f2 utilizzare per fare previsioni su nuovi dati, fornendo una stima della probabilit\u00e0 di un evento.<\/p>\n\n\n\n<div class=\"wp-block-uagb-image aligncenter uagb-block-c2155627 wp-block-uagb-image--layout-default wp-block-uagb-image--effect-static wp-block-uagb-image--align-center\"><figure class=\"wp-block-uagb-image__figure\"><img decoding=\"async\" srcset=\"https:\/\/www.gironi.it\/blog\/wp-content\/uploads\/2023\/01\/sigmoide.png \" src=\"https:\/\/www.gironi.it\/blog\/wp-content\/uploads\/2023\/01\/sigmoide.png\" alt=\"grafico sigmoide\" class=\"uag-image-2632\" width=\"630\" height=\"401\" title=\"\" loading=\"lazy\"\/><figcaption class=\"uagb-image-caption\">La funzione sigmoide \u00e8 utile per mappare qualsiasi valore previsto di probabilit\u00e0: il valore previsto \u00e8 sempre compreso tra 0 e 1<\/figcaption><\/figure><\/div>\n\n\n\n<p>I passi per costruire una regressione logistica sono i seguenti:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Selezionare e raccogliere i dati<\/strong>: raccogli i dati che desideri utilizzare per prevedere l&#8217;evento binario e seleziona le variabili indipendenti che ritieni pertinenti per la tua analisi.<\/li>\n\n\n\n<li><strong>Pulire e preparare i dati<\/strong>: controlla i dati per eventuali valori mancanti o errati e assicurati che i dati siano adeguatamente formattati per l&#8217;analisi.<\/li>\n\n\n\n<li><strong>Costruire il modello<\/strong>: utilizza la funzione logistica per costruire il modello sui dati di training. La funzione logistica \u00e8 una funzione &#8220;S-shaped&#8221; che restituisce valori compresi tra 0 e 1, che possono essere interpretati come probabilit\u00e0.<\/li>\n\n\n\n<li><strong>Valutare il modello<\/strong>: Utilizza i dati di test per valutare l&#8217;accuratezza del modello. Ci sono varie metriche che si possono utilizzare per la valutazione, come l&#8217;accuratezza, la precisione e il recall.<\/li>\n\n\n\n<li><strong>Interpretare i risultati<\/strong>: analizza i coefficienti del modello per capire l&#8217;importanza relativa delle variabili indipendenti e per capire meglio come i valori delle variabili influiscono sulla probabilit\u00e0 dell&#8217;evento.<\/li>\n\n\n\n<li><strong>Utilizzare il modello per fare previsioni<\/strong>: utilizza il modello per fare previsioni sui nuovi dati in base alle variabili indipendenti fornite.<\/li>\n<\/ol>\n\n\n\n<p>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 <em>overfitting<\/em>, oppure utilizzare la <em>cross-validation<\/em> per avere una stima pi\u00f9 affidabile dell&#8217;accuratezza del modello.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Un esempio in R: calcolare la probabilit\u00e0 di sopravvivenza sul Titanic<\/h2>\n\n\n\n<p>Pe fare un esempio pratico molto semplificato, ho scaricato un dataset tra i pi\u00f9 noti e usati, quello relativo ai passeggeri del Titanic, che contiene informazioni sui passeggeri del famoso naufragio del Titanic, tra cui et\u00e0, sesso, classe sociale e se i passeggeri sopravvissero o meno all&#8217;incidente.<br><br>Io l&#8217;ho preso da <a href=\"https:\/\/raw.githubusercontent.com\/datasciencedojo\/datasets\/master\/titanic.csv\" target=\"_blank\" rel=\"noopener\">questo indirizzo<\/a> e l&#8217;ho salvato in locale come <em>titanic.csv<\/em><\/p>\n\n\n\n<p>nb: il dataset Titanic \u00e8 disponibile anche nella biblioteca di dati di Kaggle (<a href=\"https:\/\/www.kaggle.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">kaggle.com<\/a>) e nella raccolta di dataset UCI Machine Learning (<a href=\"http:\/\/archive.ics.uci.edu\/ml\/datasets.php\" target=\"_blank\" rel=\"noreferrer noopener\">archive.ics.uci.edu\/ml\/datasets.php<\/a>).<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/www.gironi.it\/blog\/wp-content\/uploads\/2023\/03\/eb2df3e4-514b-423a-86be-9eb08458d104-1024x1024.jpeg\" alt=\"\" class=\"wp-image-2920\" srcset=\"https:\/\/www.gironi.it\/blog\/wp-content\/uploads\/2023\/03\/eb2df3e4-514b-423a-86be-9eb08458d104.jpeg 1024w, https:\/\/www.gironi.it\/blog\/wp-content\/uploads\/2023\/03\/eb2df3e4-514b-423a-86be-9eb08458d104-300x300.jpeg 300w, https:\/\/www.gironi.it\/blog\/wp-content\/uploads\/2023\/03\/eb2df3e4-514b-423a-86be-9eb08458d104-150x150.jpeg 150w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n<\/div>\n\n\n<p>Non ho bisogno in questo caso di pulire i dati, perch\u00e8 utilizzo un set di dati &#8220;sicuro&#8221; e ampiamente testato. <br>Ovviamente, in un caso d&#8217;uso &#8220;reale&#8221; i dati andranno accuratamente esaminati, studiati, e &#8220;trattati&#8221; in fase preliminare\u2026<\/p>\n\n\n\n<p>Ecco allora un codice d&#8217;esempio in R:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># Carico le librerie\nlibrary(ggplot2)\nlibrary(caret)\n\n# Carico i dati nel dataset titanic\n# Sostituisco il percorso con quello nel mio pc\ntitanic &lt;- read.csv(\"\/ilmiopath\/titanic.csv\")\n\n# Visualizzo le prime 10 righe\nhead(titanic, 10)\n\n# Creo le variabili dummy per i campi categorici\ntitanic$Sex &lt;- as.factor(titanic$Sex)\ntitanic$Survived &lt;- as.factor(titanic$Survived)\n\n# Creo un model di regressione logistica\nmodel &lt;- glm(Survived ~ Pclass + Sex + Age + SibSp + Parch + Fare + Embarked, data = titanic, family = binomial(link = \"logit\"))\n\n# Mostro il modello\nsummary(model)\n\n\n# Come predire la probabilita' di sopravvivenza di un caso di esempio\nexample &lt;- data.frame(Pclass = 3, Sex = \"male\", Age = 32, SibSp = 0, Parch = 0, Fare = 8.05, Embarked = \"S\")\npredict(model, newdata = example, type = \"response\")\n\n# Visualizzo graficamente le probabilita' di sopravvivenza in base alla classe\nggplot(titanic, aes(x = Pclass, fill = factor(Survived))) + \n  geom_bar(position = \"fill\") +\n  labs(x = \"Classe\", y = \"Probabilita' di sopravvivenza\") +\n  scale_fill_discrete(name = \"Sopravvissuto\", labels = c(\"No\", \"Si\"))<\/pre>\n\n\n\n<p>In questo caso, notiamo come un uomo di 32 anni in terza classe avrebbe avuto l&#8217;8,5% circa di probabilit\u00e0 di sopravvivere.<br>Graficamente, abbiamo poi modo di visualizzare la probabilit\u00e0 di sopravvivenza in base alla classe del posto.<\/p>\n\n\n\n<div class=\"wp-block-uagb-image uagb-block-6e99849a wp-block-uagb-image--layout-default wp-block-uagb-image--effect-static wp-block-uagb-image--align-none\"><figure class=\"wp-block-uagb-image__figure\"><img decoding=\"async\" srcset=\"https:\/\/www.gironi.it\/blog\/wp-content\/uploads\/2023\/01\/sopravvivenza-classe.png \" src=\"https:\/\/www.gironi.it\/blog\/wp-content\/uploads\/2023\/01\/sopravvivenza-classe.png\" alt=\"grafico che rappresenta la probabilit\u00e0 di sopravvivenza al naufragio del Titanic in base alla Classe del viaggio\" class=\"uag-image-2642\" width=\"\" height=\"\" title=\"\" loading=\"lazy\"\/><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Un po&#8217; di matematica: l&#8217;equazione logit<\/h2>\n\n\n\n<p>Come abbiamo visto, l&#8217;equazione logit \u00e8 un&#8217;equazione matematica che viene usata nella regressione logistica per descrivere la relazione tra la variabile dipendente (che pu\u00f2 assumere solo valori binari) e una o pi\u00f9 variabili indipendenti (chiamate anche predittori o covariate).<br><br>In generale la forma dell&#8217;equazione logit \u00e8 la seguente:<\/p>\n\n\n\n\\(\nlogit(p) = \\ln\\left(\\frac{p}{1-p}\\right) = b_0 + b_1x_1 + b_2x_2 + &#8230; + b_n*x_n \\\\ \\\\\n\\)\n\n\n\n<p>dove:<br><br><strong>p<\/strong> \u00e8 la probabilit\u00e0 che la variabile dipendente assuma il valore &#8220;1&#8221;<br><strong>logit(p)<\/strong> \u00e8 chiamato logaritmo del rapporto di probabilit\u00e0 (<em>log-odds<\/em>)<br><strong>b_0, b_1, b_2, \u2026, b_n<\/strong> sono i <strong>coefficienti del modello<\/strong> (chiamati anche pesi o parametri)<br><strong>x_1, x_2, \u2026, x_n<\/strong> sono le <strong>variabili indipendenti<\/strong> (predittori o covariate)<\/p>\n\n\n\n<p class=\"has-light-gray-background-color has-background\">In sintesi, l&#8217;equazione logit descrive come la probabilit\u00e0 di un evento (es. una risposta binaria) dipenda dai valori delle variabili indipendenti, attraverso i pesi del modello.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Tiriamo le somme<\/h2>\n\n\n\n<p><strong>La regressione logistica \u00e8 un potente modello statistico che pu\u00f2 aiutare a prevedere il risultato di un evento in base a un insieme di variabili indipendenti.<\/strong> E&#8217; facile da usare ed interpretare, e pu\u00f2 essere utilizzato in molti ambiti, dalla medicina alla finanza.<\/p>\n\n\n\n<p><strong>Rappresenta uno strumento efficace per risolvere problemi di classificazione binaria<\/strong> perch\u00e9 consente di modellare la relazione tra la variabile dipendente binaria e una o pi\u00f9 variabili indipendenti.<\/p>\n\n\n\n<p>Consente di:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Modellare la relazione tra una variabile dipendente binaria e una o pi\u00f9 variabili indipendenti.<\/li>\n\n\n\n<li>Prevedere la probabilit\u00e0 che la variabile dipendente assuma un valore specifico (es. 1 o 0) in base ai valori delle variabili indipendenti.<\/li>\n\n\n\n<li>Utilizzare queste previsioni di probabilit\u00e0 per classificare nuovi casi in base a una soglia predefinita (ad esempio, se la probabilit\u00e0 di un caso di essere classificato come 1 \u00e8 superiore a 0.5, allora viene classificato come 1, altrimenti come 0)<\/li>\n\n\n\n<li>Interpretare i pesi del modello (coefficienti) per comprendere quali variabili indipendenti sono pi\u00f9 importanti per la classificazione.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Risorse per approfondire<\/h2>\n\n\n\n<p>I titoli e le risorse a disposizione sono innumerevoli. Qualche segnalazione:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>&#8220;<a href=\"https:\/\/www.amazon.it\/David-Hosmer-Stanley-Lemeshow-probability\/dp\/B004GMJ022\" target=\"_blank\" rel=\"noreferrer noopener\">Applied Logistic Regression<\/a>&#8221; di David W. Hosmer, Jr., Stanley Lemeshow, Rodney X. Sturdivant (in lingua inglese)<\/li>\n\n\n\n<li>&#8220;<a href=\"https:\/\/www.amazon.it\/Introduction-Statistical-Learning-Applications\/dp\/1461471370\" target=\"_blank\" rel=\"noreferrer noopener\">Introduction to Statistical Learning<\/a>&#8221; di Gareth James, Daniela Witten, Trevor <\/li>\n\n\n\n<li><a href=\"https:\/\/www.analyticsvidhya.com\/blog\/2015\/10\/basics-logistic-regression\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.analyticsvidhya.com\/blog\/2015\/10\/basics-logistic-regression\/<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/machinelearningmastery.com\/logistic-regression-for-machine-learning\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/machinelearningmastery.com\/logistic-regression-for-machine-learning\/<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>La regressione logistica \u00e8 un modello statistico utilizzato per prevedere la probabilit\u00e0 di un evento in base a un insieme di variabili indipendenti.E&#8217; particolarmente utile quando si vuole classificare un evento come appartenente o meno ad una determinata categoria (ad esempio, un cliente che acquister\u00e0 o meno un prodotto, un paziente che svilupper\u00e0 o meno &hellip; <a href=\"https:\/\/www.gironi.it\/blog\/la-regressione-logistica\/\" class=\"more-link\">Leggi tutto<span class=\"screen-reader-text\"> &#8220;Regressione Logistica: prevedere il risultato di un evento&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","footnotes":""},"categories":[635,629],"tags":[],"class_list":["post-2631","post","type-post","status-publish","format-standard","hentry","category-ai-it","category-statistica-it"],"lang":"it","translations":{"it":2631,"en":3280},"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"post-thumbnail":false},"uagb_author_info":{"display_name":"paolo","author_link":"https:\/\/www.gironi.it\/blog\/author\/paolo\/"},"uagb_comment_info":5,"uagb_excerpt":"La regressione logistica \u00e8 un modello statistico utilizzato per prevedere la probabilit\u00e0 di un evento in base a un insieme di variabili indipendenti.E&#8217; particolarmente utile quando si vuole classificare un evento come appartenente o meno ad una determinata categoria (ad esempio, un cliente che acquister\u00e0 o meno un prodotto, un paziente che svilupper\u00e0 o meno&hellip;","_links":{"self":[{"href":"https:\/\/www.gironi.it\/blog\/wp-json\/wp\/v2\/posts\/2631","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gironi.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gironi.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gironi.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gironi.it\/blog\/wp-json\/wp\/v2\/comments?post=2631"}],"version-history":[{"count":6,"href":"https:\/\/www.gironi.it\/blog\/wp-json\/wp\/v2\/posts\/2631\/revisions"}],"predecessor-version":[{"id":3279,"href":"https:\/\/www.gironi.it\/blog\/wp-json\/wp\/v2\/posts\/2631\/revisions\/3279"}],"wp:attachment":[{"href":"https:\/\/www.gironi.it\/blog\/wp-json\/wp\/v2\/media?parent=2631"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gironi.it\/blog\/wp-json\/wp\/v2\/categories?post=2631"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gironi.it\/blog\/wp-json\/wp\/v2\/tags?post=2631"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}