{"id":3062,"date":"2023-07-19T09:55:30","date_gmt":"2023-07-19T09:55:30","guid":{"rendered":"https:\/\/statorials.org\/it\/attaccante\/"},"modified":"2023-07-19T09:55:30","modified_gmt":"2023-07-19T09:55:30","slug":"attaccante","status":"publish","type":"post","link":"https:\/\/statorials.org\/it\/attaccante\/","title":{"rendered":"Come utilizzare smote per dati sbilanciati in r (con esempio)"},"content":{"rendered":"<p><\/p>\n<hr>\n<p><span style=\"color: #000000;\"><span style=\"color: #000000;\">Spesso quando si lavora con<a href=\"https:\/\/statorials.org\/it\/regressione-vs.-classificazione\/\" target=\"_blank\" rel=\"noopener\">algoritmi di classificazione<\/a> dell&#8217;apprendimento automatico, le classi nel set di dati saranno sbilanciate.<\/span><\/span><\/p>\n<p> <span style=\"color: #000000;\">Per esempio:<\/span><\/p>\n<ul>\n<li> <span style=\"color: #000000;\">Un set di dati contenente informazioni sull&#8217;eventuale arruolamento o meno di giocatori universitari nell&#8217;NBA potrebbe avere il 98% dei giocatori non arruolati e il 2% in fase di arruolamento.<\/span><\/li>\n<li> <span style=\"color: #000000;\">Un set di dati contenente informazioni sulla presenza o meno di cancro nei pazienti potrebbe contenere il 99% dei pazienti senza cancro e solo l\u20191% con cancro.<\/span><\/li>\n<li> <span style=\"color: #000000;\">Un set di dati contenente informazioni sulle frodi bancarie potrebbe contenere il 96% di transazioni legittime e il 4% di transazioni fraudolente.<\/span><\/li>\n<\/ul>\n<p> <span style=\"color: #000000;\">A causa di queste classi sbilanciate, il modello predittivo costruito potrebbe non funzionare bene sulla classe minoritaria.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Peggio ancora, la classe minoritaria \u00e8 spesso quella che pi\u00f9 desideriamo prevedere.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Un modo per risolvere questo problema di squilibrio \u00e8 utilizzare <strong>la tecnica del sovracampionamento delle minoranze sintetiche<\/strong> , spesso abbreviata <strong>SMOTE<\/strong> .<\/span><\/p>\n<p> <span style=\"color: #000000;\">Questa tecnica prevede la creazione di un nuovo set di dati sovracampionando le osservazioni della classe minoritaria, che produce un set di dati con classi pi\u00f9 bilanciate.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Il modo pi\u00f9 semplice per utilizzare SMOTE in R \u00e8 utilizzare la funzione <strong>SMOTE()<\/strong> dal pacchetto <strong>DMwR<\/strong> .<\/span><\/p>\n<p> <span style=\"color: #000000;\"><span style=\"color: #000000;\">Questa funzione utilizza la seguente sintassi di base:<\/span><\/span><\/p>\n<pre style=\"background-color: #ececec; font-size: 15px;\"> <strong>SMOTE(form, data, perc. <span style=\"color: #3366ff;\">over<\/span> = <span style=\"color: #008000;\">200<\/span> , perc. <span style=\"color: #3366ff;\">under<\/span> = <span style=\"color: #008000;\">200<\/span> , ...)\n<\/strong><\/pre>\n<p> <span style=\"color: #000000;\">Oro:<\/span><\/p>\n<ul>\n<li> <span style=\"color: #000000;\"><strong>form<\/strong> : una formula che descrive il modello che desideri adattare<\/span><\/li>\n<li> <span style=\"color: #000000;\"><strong>data<\/strong> : nome del frame di dati<\/span><\/li>\n<li> <span style=\"color: #000000;\"><strong>perc.over<\/strong> : numero che determina quanti casi aggiuntivi della classe minoritaria vengono generati<\/span><\/li>\n<li> <span style=\"color: #000000;\"><strong>perc.under<\/strong> : numero che determina quanti casi aggiuntivi della classe maggioritaria vengono generati<\/span><\/li>\n<\/ul>\n<p> <span style=\"color: #000000;\">L&#8217;esempio seguente mostra come utilizzare questa funzione nella pratica.<\/span><\/p>\n<h3> <span style=\"color: #000000;\"><strong>Esempio: come utilizzare SMOTE in R<\/strong><\/span><\/h3>\n<p> <span style=\"color: #000000;\">Supponiamo di avere il seguente set di dati con 100 <a href=\"https:\/\/statorials.org\/it\/osservazione-in-statistica\/\" target=\"_blank\" rel=\"noopener\">osservazioni<\/a> in R in cui 90 hanno una classe &#8220;S\u00ec&#8221; e 10 hanno una classe &#8220;No&#8221; per la variabile di risposta:<\/span><\/p>\n<pre style=\"background-color: #ececec; font-size: 15px;\"> <strong><span style=\"color: #008080;\">#make this example reproducible\n<\/span>set. <span style=\"color: #3366ff;\">seed<\/span> ( <span style=\"color: #008000;\">0<\/span> )\n\n<span style=\"color: #008080;\">#create data frame with one response variable and two predictor variables\n<\/span>df &lt;- data. <span style=\"color: #3366ff;\">frame<\/span> (y=rep(as. <span style=\"color: #3366ff;\">factor<\/span> (c(' <span style=\"color: #ff0000;\">Yes<\/span> ', ' <span style=\"color: #ff0000;\">No<\/span> ')), times=c( <span style=\"color: #008000;\">90<\/span> , <span style=\"color: #008000;\">10<\/span> )),\n                 x1=rnorm( <span style=\"color: #008000;\">100<\/span> ),\n                 x2=rnorm( <span style=\"color: #008000;\">100<\/span> ))\n\n<span style=\"color: #008080;\">#view first six rows of data frame\n<\/span>head(df)\n\n    y x1 x2\n1 Yes 1.2629543 0.7818592\n2 Yes -0.3262334 -0.7767766\n3 Yes 1.3297993 -0.6159899\n4 Yes 1.2724293 0.0465803\n5 Yes 0.4146414 -1.1303858\n6 Yes -1.5399500 0.5767188\n \n<span style=\"color: #008080;\">#view distribution of response variable\n<\/span>table(df$y)\n\n Drowned \n 10 90<\/strong><\/pre>\n<p> <span style=\"color: #000000;\"><span style=\"color: #000000;\">Questo \u00e8 un classico esempio di set di dati sbilanciato perch\u00e9 la variabile di risposta che stiamo prevedendo ha 90 osservazioni con una classe &#8220;S\u00ec&#8221; e solo 10 osservazioni con una classe &#8220;No&#8221;.<\/span><\/span><\/p>\n<p> <span style=\"color: #000000;\">Per creare un set di dati pi\u00f9 bilanciato, possiamo utilizzare la funzione <strong>SMOTE()<\/strong> dal pacchetto <strong>DMwR<\/strong> :<\/span><\/p>\n<pre style=\"background-color: #ececec; font-size: 15px;\"> <strong><span style=\"color: #008000;\">library<\/span> ( <span style=\"color: #000000;\">DMwR)\n\n<\/span><span style=\"color: #008080;\">#use SMOTE to create new dataset that is more balanced\n<\/span>new_df &lt;- SMOTE(y ~ ., df, perc. <span style=\"color: #3366ff;\">over<\/span> = <span style=\"color: #008000;\">2000<\/span> , perc. <span style=\"color: #3366ff;\">under<\/span> = <span style=\"color: #008000;\">400<\/span> )\n\n<span style=\"color: #008080;\">#view distribution of response variable in new dataset\n<\/span>table(new_df$y)\n\n Drowned \n210,800\n<\/strong><\/pre>\n<p> <span style=\"color: #000000;\">Il set di dati risultante contiene 210 osservazioni con &#8220;No&#8221; come classe e 800 osservazioni con &#8220;S\u00ec&#8221; come classe.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Ecco esattamente come la funzione SMOTE ha prodotto questo nuovo set di dati:<\/span><\/p>\n<ul>\n<li> <span style=\"color: #000000;\">L&#8217;argomento <strong>perc.over<\/strong> specificava che volevamo aggiungere 2000\/100 (o 20) volte il numero di osservazioni di minoranza esistenti al set di dati. Poich\u00e9 nel set di dati originale esistevano 10 osservazioni, abbiamo aggiunto 20*10 = <strong>200 ulteriori osservazioni minoritarie<\/strong> .<\/span><\/li>\n<li> <span style=\"color: #000000;\">L&#8217;argomento <strong>perc.under<\/strong> specificava che volevamo rendere il numero di osservazioni della maggioranza pari a 400\/100 (o 4) volte il numero di osservazioni di minoranza aggiunte alle osservazioni di minoranza esistenti. Poich\u00e9 sono state aggiunte ulteriori 200 osservazioni minoritarie, abbiamo reso il numero di osservazioni maggioritarie pari a 200 * 4 = <strong>800 osservazioni maggioritarie<\/strong> .<\/span><\/li>\n<\/ul>\n<p> <span style=\"color: #000000;\">Il risultato finale \u00e8 un set di dati che contiene ancora pi\u00f9 classi maggioritarie, ma \u00e8 comunque pi\u00f9 equilibrato rispetto al set di dati originale.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Ora puoi adattare l&#8217;algoritmo di classificazione di tua scelta a questo nuovo set di dati, che dovrebbe funzionare meglio sulla classe di minoranza poich\u00e9 ci sono pi\u00f9 osservazioni dalla classe di minoranza in questo nuovo set di dati.<\/span><\/p>\n<p> <span style=\"color: #000000;\"><strong>Nota<\/strong> : sentiti libero di giocare con gli argomenti <strong>perc.over<\/strong> e <strong>perc.under<\/strong> nella funzione SMOTE per ottenere un set di dati adatto alle tue esigenze.<\/span><\/p>\n<h3> <span style=\"color: #000000;\"><strong>Risorse addizionali<\/strong><\/span><\/h3>\n<p> <span style=\"color: #000000;\">I seguenti tutorial spiegano come eseguire altre attivit\u00e0 comuni in R:<\/span><\/p>\n<p> <a href=\"https:\/\/statorials.org\/it\/tabella-riassuntiva-a-r\/\" target=\"_blank\" rel=\"noopener\">Come creare tabelle di riepilogo in R<\/a><br \/> <a href=\"https:\/\/statorials.org\/it\/come-normalizzare-i-dati-in-r\/\" target=\"_blank\" rel=\"noopener\">Come normalizzare i dati in R<\/a><br \/> <a href=\"https:\/\/statorials.org\/it\/rimuovere-i-valori-anomali-r\/\" target=\"_blank\" rel=\"noopener\">Come rimuovere gli outlier in R<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Spesso quando si lavora conalgoritmi di classificazione dell&#8217;apprendimento automatico, le classi nel set di dati saranno sbilanciate. Per esempio: Un set di dati contenente informazioni sull&#8217;eventuale arruolamento o meno di giocatori universitari nell&#8217;NBA potrebbe avere il 98% dei giocatori non arruolati e il 2% in fase di arruolamento. Un set di dati contenente informazioni sulla [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Come utilizzare SMOTE per dati sbilanciati in R (con esempio) - Statorials<\/title>\n<meta name=\"description\" content=\"Questo tutorial spiega come usare SMOTE per dati sbilanciati in R, incluso un esempio completo.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/statorials.org\/it\/attaccante\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Come utilizzare SMOTE per dati sbilanciati in R (con esempio) - Statorials\" \/>\n<meta property=\"og:description\" content=\"Questo tutorial spiega come usare SMOTE per dati sbilanciati in R, incluso un esempio completo.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/statorials.org\/it\/attaccante\/\" \/>\n<meta property=\"og:site_name\" content=\"Statorials\" \/>\n<meta property=\"article:published_time\" content=\"2023-07-19T09:55:30+00:00\" \/>\n<meta name=\"author\" content=\"Benjamin anderson\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Benjamin anderson\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/statorials.org\/it\/attaccante\/\",\"url\":\"https:\/\/statorials.org\/it\/attaccante\/\",\"name\":\"Come utilizzare SMOTE per dati sbilanciati in R (con esempio) - Statorials\",\"isPartOf\":{\"@id\":\"https:\/\/statorials.org\/it\/#website\"},\"datePublished\":\"2023-07-19T09:55:30+00:00\",\"dateModified\":\"2023-07-19T09:55:30+00:00\",\"author\":{\"@id\":\"https:\/\/statorials.org\/it\/#\/schema\/person\/0896f191fb9fb019f2cd8623112cb3ae\"},\"description\":\"Questo tutorial spiega come usare SMOTE per dati sbilanciati in R, incluso un esempio completo.\",\"breadcrumb\":{\"@id\":\"https:\/\/statorials.org\/it\/attaccante\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/statorials.org\/it\/attaccante\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/statorials.org\/it\/attaccante\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Casa\",\"item\":\"https:\/\/statorials.org\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Come utilizzare smote per dati sbilanciati in r (con esempio)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/statorials.org\/it\/#website\",\"url\":\"https:\/\/statorials.org\/it\/\",\"name\":\"Statorials\",\"description\":\"La tua guida all&#039;alfabetizzazione statistica!\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/statorials.org\/it\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/statorials.org\/it\/#\/schema\/person\/0896f191fb9fb019f2cd8623112cb3ae\",\"name\":\"Benjamin anderson\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/statorials.org\/it\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/statorials.org\/it\/wp-content\/uploads\/2023\/10\/Dr.-Benjamin-Anderson-96x96.jpg\",\"contentUrl\":\"https:\/\/statorials.org\/it\/wp-content\/uploads\/2023\/10\/Dr.-Benjamin-Anderson-96x96.jpg\",\"caption\":\"Benjamin anderson\"},\"description\":\"Ciao, sono Benjamin, un professore di statistica in pensione diventato insegnante dedicato di Statorials. Con una vasta esperienza e competenza nel campo della statistica, sono ansioso di condividere le mie conoscenze per potenziare gli studenti attraverso Statorials. Scopri di pi\u00f9\",\"sameAs\":[\"https:\/\/statorials.org\/it\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Come utilizzare SMOTE per dati sbilanciati in R (con esempio) - Statorials","description":"Questo tutorial spiega come usare SMOTE per dati sbilanciati in R, incluso un esempio completo.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/statorials.org\/it\/attaccante\/","og_locale":"it_IT","og_type":"article","og_title":"Come utilizzare SMOTE per dati sbilanciati in R (con esempio) - Statorials","og_description":"Questo tutorial spiega come usare SMOTE per dati sbilanciati in R, incluso un esempio completo.","og_url":"https:\/\/statorials.org\/it\/attaccante\/","og_site_name":"Statorials","article_published_time":"2023-07-19T09:55:30+00:00","author":"Benjamin anderson","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Benjamin anderson","Est. reading time":"3 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/statorials.org\/it\/attaccante\/","url":"https:\/\/statorials.org\/it\/attaccante\/","name":"Come utilizzare SMOTE per dati sbilanciati in R (con esempio) - Statorials","isPartOf":{"@id":"https:\/\/statorials.org\/it\/#website"},"datePublished":"2023-07-19T09:55:30+00:00","dateModified":"2023-07-19T09:55:30+00:00","author":{"@id":"https:\/\/statorials.org\/it\/#\/schema\/person\/0896f191fb9fb019f2cd8623112cb3ae"},"description":"Questo tutorial spiega come usare SMOTE per dati sbilanciati in R, incluso un esempio completo.","breadcrumb":{"@id":"https:\/\/statorials.org\/it\/attaccante\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/statorials.org\/it\/attaccante\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/statorials.org\/it\/attaccante\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Casa","item":"https:\/\/statorials.org\/it\/"},{"@type":"ListItem","position":2,"name":"Come utilizzare smote per dati sbilanciati in r (con esempio)"}]},{"@type":"WebSite","@id":"https:\/\/statorials.org\/it\/#website","url":"https:\/\/statorials.org\/it\/","name":"Statorials","description":"La tua guida all&#039;alfabetizzazione statistica!","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/statorials.org\/it\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"it-IT"},{"@type":"Person","@id":"https:\/\/statorials.org\/it\/#\/schema\/person\/0896f191fb9fb019f2cd8623112cb3ae","name":"Benjamin anderson","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/statorials.org\/it\/#\/schema\/person\/image\/","url":"https:\/\/statorials.org\/it\/wp-content\/uploads\/2023\/10\/Dr.-Benjamin-Anderson-96x96.jpg","contentUrl":"https:\/\/statorials.org\/it\/wp-content\/uploads\/2023\/10\/Dr.-Benjamin-Anderson-96x96.jpg","caption":"Benjamin anderson"},"description":"Ciao, sono Benjamin, un professore di statistica in pensione diventato insegnante dedicato di Statorials. Con una vasta esperienza e competenza nel campo della statistica, sono ansioso di condividere le mie conoscenze per potenziare gli studenti attraverso Statorials. Scopri di pi\u00f9","sameAs":["https:\/\/statorials.org\/it"]}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"_links":{"self":[{"href":"https:\/\/statorials.org\/it\/wp-json\/wp\/v2\/posts\/3062"}],"collection":[{"href":"https:\/\/statorials.org\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/statorials.org\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/statorials.org\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/statorials.org\/it\/wp-json\/wp\/v2\/comments?post=3062"}],"version-history":[{"count":0,"href":"https:\/\/statorials.org\/it\/wp-json\/wp\/v2\/posts\/3062\/revisions"}],"wp:attachment":[{"href":"https:\/\/statorials.org\/it\/wp-json\/wp\/v2\/media?parent=3062"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/statorials.org\/it\/wp-json\/wp\/v2\/categories?post=3062"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/statorials.org\/it\/wp-json\/wp\/v2\/tags?post=3062"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}