{"id":3061,"date":"2023-07-19T09:55:30","date_gmt":"2023-07-19T09:55:30","guid":{"rendered":"https:\/\/statorials.org\/pt\/atacante\/"},"modified":"2023-07-19T09:55:30","modified_gmt":"2023-07-19T09:55:30","slug":"atacante","status":"publish","type":"post","link":"https:\/\/statorials.org\/pt\/atacante\/","title":{"rendered":"Como usar smote para dados desequilibrados em r (com exemplo)"},"content":{"rendered":"<p><\/p>\n<hr>\n<p><span style=\"color: #000000;\"><span style=\"color: #000000;\">Muitas vezes, ao trabalhar com <a href=\"https:\/\/statorials.org\/pt\/regressao-vs.-classificacao\/\" target=\"_blank\" rel=\"noopener\">algoritmos de classifica\u00e7\u00e3o<\/a> de aprendizado de m\u00e1quina, as classes no conjunto de dados ficam desequilibradas.<\/span><\/span><\/p>\n<p> <span style=\"color: #000000;\">Por exemplo:<\/span><\/p>\n<ul>\n<li> <span style=\"color: #000000;\">Um conjunto de dados contendo informa\u00e7\u00f5es sobre se os jogadores universit\u00e1rios s\u00e3o ou n\u00e3o convocados para a NBA pode ter 98% dos jogadores n\u00e3o convocados e 2% sendo convocados.<\/span><\/li>\n<li> <span style=\"color: #000000;\">Um conjunto de dados contendo informa\u00e7\u00f5es sobre se os pacientes t\u00eam ou n\u00e3o c\u00e2ncer pode conter 99% dos pacientes sem c\u00e2ncer e apenas 1% com c\u00e2ncer.<\/span><\/li>\n<li> <span style=\"color: #000000;\">Um conjunto de dados contendo informa\u00e7\u00f5es de fraude banc\u00e1ria pode conter 96% de transa\u00e7\u00f5es leg\u00edtimas e 4% de transa\u00e7\u00f5es fraudulentas.<\/span><\/li>\n<\/ul>\n<p> <span style=\"color: #000000;\">Devido a essas classes desequilibradas, o modelo preditivo constru\u00eddo pode n\u00e3o funcionar bem na classe minorit\u00e1ria.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Pior ainda, a classe minorit\u00e1ria \u00e9 muitas vezes aquela que mais queremos prever.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Uma maneira de resolver esse problema de desequil\u00edbrio \u00e9 usar <strong>a t\u00e9cnica de sobreamostragem minorit\u00e1ria sint\u00e9tica<\/strong> , geralmente abreviada como <strong>SMOTE<\/strong> .<\/span><\/p>\n<p> <span style=\"color: #000000;\">Esta t\u00e9cnica envolve a cria\u00e7\u00e3o de um novo conjunto de dados por meio da sobreamostragem de observa\u00e7\u00f5es da classe minorit\u00e1ria, o que produz um conjunto de dados com classes mais equilibradas.<\/span><\/p>\n<p> <span style=\"color: #000000;\">A maneira mais f\u00e1cil de usar SMOTE em R \u00e9 usar a fun\u00e7\u00e3o <strong>SMOTE()<\/strong> do pacote <strong>DMwR<\/strong> .<\/span><\/p>\n<p> <span style=\"color: #000000;\"><span style=\"color: #000000;\">Esta fun\u00e7\u00e3o usa a seguinte sintaxe b\u00e1sica:<\/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;\">Ouro:<\/span><\/p>\n<ul>\n<li> <span style=\"color: #000000;\"><strong>form<\/strong> : Uma f\u00f3rmula que descreve o modelo que voc\u00ea deseja adaptar<\/span><\/li>\n<li> <span style=\"color: #000000;\"><strong>data<\/strong> : nome do quadro de dados<\/span><\/li>\n<li> <span style=\"color: #000000;\"><strong>perc.over<\/strong> : N\u00famero que determina quantos casos adicionais da classe minorit\u00e1ria s\u00e3o gerados<\/span><\/li>\n<li> <span style=\"color: #000000;\"><strong>perc.under<\/strong> : N\u00famero que determina quantos casos adicionais da classe majorit\u00e1ria s\u00e3o gerados<\/span><\/li>\n<\/ul>\n<p> <span style=\"color: #000000;\">O exemplo a seguir mostra como usar esta fun\u00e7\u00e3o na pr\u00e1tica.<\/span><\/p>\n<h3> <span style=\"color: #000000;\"><strong>Exemplo: como usar SMOTE em R<\/strong><\/span><\/h3>\n<p> <span style=\"color: #000000;\">Suponha que temos o seguinte conjunto de dados com 100 <a href=\"https:\/\/statorials.org\/pt\/observacao-em-estatisticas\/\" target=\"_blank\" rel=\"noopener\">observa\u00e7\u00f5es<\/a> em R em que 90 t\u00eam uma classe \u201cSim\u201d e 10 t\u00eam uma classe \u201cN\u00e3o\u201d para a vari\u00e1vel de resposta:<\/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;\">Este \u00e9 um exemplo cl\u00e1ssico de conjunto de dados desequilibrado porque a vari\u00e1vel de resposta que estamos prevendo tem 90 observa\u00e7\u00f5es com classe \u201cSim\u201d e apenas 10 observa\u00e7\u00f5es com classe \u201cN\u00e3o\u201d.<\/span><\/span><\/p>\n<p> <span style=\"color: #000000;\">Para criar um conjunto de dados mais balanceado, podemos usar a fun\u00e7\u00e3o <strong>SMOTE()<\/strong> do pacote <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;\">O conjunto de dados resultante cont\u00e9m 210 observa\u00e7\u00f5es com \u201cN\u00e3o\u201d como classe e 800 observa\u00e7\u00f5es com \u201cSim\u201d como classe.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Veja exatamente como a fun\u00e7\u00e3o SMOTE produziu esse novo conjunto de dados:<\/span><\/p>\n<ul>\n<li> <span style=\"color: #000000;\">O argumento <strong>perc.over<\/strong> especificou que quer\u00edamos adicionar 2.000\/100 (ou 20) vezes o n\u00famero de observa\u00e7\u00f5es minorit\u00e1rias existentes ao conjunto de dados. Como existiam 10 observa\u00e7\u00f5es no conjunto de dados original, adicionamos 20*10 = <strong>200 observa\u00e7\u00f5es minorit\u00e1rias adicionais<\/strong> .<\/span><\/li>\n<li> <span style=\"color: #000000;\">O argumento <strong>perc.under<\/strong> especificou que quer\u00edamos fazer com que o n\u00famero de observa\u00e7\u00f5es majorit\u00e1rias fosse igual a 400\/100 (ou 4) vezes o n\u00famero de observa\u00e7\u00f5es minorit\u00e1rias adicionadas \u00e0s observa\u00e7\u00f5es minorit\u00e1rias existentes. Como foram adicionadas 200 observa\u00e7\u00f5es minorit\u00e1rias adicionais, tornamos o n\u00famero de observa\u00e7\u00f5es majorit\u00e1rias igual a 200 * 4 = <strong>800 observa\u00e7\u00f5es majorit\u00e1rias<\/strong> .<\/span><\/li>\n<\/ul>\n<p> <span style=\"color: #000000;\">O resultado final \u00e9 um conjunto de dados que ainda cont\u00e9m mais classes majorit\u00e1rias, mas ainda \u00e9 mais equilibrado do que o conjunto de dados original.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Agora voc\u00ea pode adaptar o algoritmo de classifica\u00e7\u00e3o de sua escolha a este novo conjunto de dados, que dever\u00e1 ter melhor desempenho na classe minorit\u00e1ria, uma vez que h\u00e1 mais observa\u00e7\u00f5es da classe minorit\u00e1ria neste novo conjunto de dados.<\/span><\/p>\n<p> <span style=\"color: #000000;\"><strong>Nota<\/strong> : Sinta-se \u00e0 vontade para brincar com os argumentos <strong>perc.over<\/strong> e <strong>perc.under<\/strong> na fun\u00e7\u00e3o SMOTE para obter um conjunto de dados que atenda \u00e0s suas necessidades.<\/span><\/p>\n<h3> <span style=\"color: #000000;\"><strong>Recursos adicionais<\/strong><\/span><\/h3>\n<p> <span style=\"color: #000000;\">Os tutoriais a seguir explicam como realizar outras tarefas comuns em R:<\/span><\/p>\n<p> <a href=\"https:\/\/statorials.org\/pt\/tabela-de-resumo-em-r\/\" target=\"_blank\" rel=\"noopener\">Como criar tabelas de resumo em R<\/a><br \/> <a href=\"https:\/\/statorials.org\/pt\/como-normalizar-dados-em-r\/\" target=\"_blank\" rel=\"noopener\">Como normalizar dados em R<\/a><br \/> <a href=\"https:\/\/statorials.org\/pt\/remover-valores-discrepantes-r\/\" target=\"_blank\" rel=\"noopener\">Como remover outliers em R<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Muitas vezes, ao trabalhar com algoritmos de classifica\u00e7\u00e3o de aprendizado de m\u00e1quina, as classes no conjunto de dados ficam desequilibradas. Por exemplo: Um conjunto de dados contendo informa\u00e7\u00f5es sobre se os jogadores universit\u00e1rios s\u00e3o ou n\u00e3o convocados para a NBA pode ter 98% dos jogadores n\u00e3o convocados e 2% sendo convocados. Um conjunto de dados [&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":[],"class_list":["post-3061","post","type-post","status-publish","format-standard","hentry","category-guia"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Como usar SMOTE para dados desequilibrados em R (com exemplo) - Statorials<\/title>\n<meta name=\"description\" content=\"Este tutorial explica como usar o SMOTE para dados desequilibrados em R, incluindo um exemplo 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\/pt\/atacante\/\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Como usar SMOTE para dados desequilibrados em R (com exemplo) - Statorials\" \/>\n<meta property=\"og:description\" content=\"Este tutorial explica como usar o SMOTE para dados desequilibrados em R, incluindo um exemplo completo.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/statorials.org\/pt\/atacante\/\" \/>\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=\"Dr. benjamim anderson\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Dr. benjamim anderson\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo estimado de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/statorials.org\/pt\/atacante\/\",\"url\":\"https:\/\/statorials.org\/pt\/atacante\/\",\"name\":\"Como usar SMOTE para dados desequilibrados em R (com exemplo) - Statorials\",\"isPartOf\":{\"@id\":\"https:\/\/statorials.org\/pt\/#website\"},\"datePublished\":\"2023-07-19T09:55:30+00:00\",\"dateModified\":\"2023-07-19T09:55:30+00:00\",\"author\":{\"@id\":\"https:\/\/statorials.org\/pt\/#\/schema\/person\/e08f98e8db95e0aa9c310e1b27c9c666\"},\"description\":\"Este tutorial explica como usar o SMOTE para dados desequilibrados em R, incluindo um exemplo completo.\",\"breadcrumb\":{\"@id\":\"https:\/\/statorials.org\/pt\/atacante\/#breadcrumb\"},\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/statorials.org\/pt\/atacante\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/statorials.org\/pt\/atacante\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Lar\",\"item\":\"https:\/\/statorials.org\/pt\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Como usar smote para dados desequilibrados em r (com exemplo)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/statorials.org\/pt\/#website\",\"url\":\"https:\/\/statorials.org\/pt\/\",\"name\":\"Statorials\",\"description\":\"O seu guia para a literacia estat\u00edstica!\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/statorials.org\/pt\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-PT\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/statorials.org\/pt\/#\/schema\/person\/e08f98e8db95e0aa9c310e1b27c9c666\",\"name\":\"Dr. benjamim anderson\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/statorials.org\/pt\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/statorials.org\/pt\/wp-content\/uploads\/2023\/10\/Dr.-Benjamin-Anderson-96x96.jpg\",\"contentUrl\":\"https:\/\/statorials.org\/pt\/wp-content\/uploads\/2023\/10\/Dr.-Benjamin-Anderson-96x96.jpg\",\"caption\":\"Dr. benjamim anderson\"},\"description\":\"Ol\u00e1, sou Benjamin, um professor aposentado de estat\u00edstica que se tornou professor dedicado na Statorials. Com vasta experi\u00eancia e conhecimento na \u00e1rea de estat\u00edstica, estou empenhado em compartilhar meu conhecimento para capacitar os alunos por meio de Statorials. Saber mais\",\"sameAs\":[\"https:\/\/statorials.org\/pt\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Como usar SMOTE para dados desequilibrados em R (com exemplo) - Statorials","description":"Este tutorial explica como usar o SMOTE para dados desequilibrados em R, incluindo um exemplo 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\/pt\/atacante\/","og_locale":"pt_PT","og_type":"article","og_title":"Como usar SMOTE para dados desequilibrados em R (com exemplo) - Statorials","og_description":"Este tutorial explica como usar o SMOTE para dados desequilibrados em R, incluindo um exemplo completo.","og_url":"https:\/\/statorials.org\/pt\/atacante\/","og_site_name":"Statorials","article_published_time":"2023-07-19T09:55:30+00:00","author":"Dr. benjamim anderson","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Dr. benjamim anderson","Tempo estimado de leitura":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/statorials.org\/pt\/atacante\/","url":"https:\/\/statorials.org\/pt\/atacante\/","name":"Como usar SMOTE para dados desequilibrados em R (com exemplo) - Statorials","isPartOf":{"@id":"https:\/\/statorials.org\/pt\/#website"},"datePublished":"2023-07-19T09:55:30+00:00","dateModified":"2023-07-19T09:55:30+00:00","author":{"@id":"https:\/\/statorials.org\/pt\/#\/schema\/person\/e08f98e8db95e0aa9c310e1b27c9c666"},"description":"Este tutorial explica como usar o SMOTE para dados desequilibrados em R, incluindo um exemplo completo.","breadcrumb":{"@id":"https:\/\/statorials.org\/pt\/atacante\/#breadcrumb"},"inLanguage":"pt-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/statorials.org\/pt\/atacante\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/statorials.org\/pt\/atacante\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Lar","item":"https:\/\/statorials.org\/pt\/"},{"@type":"ListItem","position":2,"name":"Como usar smote para dados desequilibrados em r (com exemplo)"}]},{"@type":"WebSite","@id":"https:\/\/statorials.org\/pt\/#website","url":"https:\/\/statorials.org\/pt\/","name":"Statorials","description":"O seu guia para a literacia estat\u00edstica!","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/statorials.org\/pt\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pt-PT"},{"@type":"Person","@id":"https:\/\/statorials.org\/pt\/#\/schema\/person\/e08f98e8db95e0aa9c310e1b27c9c666","name":"Dr. benjamim anderson","image":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/statorials.org\/pt\/#\/schema\/person\/image\/","url":"https:\/\/statorials.org\/pt\/wp-content\/uploads\/2023\/10\/Dr.-Benjamin-Anderson-96x96.jpg","contentUrl":"https:\/\/statorials.org\/pt\/wp-content\/uploads\/2023\/10\/Dr.-Benjamin-Anderson-96x96.jpg","caption":"Dr. benjamim anderson"},"description":"Ol\u00e1, sou Benjamin, um professor aposentado de estat\u00edstica que se tornou professor dedicado na Statorials. Com vasta experi\u00eancia e conhecimento na \u00e1rea de estat\u00edstica, estou empenhado em compartilhar meu conhecimento para capacitar os alunos por meio de Statorials. Saber mais","sameAs":["https:\/\/statorials.org\/pt"]}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"_links":{"self":[{"href":"https:\/\/statorials.org\/pt\/wp-json\/wp\/v2\/posts\/3061","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/statorials.org\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/statorials.org\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/statorials.org\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/statorials.org\/pt\/wp-json\/wp\/v2\/comments?post=3061"}],"version-history":[{"count":0,"href":"https:\/\/statorials.org\/pt\/wp-json\/wp\/v2\/posts\/3061\/revisions"}],"wp:attachment":[{"href":"https:\/\/statorials.org\/pt\/wp-json\/wp\/v2\/media?parent=3061"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/statorials.org\/pt\/wp-json\/wp\/v2\/categories?post=3061"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/statorials.org\/pt\/wp-json\/wp\/v2\/tags?post=3061"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}