<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Clébio Júnior on Medium]]></title>
        <description><![CDATA[Stories by Clébio Júnior on Medium]]></description>
        <link>https://medium.com/@juniorcl?source=rss-56f46ba5588a------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*vzLd9ZTejLRlgTU0ONPhVA.jpeg</url>
            <title>Stories by Clébio Júnior on Medium</title>
            <link>https://medium.com/@juniorcl?source=rss-56f46ba5588a------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sun, 24 May 2026 05:06:09 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@juniorcl/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Escolhendo o Melhor Modelo de Embedding: Combinando correlação semântica e classificação de tópicos.]]></title>
            <link>https://medium.com/data-hackers/escolhendo-o-melhor-modelo-de-embedding-combinando-correla%C3%A7%C3%A3o-sem%C3%A2ntica-e-classifica%C3%A7%C3%A3o-de-t%C3%B3picos-66ccaf17eda8?source=rss-56f46ba5588a------2</link>
            <guid isPermaLink="false">https://medium.com/p/66ccaf17eda8</guid>
            <category><![CDATA[data-science]]></category>
            <category><![CDATA[embedding]]></category>
            <category><![CDATA[python]]></category>
            <category><![CDATA[lightgbm]]></category>
            <category><![CDATA[nlp]]></category>
            <dc:creator><![CDATA[Clébio Júnior]]></dc:creator>
            <pubDate>Mon, 27 Oct 2025 20:46:41 GMT</pubDate>
            <atom:updated>2026-04-24T15:48:29.974Z</atom:updated>
            <content:encoded><![CDATA[<h4>Um tutorial explicando como podemos avaliar um modelo de <em>embedding</em> utilizando uma abordagem <strong>intrínseca</strong> com a correlação semântica e <strong>extrínseca</strong> com a classificação de tópicos por meio do modelo LightGBM.</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*AtWmhuiRK8caigmV" /><figcaption>Photo by <a href="https://unsplash.com/@sunriseking?utm_source=medium&amp;utm_medium=referral">Sunrise King</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>O trabalho como <strong>cientista de dados </strong>muitas vezes se concentra em dados numéricos ou categóricos. No entanto, há uma imensa gama de informações valiosas disponíveis em formatos textuais, que também podem ser exploradas para resolver problemas complexos. Dados em <strong>linguagem natural</strong> são fundamentais em aplicações como <strong>análise de sentimentos</strong>, <strong>classificação</strong> e <strong>sumarização de textos</strong>, entre outras. E, assim como qualquer outro tipo de dado, esses textos precisam ser tratados e preprocessados para que possam ser utilizados de forma eficaz em modelos.</p><p>Dentro da etapa de <strong>pré-processamento</strong> está a utilização de alguma técnica ou modelo de <em>embedding</em> para fazer a representação numérica do texto. Dessa forma, a escolha de um melhor modelo se faz tão necessária. Portanto, neste post, pretendo demonstrar através de duas técnicas simples de <strong>correlação semântica</strong> e <strong>classificação de tópicos</strong> como tais modelos podem avaliados.</p><blockquote>Neste post serão utilizadas duas técnicas para fazer a avaliação dos modelos de embeddings, mas caso o leitor queira saber mais sobre métricas sobre avaliação de modelos de classificação ou regressão. Deixo para apreciação o meu artigo <a href="https://medium.com/data-hackers/indo-al%C3%A9m-da-acur%C3%A1cia-entendo-a-acur%C3%A1cia-balanceada-precis%C3%A3o-recall-e-f1-score-c895e55a9753">Indo Além da Acurácia: Entendo a Acurácia Balanceada, Precisão, Recall e F1 score</a> e o <a href="https://medium.com/data-hackers/prevendo-n%C3%BAmeros-entendendo-m%C3%A9tricas-de-regress%C3%A3o-35545e011e70">Métricas para Regressão: Entendendo as métricas R², MAE, MAPE, </a>MSE e RMSE</blockquote><blockquote>Eu também disponibilizei um Notebook no Kaggle que serve como a implementação prática desse estudo <a href="https://www.kaggle.com/code/juniorcl/embedding-analysis-semantic-topic-evaluation">Embedding Analysis: Semantic &amp; Topic Evaluation</a>, permitindo explorar conceitos os conceitos na prática.</blockquote><h3>Avaliação Intrínseca</h3><p>A <strong>avaliação intrínseca</strong> examina diretamente as representações vetoriais geradas pelo modelo, verificando propriedades linguísticas e geométricas dentro do próprio espaço de <strong><em>embeddings</em></strong>. Esses métodos são geralmente mais rápidos e fornecem <em>insights</em> diretos sobre o que o modelo aprendeu. Dessa forma, responde a perguntas como: palavras semanticamente similares estão próximas no espaço vetorial? O modelo captura relações analógicas (ex: “rei” — “homem” + “mulher” = “rainha”)?</p><h4>Correlação Semântica</h4><p>Para este estudo foi utilizado a base de dados ASSIN2 (Avaliação de Similaridade Semântica e Inferência Textual). Esta é uma base de dados de referência fundamental para a avaliação de sistemas de <strong>Processamento de Linguagem Natural</strong> (PLN) no <strong>português</strong>, especificamente no português do Brasil (pt-BR) e europeu (pt-PT).</p><p>Esta base oferece pontuações de <strong>similaridade semântica</strong> atribuídas por humanos, em uma escala de 1 a 5, que quantificam o grau de relação entre premissa e hipótese, conforme exemplificado na <strong>Tabela 1</strong>. A partir dessas informações, os textos podem ser convertidos em <em>embeddings</em> e, então, calcula-se a <strong>similaridade do cosseno</strong> entre os vetores resultantes. <strong>Quanto maior for a correlação semântica entre premissa e hipótese (conforme avaliado pelos humanos), maior tende a ser o valor de similaridade do cosseno entre seus <em>embeddings</em></strong>. Dessa forma, modelos de <em>embedding</em> que produzam vetores com maiores valores de similaridade do cosseno para <strong>pares semanticamente relacionados demonstram uma melhor capacidade de capturar e representar relações semânticas entre textos</strong>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/813/1*L9tKQaLQlGykx3IJb5p3TA.png" /><figcaption><strong>Tabela 1</strong> — Amostra de registros da base <strong>ASSIN2</strong>, utilizada para avaliar o grau de <strong>correlação semântica</strong> entre sentenças em língua portuguesa. Cada linha apresenta uma <strong>premissa</strong> e uma <strong>hipótese</strong>, que podem ou não expressar a mesma ideia, servindo de base para mensurar a similaridade semântica entre textos.</figcaption></figure><h3>Avaliação Extrínseca</h3><p>A <strong>avaliação extrínseca</strong> utiliza os <em>embedding</em> como variável para uma tarefa específica. Diferentemente da avaliação intrínseca (que analisa propriedades geométricas internas do espaço vetorial), a <strong>extrínseca integra os <em>embeddings</em> em sistemas completos</strong>, como <strong>classificadores de texto, mecanismos de busca ou modelos de perguntas e respostas, e mede seu desempenho final nessas aplicações</strong>. Um <em>embedding</em> é considerado eficaz não porque possui uma organização interna perfeita, mas porque efetivamente melhora a acurácia, a eficiência ou a robustez de uma aplicação específica, validando assim seu valor para solucionar problemas concretos de Processamento de Linguagem Natural.</p><h4>Classificação de Tópicos</h4><p>Para este estudo, utilizou-se um conjunto de dados composto pelo histórico de notícias publicadas pelo jornal <strong>Folha de S. Paulo</strong>. A base contém <strong>167.053 artigos</strong>, coletados entre janeiro de 2015 e setembro de 2017, cada um registrado com suas respectivas informações: título, URL original, texto integral e categoria temática. As notícias abrangem diversos assuntos, como <strong>mercado</strong>, <strong>política</strong>, <strong>mundo</strong>, entre outros. A <strong>Tabela 2</strong> apresenta uma amostra da estrutura e organização dos dados.</p><p>Nesta avaliação extrínseca, utilizaram-se as colunas de <strong>texto</strong> e suas respectivas <strong>categorias</strong>, com o objetivo de verificar a capacidade dos <em>embeddings</em> em servir como <em>features</em> eficazes para a tarefa de classificação temática de notícias. O desempenho de um classificador treinado sobre essas representações vetoriais oferece uma medida indireta da qualidade do <em>embedding</em>: se o modelo de classificação atinge alta acurácia, isso indica que os <em>embeddings</em> capturam informações semânticas relevantes para distinguir os temas.</p><p>É crucial ressaltar, no entanto, que a avaliação extrínseca é <strong>contextual e dependente da tarefa</strong>. Um <em>embedding</em> que performa bem na classificação de temas de notícias pode não ser ideal para outras aplicações, como análise de sentimento ou tradução automática. Portanto, os resultados obtidos são válidos para este domínio e objetivo específicos, e não constituem um indicador universal de qualidade para os <em>embeddings</em>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*L1AKBdIm0OP6bvLIgnw-yw.png" /><figcaption><strong>Tabela 2</strong> — Tabela com uma amostra de como os dados estão organizados dentro da base de dados com histórico de notícias do jornal Folha de S. Paulo.</figcaption></figure><h3>Resultados</h3><p>Primeiramente mostrarei os resultados da <strong>avaliação intrísica</strong>. Dentro da Tabela 3 podemos observar o nome dos modelos de <em>embeddings</em> utilizados e o valor do <strong>coeficiente de pearson</strong> que é o resultado da correlação entre a <strong>similaridade do cosseno</strong> e o <strong>escore de relação entre as frases</strong> que é apresentado na Tabela 1. O<strong> coeficiente de pearson</strong> dentro da Tabela 3. Podemos notar que o modelo que apresentou melhor resultado foi o <strong>multilingual-e5-base</strong>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/506/1*eAQ7LDvPYwEGXsQofnv2Yw.png" /><figcaption><strong>Tabela 3</strong> — Tabela com os valores de cada um dos modelos de embedding utilizados para realizar os coeficientes de Pearson</figcaption></figure><p>A <strong>avaliação</strong> <strong>extrínseca</strong> foi conduzida com o objetivo de verificar a capacidade dos embeddings em <strong>classificar tópicos textuais</strong>. Para essa análise, os dados foram divididos em quatro categorias distintas: <em>“cotidiano”</em>, <em>“esporte”</em>, <em>“mercado”</em> e <em>“mundo”</em>. Por representarem temas semanticamente diferentes, espera-se que o espaço vetorial dos embeddings apresente uma <strong>boa separabilidade entre classes</strong>. O modelo de classificação adotado foi o <strong>LightGBM</strong>, e a métrica de desempenho utilizada foi a <strong>ROC AUC (Área Sob a Curva ROC)</strong>, que independe de um limiar de decisão específico, fornecendo uma <strong>avaliação mais abrangente da capacidade discriminativa</strong> do modelo.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/316/1*kQ-qAAvZH60l1eRJFXNDbw.png" /><figcaption><strong>Tabela 4</strong> — Valores da métrica ROC AUC, calculados pelo método <em>one-vs-rest</em>, obtidos na avaliação extrínseca de cada modelo com base em seus respectivos embeddings.</figcaption></figure><p>Além da análise quantitativa por meio das métricas, também é possível realizar uma <strong>avaliação visual</strong> da separabilidade entre os temas no espaço vetorial. Como cada modelo de embedding projeta os textos em um espaço de alta dimensionalidade (geralmente muito superior a três dimensões), a visualização direta se torna inviável. Para contornar essa limitação, foi aplicado o <strong>UMAP (Uniform Manifold Approximation and Projection)</strong>, técnica de redução de dimensionalidade que projeta os embeddings em um espaço bidimensional, preservando ao máximo suas relações estruturais. Ao observarmos a <strong>Figura 1</strong>, nota-se que o modelo <strong>multilingual-e5-base</strong> apresenta uma separação mais clara entre os grupos temáticos, indicando uma representação semântica mais consistente.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*TVFpMPPNf7Y9gC_82OeFqw.png" /><figcaption><strong>Figura 1</strong> — Visualização gráfica do espaço vetorial transformado pelo UMAP para um espaço de duas dimensões. As marcações são separadas nas cores roxa, azul, verde e amarelo, que correspondem respectivamente as categorias “cotidiano”, “esporte”, “mercado” e “mundo”.</figcaption></figure><h3>Conclusão</h3><p>Escolher o melhor modelo de <em>embedding</em> é muito mais do que olhar para uma métrica isolada — é entender <strong>como ele representa o significado dos textos</strong> e <strong>como essa representação se reflete em resultados práticos</strong>. Neste artigo, vimos que combinar dois tipos de avaliação — a <strong>intrínseca</strong>, baseada na correlação semântica, e a <strong>extrínseca</strong>, usando uma tarefa real de classificação de tópicos — traz uma visão mais completa sobre o desempenho dos modelos.</p><p>Os resultados mostraram que o <strong>multilingual-e5-base</strong> se destacou tanto em capturar relações de sentido entre frases quanto em distinguir temas diferentes de maneira consistente. As visualizações com <strong>UMAP</strong> ajudaram a enxergar isso de forma intuitiva: os grupos de tópicos ficaram mais bem separados, reforçando o bom desempenho do modelo.</p><p>Mas o ponto principal é que <strong>não existe um modelo “melhor” de forma absoluta</strong>. Cada aplicação tem suas particularidades — o que funciona bem para classificação de notícias pode não ser o ideal para análise de sentimentos ou recomendação de conteúdo. Por isso, entender o contexto e avaliar com mais de uma abordagem é fundamental.</p><p>No fim das contas, explorar e comparar embeddings com métricas e visualizações não só melhora o desempenho dos sistemas de PLN, como também ajuda a tomar decisões mais conscientes e embasadas sobre qual modelo realmente faz sentido para o seu problema.</p><h3>Referência</h3><ul><li>REAL, Livy; FONSECA, Erick; OLIVEIRA, Hugo Gonçalo. <strong>The assin 2 shared task: a quick overview</strong>. In: INTERNATIONAL CONFERENCE ON COMPUTATIONAL PROCESSING OF THE PORTUGUESE LANGUAGE, 14., 2020, <strong>Anais</strong> […]. Cham: Springer, 2020. p. 406–412.</li><li>NILC; INTERINSTITUTIONAL CENTER FOR COMPUTATIONAL LINGUISTICS. <strong>assin2</strong>. São Carlos: NILC-ICMC/USP, 2020. Disponível em: <a href="https://huggingface.co/datasets/nilc-nlp/assin2">https://huggingface.co/datasets/nilc-nlp/assin2</a>. Acesso em: 25 de Agosto de 2025.</li><li>MARLESSON. <strong>News of the site FolhaUOL</strong>. Kaggle, 2018. Disponível em: <a href="https://www.kaggle.com/datasets/marlesson/news-of-the-site-folhauol">https://www.kaggle.com/datasets/marlesson/news-of-the-site-folhauol</a>. Acesso em: 26 ago. 2024.</li><li>SCHNABEL, T.; LABUTOV, I.; MIMNO, D.; JOACHIMS, T. <strong>Evaluation methods for unsupervised word embeddings</strong>. In: MÀRQUEZ, L.; CALLISON-BURCH, C.; SU, J. (Ed.). <strong>Proceedings of the 2015 Conference on Empirical Methods in Natural Language Processing</strong>. Lisbon, Portugal: Association for Computational Linguistics, 2015. p. 298–307. Disponível em: <a href="https://aclanthology.org/D15-1036/">https://aclanthology.org/D15-1036/</a>. DOI: 10.18653/v1/D15–1036.</li><li>JURAFSKY, Daniel; MARTIN, James H. <strong>Speech and language processing: an introduction to natural language processing, computational linguistics, and speech recognition, with language models</strong>. 3. ed. [S. l.], 2025. E-book. Disponível em: <a href="https://web.stanford.edu/~jurafsky/slp3/">https://web.stanford.edu/~jurafsky/slp3/</a>. Acesso em: 29 de agosto de 2025. Manuscrito online lançado em 24 de agosto de 2025.</li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=66ccaf17eda8" width="1" height="1" alt=""><hr><p><a href="https://medium.com/data-hackers/escolhendo-o-melhor-modelo-de-embedding-combinando-correla%C3%A7%C3%A3o-sem%C3%A2ntica-e-classifica%C3%A7%C3%A3o-de-t%C3%B3picos-66ccaf17eda8">Escolhendo o Melhor Modelo de Embedding: Combinando correlação semântica e classificação de tópicos.</a> was originally published in <a href="https://medium.com/data-hackers">Data Hackers</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Feature Engineering: Técnicas para lidar com dados faltantes em um projeto de ciência de dados.]]></title>
            <link>https://medium.com/data-hackers/feature-engineering-t%C3%A9cnicas-para-lidar-com-dados-faltantes-em-um-projeto-de-ci%C3%AAncia-de-dados-debdd57eb662?source=rss-56f46ba5588a------2</link>
            <guid isPermaLink="false">https://medium.com/p/debdd57eb662</guid>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[data-science]]></category>
            <category><![CDATA[ciencia-de-dados]]></category>
            <category><![CDATA[feature-engineering]]></category>
            <category><![CDATA[missing-data]]></category>
            <dc:creator><![CDATA[Clébio Júnior]]></dc:creator>
            <pubDate>Fri, 24 Feb 2023 17:07:25 GMT</pubDate>
            <atom:updated>2023-02-24T17:07:25.365Z</atom:updated>
            <content:encoded><![CDATA[<h4>Tutorial explicando tipos de técnicas para lidar com dados faltantes em bases de dados para treinamento e validação de um modelo de machine learning.</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*j2gzWZSnqPtRk8m-" /><figcaption>Photo by <a href="https://unsplash.com/@mettyunuabona?utm_source=medium&amp;utm_medium=referral">Ehimetalor Akhere Unuabona</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>Por diversas vezes durante um projeto de <strong>ciência de dados</strong>, quando os dados são adquiridos para modelagem, as bases de dados podem apresentar diversos problemas. Dentre eles, um dos mais comuns é a presença de valores faltantes. O <strong>valor faltante</strong>, ou <strong>NaN </strong>(do inglês<strong> </strong><em>Not a Number</em><strong>), </strong>pode parecer um problema muito complicado à primeira vista. Contudo, ele só precisa ser entendido e lidado como qualquer outro tipo de dado. Para apresentar as técnicas relacionadas a dados ausentes e como elas funcionam, nesta postagem pretendo explicar os tipos de valores faltantes (aleatoriamente faltante ou não aleatoriamente faltante) e as diferentes técnicas para obter uma base de dados completa para modelagem.</p><blockquote>Todas as técnicas aqui apresentadas precisam ser aplicadas depois que os dados forem divididos em treino e teste. Isso deve ser feito para evitar que haja possíveis vazamentos de informação quando for feito o cálculo da média, mediana ou moda no conjunto de dados completo.</blockquote><blockquote>Além disso, neste post há informações relacionadas a média, mediana, moda e como a variável está distribuída. A explicação sobre tais assuntos fica fora do escopo deste post. Por isso que estou deixando <em>links</em> sobre a <a href="https://brasilescola.uol.com.br/matematica/moda-media-mediana.htm">Moda, Média e Mediana</a> e <a href="https://ead.uepg.br/apl/sigma/assets/editais/PS0027E0035.pdf">Assimetria e Curtose</a> para complementação.</blockquote><h3>Técnicas para Lidar com Dados Faltantes</h3><p>Um dado faltante é algo comum no cotidiano de um cientista de dados. Eles podem entrar na base de dados por diferentes motivos: erro na inserção manual, erro de digitação ou o dado pode simplesmente não existir. Abaixo são descritos de forma resumida os tipos de dados faltantes e posteriormente são apresentadas as diferentes técnicas com imagens para ilustrar como elas funcionam.</p><ul><li><strong>Dados faltantes completamente ao acaso</strong> (MCAR — do inglês <em>Missing Completely at Random</em>) são dados que não possuem nenhuma dependência em relação a dados observados ou não observados. Este tipo de dado faltante não apresenta um viés, porém é considerado muitas vezes irrealista.</li><li><strong>Dados faltantes ao acaso</strong> (MAR — do inglês <em>Missing at Random</em>) são dados faltantes que ocorrem de maneira randômica, mas podemos associar a sua falta a dados observados e não aos não observados.</li><li><strong>Dados faltantes não ao acaso</strong> (MNAR — do inglês <em>Missing not at Random</em>) são dados faltantes não randômicos que estão relacionados sistematicamente a dados não observados, ou seja, a falta dos dados está vinculada a eventos e fatores que não podem ser mensurados.</li></ul><h4>Remoção dos Dados Faltantes</h4><p>Uma das formas mais simples de lidar com NaN é optando pela <strong>remoção</strong> dos mesmos.<strong> </strong>Este método é aconselhado para conjuntos de dados que possuem<strong> </strong>5% ou menos de dados faltantes e que sejam <strong>MCAR</strong>. Partindo desse pressuposto, a remoção deles seria como remover aleatoriamente alguns dados do <em>dataset</em>, mantendo assim a distribuição original das variáveis. De maneira resumida, com esta técnica só serão mantidas as linhas que apresentarem dados completos. A Figura 1 representa como o conjunto de dados fica posteriormente a aplicação desta técnica. Pelo fato da base de dados possuir somente 3 linhas completas, somente estas foram mantidas.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/525/1*EesLbsHJMzxgPE027_be0w.png" /><figcaption>Figura 1 — Figura representando o método de remoção de dados faltantes do conjunto de dados. Só permaneceram as três linhas que estão completas, portanto diminuindo a quantidade de amostras que a base de dados possui.</figcaption></figure><p>A remoção de NaN pode trazer vantagens e desvantagens. A <strong>vantegem</strong> é que ela é uma técnica simples e fácil de ser aplicada e a distribuição dos dados é mantida, caso a falta do dado seja MCAR. Como <strong>desvantagem</strong> tem a possibilidade do conjunto de dados diminuir se os dados faltantes forem abundantes, além da perda de informação, pois serão removidas linhas que possuem dados.</p><h4>Imputação pela Média ou Mediana</h4><p>Ao invés de remover os dados faltantes, por que não imputar valores? Um método muito comum para <strong>imputação</strong> é a inserção da <strong>média </strong>ou<strong> mediana</strong>. Ao assumir que os dados são <strong>aleatoriamente ausentes</strong>, a média ou a mediana podem estar próximas dos valores originais. Porém para este método de imputação é preciso levar em consideração se a <strong>distribuição</strong> é s<strong>imétrica</strong> (distribuição normal ou gaussina) ou <strong>assimétrica</strong> (apresenta algum tipo de desvio como apresentado na Figura 2).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/426/1*CVmmWCuckEACx1sSz9sE_Q.png" /><figcaption>Figura 2 — A figura exemplifica uma distribuição de dados que apresenta um desvio para a direita. Nela está representado como a moda, mediana e a média podem ser influênciadas pelo desvio apresentado na distribuição.</figcaption></figure><p>Se a distribuição for <strong>normal</strong> tanto a <strong>média</strong> quanto a <strong>mediana</strong> coincidem, portanto pode ser usada qualquer uma das duas. Contudo para casos em que a distribuição é <strong>assimétrica</strong> (há um desvio dos dados para a esquerda ou para a direita), a média acaba sofrendo mais com os desvios da distribuição como apresentado na Figura 2. Por isso que a <strong>mediana</strong> é a mais recomendada, pois ela não sofre tanto com o desvio apresentado pela distribuição. Na Figura 3 é exemplificado o uso da média para substituição dos valores faltantes na tabela da esquerda.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/522/1*EpaS5qjKl8WCGR_VlYXeNA.png" /><figcaption>Figura 3 — Figura representando a inserção do valor da média nas variáveis numéricas v2 e v3. Os valores inseridos são 30 e 108,2 que são destacados pela cor vermelha.</figcaption></figure><p>Algumas <strong>vantagens</strong> e <strong>desvantagens</strong> são também encontradas neste método. Esta técnica é uma maneira rápida de conseguir lidar com os valores faltantes e pode ser integrado facilmente durante o <em>deploy</em> do modelo. Porém se a quantidade de NaN for grande pode haver distorções da distribuição original da variável, por esse motivo que é aconselhável utilizar em variáveis que apresentem de 5% a 10% de valores faltantes.</p><h4>Imputação da Categoria mais Frequente</h4><p>Além da média e mediana, existe outra forma de inserir valores relacionados a própria variável: inputação da <strong>categoria mais frequente</strong>. Utilizando a categoria mais recorrente, podemos assumir que os valores faltantes têm uma probabilidade maior de serem desta categoria. Na Figura 4 é representado a inserção da variável “casa” em vermelho; esta é a categoria mais frequente da variável v4.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/524/1*c22K7JD5uj0SqH14P5Zf3g.png" /><figcaption>Figura 4 — A figura representa a substituição do valor faltante pela categoria “casa” em vermelho que é a categoria mais frequente da coluna v4.</figcaption></figure><p>Ao se utilizar esta técnica teremos <strong>vantagens</strong> e <strong>desvantagens</strong>. Como vantagem: é uma técnica que apresenta uma maneira rápida para substituir os valores faltantes e isso é facilmente integrado em produção. Como desvantagem: esta técnicas pode trazer distorções na frequência das outras categorias se a quantidade de valores faltantes for muito extensa (ultrapassando de 5% a 10% dependendo de sua criticidade).</p><h4>Imputação de Valor Arbitrário</h4><p>Até o momento conhecemos técnicas que utilizam características da própria variável para conseguir lidar com o dados ausentes. Neste método os valores faltantes são substituídos por um <strong>valor arbitrário</strong>. Alguns valores comuns para variáveis numéricas são o número -1 (para variáveis que tenham uma distribuição positiva), -99, 99 ou 999. Já para variáveis categorias há a inserção, por exemplo, de uma categoria “Missing”. Esta é uma técnica para valores faltante <strong>MNAR</strong>, pois queremos que o dado seja^ sinalizado como faltante. Um exemplo da utilização desta técnica pode ser observado na Figura 5.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/523/1*GMnC3jVC9icLWNIzQVlilA.png" /><figcaption>Figura 5 — A figura representa a inserção de uma valor arbitrário tanto para variáveis numéricas quanto categóricas. Para variáveis numéricas, o valor inserido foi -99 destacado em vermelhor. Para a coluna v4 a categoria “missing” em vermelho foi inserido no valor ausente.</figcaption></figure><p><strong>Vantagens</strong>: é possível de uma maneira rápida lidar com dados faltantes; pode ser integrado de maneira rápida com o modelo em produção; e os dados que estavam ausentes são destacados. <strong>Desvantagens</strong>: há a distorção da distribuição original e da variância; pode mascarar <em>outliers</em>; é preciso ter cuidado para não escolher uma valor que fique perto da média, da mediana ou qualquer outro valor comum da distribuição.</p><h4>Indicador do Valor Ausente</h4><p>Os métodos anteriores utilizam técnicas que fazem a imputação de valores na variável, seja por meio de valores extraídos da própria variável ou de valores arbitrários. Esta técnica tem uma abordagem diferente. Ela adiciona mais uma variável ao <em>dataset</em>. Nesta nova variável, só há o número 0 ou 1 que indicam se originalmente na linha à esquerda havia um valor faltante ou não. Esse método é comumente utilizado em conjunto com as outras técnicas citadas acima (menos a primeira). A figura 6 representa a inserção das variáveis v2missing, v3missing e v4missing com o valor 1 marcando as linhas à esquerda que possuíam valores nulos.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/664/1*cJ9Uc7lXYrzTntQ80CFtXQ.png" /><figcaption>Figura 6 — Figura representando a inserção de colunas adicionais v2missing, v3missing e v4missing. Elas indicam por meio dos valores 0 e 1, quais são as linhas que apresentam valores que foram inseridos por meio de algumas das técnicas citadas acima.</figcaption></figure><p>Este método apresenta também pontos de <strong>vantagem</strong> e <strong>desvantagem</strong>. Como vantagem, este método destaca a importância de valores faltantes, caso ele exista. Porém por haver a inserção de novas colunas, a dimensão da base de dados pode acabar aumentando, caso tenham muitas variáveis com valores ausentes. Mas se isso acontecer, pode ser implementado algum método de seleção de variáveis para redução do número de colunas.</p><h3>Conclusões</h3><p>Neste post foram apresentadas diferentes técnicas para lidar com dados faltantes. Já que eles são certamente um dos problemas mais comuns que podem ser encontrados na base de dados. Mas as vezes até um entendimento melhor da forma do negócio da empresa ou como os dados foram gerados pode te dar pistas de como lidar com os dados ausentes. De qualquer maneira caso queira aplicar alguma das técnicas aqui citadas, recomendo o uso da biblioteca <a href="https://feature-engine.trainindata.com/en/latest/">Feature-engine</a>.</p><p>Espero que tenha gostado do texto e que possa ter te ajudado de alguma forma. Se possível dê uma curtida ou deixe um comentário, ficarei feliz em responder. Até a próxima!</p><h3>Referências</h3><ul><li>Ewen Harrison. Missing Data. Disponível em: &lt;<a href="https://cran.r-project.org/web/packages/finalfit/vignettes/missing.html">https://cran.r-project.org/web/packages/finalfit/vignettes/missing.html</a>&gt;.</li><li>Little Roderick JA, Rubin Donald B. Statistical Analysis with Missing Data. New York: Wiley; 1987.</li><li>Mack C, Su Z, Westreich D. Managing Missing Data in Patient Registries: Addendum to Registries for Evaluating Patient Outcomes: A User’s Guide. Disponível em: &lt;<a href="https://www.ncbi.nlm.nih.gov/books/NBK493614/">https://www.ncbi.nlm.nih.gov/books/NBK493614/</a>&gt;.</li><li>Galli, Soledad. Python Feature Engineering Cookbook. Birmingham: Packt Publishing; 2020.</li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=debdd57eb662" width="1" height="1" alt=""><hr><p><a href="https://medium.com/data-hackers/feature-engineering-t%C3%A9cnicas-para-lidar-com-dados-faltantes-em-um-projeto-de-ci%C3%AAncia-de-dados-debdd57eb662">Feature Engineering: Técnicas para lidar com dados faltantes em um projeto de ciência de dados.</a> was originally published in <a href="https://medium.com/data-hackers">Data Hackers</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Escolha as suas palavras: Uma introdução às expressões regulares e ao seu entendimento.]]></title>
            <link>https://medium.com/datarisk-io/escolha-as-suas-palavras-uma-introdu%C3%A7%C3%A3o-as-express%C3%B5es-regulares-e-ao-seu-entendimento-a6163e1b4f8a?source=rss-56f46ba5588a------2</link>
            <guid isPermaLink="false">https://medium.com/p/a6163e1b4f8a</guid>
            <category><![CDATA[data-science]]></category>
            <category><![CDATA[regex]]></category>
            <category><![CDATA[ciencia-de-dados]]></category>
            <category><![CDATA[data-engineering]]></category>
            <category><![CDATA[expressões-regulares]]></category>
            <dc:creator><![CDATA[Clébio Júnior]]></dc:creator>
            <pubDate>Wed, 13 Apr 2022 22:02:05 GMT</pubDate>
            <atom:updated>2025-08-29T20:08:11.133Z</atom:updated>
            <content:encoded><![CDATA[<h4>Neste artigo é apresentado uma introdução às principais expressões regulares e ao seu funcionamento.</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*wU_B9_gu2YfUf2yF" /><figcaption>Photo by <a href="https://unsplash.com/@brett_jordan?utm_source=medium&amp;utm_medium=referral">Brett Jordan</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>Durante o trabalho de um profissional de dados, uma das etapas que mais demanda tempo é a de preparação dos mesmos. Isso pode ocorrer para cientistas que precisam limpar “sujeiras” ou corrigir a formatação da base de dados, como também para os engenheiros que realizam a extração, transformação e carregamento; processo também conhecido como <em>ETL </em>(do inglês <em>Extraction</em>, <em>Transformation and Loading</em>). Assim, tornando as expressões regulares ou regex — como também são conhecidas — uma excelente ferramenta no kit de qualquer profissional deste setor, pois elas conseguem selecionar os padrões, que são ou não desejáveis, e aplicar ações por meio de linguagens de programação de exclusão, seleção e etc.</p><p>Neste post, apresentaremos algumas das principais expressões regulares, juntamente com exemplos do que cada uma busca como padrão.</p><h3>Expressões Regulares</h3><p>Uma expressão regular é um grupo de caracteres que ao ser utilizado sozinho ou em conjunto pode representar algum tipo de padrão dentro de um texto, frase ou palavra. Podendo ser uma repetição de letras, números ou um conjunto de símbolos. Para um melhor entendimento, abaixo são apresentados as principais expressões regulares juntamente com uma explicação de seu funcionamento e imagens que mostram o padrão encontrado por elas.</p><p>Na Figura 1 é apresentada as sentenças que são utilizadas para exemplificar cada expressão regular, onde os círculos cinzas são espaços vazios, enquanto que as setas representam novas linhas. Convido o leitor a escrever estas frases no site<a href="http://regex101.com"> regex101</a>, para realizar os mesmos procedimentos descritos no post e ter uma experiência em tempo real e de melhor entendimento do padrão encontrado.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/346/1*UMrP4elTglTwOBS3qRErlA.png" /><figcaption>Figura 1 — Imagem apresenta os caracteres que são utilizados como exemplo para explicação de cada expressão regular. Os pontos em cinza representam espaços, enquanto que as setas também em cinza mostram que há uma nova linha.</figcaption></figure><h4>Ponto</h4><p>O ponto (<strong>.</strong>) representa qualquer caractere, menos uma nova linha. Ao Aplicar o ponto nos caracteres da Figura 1, são selecionados todos os caracteres em tons de azul, sejam eles letras, números, vírgulas, dentre outros. O resultado é demonstrado na Figura 2.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/347/1*0-1BrdAoXieZy8CmM7BPJA.png" /><figcaption>Figura 2 — Na imagem são mostrados os caracteres encontrados como padrão da expressão regular . (ponto) por meio de quadrados em diferentes tons de azul. Esta expressão regular encontra qualquer caractere como padrão.</figcaption></figure><h4>Circunflexo</h4><p>O sinal de circunflexo (<strong>^</strong>) sinaliza que o padrão descoberto pela expressão regular encontra-se no início das frases. Por exemplo, ao aplicar <strong>^.</strong> (circunflexo e ponto) nas sentenças da Figura 1, obtém-se como resultado qualquer caractere que se encontre no começo das <em>strings</em>. Os resultados são destacados em diferentes tons de azul e mostrados na Figura 3.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/348/1*NVZN0RktXdHTwV13EUCXEQ.png" /><figcaption>Figura 3 — É mostrado o padrão encontrado pela expressão regular ^. (acento circunflexo e ponto). O padrão encontrado é qualquer tipo de caractere que se encontre no início da frase demonstrados pelos quadrados azuis.</figcaption></figure><h4>Cifrão</h4><p>O caractere cifrão (<strong>$</strong>) atua de forma parecida à expressão circunflexo, porém com a diferença que esta expressão faz referência ao final da <em>string</em>. Utilizando a mesma ideia do padrão da Figura 3 como exemplo. O <strong>.$</strong> (ponto e cifrão) seleciona todos os caracteres que estejam ao final de cada sentença da Figura 1. O resultado é observado na Figura 4 em que somente os últimos caracteres foram destacados em tons de azul.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/347/1*VtB16BLYRp2ITQRTFhVAWQ.png" /><figcaption>Figura 4 — Na figura é mostrado o padrão encontrado pela expressão regular .$ (ponto e cifrão). Os padrões encontrados foram qualquer tipo de caractere que se encontre no final da frase. Os resultados são destacados por quadrados em diferentes tons de azul.</figcaption></figure><h4>Asterisco</h4><p>O asterisco (<strong>*</strong>) faz referência a repetições de zero ocorrências ou a tantas quanto forem possíveis do caractere associado a ele. Para exemplificação é utilizada a expressão regular <strong>ro*</strong>, que visa selecionar a letra “r” com nenhuma, uma ou quantas forem possíveis repetições da letra “o”. Os resultados da expressão regular aplicada na Figura 1, são demonstrados através de diferentes tons de azul na Figura 5.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/338/1*bK_RH7YiBp8Ny91oPy9GVA.png" /><figcaption>Figura 5 — Na figura são demonstrados os padrões encontrados pela regex ro* (“r”, “o” e asterisco) em tons de azul. O padrão encontrado são as letras “r” com ou sem a letra “o”, pois o asterisco associa a ocorrência de nenhum ou quantas forem possíveis.</figcaption></figure><h4>Mais</h4><p>O sinal de soma (<strong>+</strong>) funciona de forma parecida ao do asterisco (<strong>*</strong>). O diferencial é que <strong>+</strong> encontra como padrão a repetição de uma ou mais vezes. Ao empregar a expressão regular <strong>\d+</strong> (contra-barra, letra d e sinal de soma), no qual <strong>\d</strong> significa basicamente qualquer caractere numérico, é possível encontrar a ocorrência de um ou mais números em sequência. Ao aplicá-la nas frases da Figura 1, todos os números são destacados através de diferentes tons de azul como é apresentado na Figura 6.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/337/1*Gv_-7oNtT86fBsOXTXI5PQ.png" /><figcaption>Figura 6 — Na figura são demonstrados os caracteres encontrados pela regex \d+ (contra-barra, d e +). Os padrões destacados, em tons de azul, foram as ocorrências de pelo menos um ou mais números.</figcaption></figure><h4>Interrogação</h4><p>O sinal de interrogação (<strong>?</strong>) faz referência a nenhuma ou no máximo uma ocorrência do caractere que estiver a sua esquerda. Portanto, agindo de forma parecida com <strong>+</strong> (sinal de soma), mas com o limite máximo de apenas uma ocorrência. Para exemplificar é abordada a expressão regular <strong>,0?</strong> (vírgula, número 0 e sinal de interrogação). Ao utilizar esta regex nas frases da Figura 1, é destacado apenas o caractere vírgula (,) e ele associado ao número zero como demonstrado na Figura 7.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/339/1*1k9M62-zanUc8ie6C35PRw.png" /><figcaption>Figura 7 — A figura mostra os padrões da regex ,0? (vírgula, número 0 e o sinal de interrogação) encontrados em diferentes tons de azul. Esta expressão destaca a vírgula com ou sem o número associado a ela por causa do sinal de mais.</figcaption></figure><h4>Chaves</h4><p>O par de chaves realiza a identificação de caracteres que se repetem por um número definido de vezes. Estes limites são definidos dentro das chaves pelas letras m, que é o limite inferior, e n, que é o limite superior. Ficando desta maneira <strong>{m,n}</strong> a estrutura da expressão regular . Para lição, é utilizada a expressão <strong>\d{4,5}</strong>, no qual tem como objetivo encontrar números que se repetem de 4 a 5 vezes. Ao aplicar nas frases da Figura 1 as sequências de número que variam de 4 a 5 são destacadas em diferentes tons de azul, como demonstrado na Figura 8.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/339/1*pklsL0Z1J_6bMBtqWXPFhw.png" /><figcaption>Figura 8 — A figura mostra o padrão encontrado pela regex \d{4,5}, que destaca uma sequência de números que podem variar de 4 a 5 vezes. Limites esses impostos pela expressão {4,5}. Os padrões encontrados pela expressão regular estão destacados por diferentes tons de azul.</figcaption></figure><h4>Colchetes</h4><p>O par de colchetes (<strong>[ ]</strong>) são utilizados para definir uma lista de caracteres para serem selecionados como padrão. Desse modo, ao colocar as letras “a” e “b”, por exemplo, dentro dos colchetes <strong>[ab]</strong>, o padrão selecionado será “a”, “b”, “ab” ou “ba”. Ao usar esta expressão regular nas sentenças da Figura 1, encontramos como resultado os destaques “a”, “b” e “ab” em quadrados com tons de azul da Figura 9.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/339/1*FpT0VoU6ct7C8q9L_aVSzQ.png" /><figcaption>Figura 9 — A figura mostra o resultado da expressão regular [ab], que encontra como padrão a letra “a”, “b” e a sílaba “ab”. Os resultados da aplicação desta expressão são destacados em tons de azul.</figcaption></figure><p>Além disso, uma outra utilidade das listas é a negação de uma lista de caracteres. Para isso, coloca-se o acento circunflexo (<strong>^</strong>) como primeiro membro da lista. Assim, para negarmos a lista do exemplo anterior é necessário adicionar o acento circunflexo no começo da lista, resultando em <strong>[^ab]</strong>. Logo, todos os caracteres são selecionados exceto “a”, “b”, “ba” ou “ab”. O resultado da expressão aplicada as sentenças da Figura 1 é observado na Figura 10, com os destaques do resultado em diferentes tons de azul.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/341/1*K4JNZE1dfPmD4oAg9_cdIw.png" /><figcaption>Figura 10 — É demonstrado o resultado da regex de negação [^ab]. Portanto excluindo as letras “a”, “b” e a combinação das duas. Os resultados são destacados por meio de diferentes tons de azul.</figcaption></figure><p>Um outro caractere usado é o <strong>-</strong> (traço). Ele é aplicado para colocar um alcance de letras ou números em sequência. Por exemplo, é possível selecionar todas as letras em sequência tanto maiúsculas quanto minúsculas com a expressão <strong>[a-zA-Z]</strong>. Não precisando colocar letra por letra dentro dos colchetes. O mesmo acontece para uma sequência de números que segue o mesmo princípio <strong>[0-9]</strong>. O resultado da aplicação desta última expressão nas frases da Figura 1 pode ser observador na Figura 11, onde todos os números são selecionados.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/341/1*WB9GZoyPY4ivEWFdPeQi4w.png" /><figcaption>Figura 11 — A figura mostra, destacados em diferentes tons de azul, os resultados encontrados pela expressão [0–9], que visa encontrar todos o números.</figcaption></figure><h4>Barra na Vertical</h4><p>A barra na vertical (<strong>|</strong>) — também conhecida como <em>pipe </em>— funciona como um “ou” entre duas ou mais expressões regulares. Portanto o padrão encontrado é um conjunto de padrões de duas ou mais expressões regulares. Para demonstração é utilizada a expressão <strong>[Tt]e|or</strong>, que possibilita encontrar as expressões “Te”, “te” ou “or”. Os resultados destacados em diferentes tons de azul desta expressão regular nas frases da Figura 1, podem ser observados na Figura 12.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/330/1*Z2goh_09p6sJBvegRepV2A.png" /><figcaption>Figura 12 — A figura mostra os resultados encontrados pela expressão regular [Tt]e|or. O padrão encontrado é “Te”, “te” e “or” que estão sendo representados por diferentes tons de azul.</figcaption></figure><h4>Parênteses</h4><p>Os parênteses (<strong>( )</strong>) definem um grupo que contém um padrão da expressão regular. As bibliotecas da linguagem Python utilizam muito este recurso para definir o início e o fim de um grupo de expressões, que são selecionadas em um determinado grupo para uma ação específica. Na expressão regular <strong>([0-9]+)-([0-9]+)-([0-9]+)</strong> há três grupos que selecionam respectivamente o ano, o mês e o dia dentro deste formato de data separados por barras. Os resultados desta expressão aplicadas nas sentenças da Figura 1 são mostrados na Figura 13, onde as cores verde, laranja e roxo diferenciam os grupos.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/328/1*Wz_tktWE2F1sSApvdQkqpA.png" /><figcaption>Figura 13 — A figura mostra os destaques em tons de verde, laranja e roxo os diferentes grupos definidos pela expressão regular ([0–9]+)-([0–9]+)-([0–9]+). Expressão que visa destacar respectivamente o dia, o mês e o ano de uma data.</figcaption></figure><h4>Contra-barra</h4><p>Dentro das expressões regulares a <strong>\</strong> (contra-barra) tem diferentes papéis. Um de seus principais é a possibilidade de escapar algum caractere que inicialmente seja utilizado para encontrar algum tipo de padrão, como por exemplo o <strong>$</strong> (cifrão). Quando deseja-se selecionar somente este e não fazer referência ao final da frase, adiciona-se a <strong>\</strong> ao seu lado direito <strong>\$</strong> (contra-barra e cifrão). Desta maneira, só o que é selecionado é o caractere “$” como demonstrado na Figura 14 em azul. O mesmo ocorre para as demais expressões <strong>\(</strong>, <strong>\)</strong>, <strong>\[</strong>, <strong>\]</strong>, <strong>\.</strong>, <strong>\+ </strong>e dentre outros.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/331/1*enulOfQyLwgXqsYLSEDepw.png" /><figcaption>Figura 14 — A figura destaca por meio da cor azul somente o caractere “$”. Isto acontece porque a expressão \ (contra-barra) cancela qualquer representação que a regex $ (cifrão) pode vir a ter. Então a expressão regular aplicada foi \$.</figcaption></figure><p>Um outro uso de contra-barra é a sua associação a letras para significar um conjunto de caractere específico. Dentre esses estão o <strong>\d</strong> que significa um conjunto de números, por consequência esta expressão tem o mesmo significado da regex <strong>[0-9]</strong>. Enquanto que <strong>\w</strong> possui a mesma função da expressão <strong>[a-zA-Z0-9_]</strong>, onde são selecionadas qualquer caractere que possa fazer parte de alguma frase, em qualquer idioma juntamente com o sublinhado. Na Figura 15 observa-se em tons de azul os padrão desta expressão na Figura 1.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/331/1*N_vV1x5p-DDdjlAdOZ7baA.png" /><figcaption>Figura 15 — Os resultados da expressão \w que destaca em azul todos os caracteres que possam vir fazer parte de alguma frase de um idioma. Por isso destacando tanto números quanto letras.</figcaption></figure><p>Além desses existem outros como por exemplo o <strong>\s</strong> e a sua versão maiúscula <strong>\S</strong>. Este primeiro faz referência a espaços vazios, enquanto que a sua versão maiúscula seleciona qualquer caractere menos os espaços vazios. De forma similar funciona <strong>\W</strong>, que é o contrário de <strong>\w</strong>, que nega todas as letras que podem fazer parte de alguma frase de idioma funcionando como a expressão regular <strong>[^a-zA-Z0-9_]</strong>. Além desses existem outros exemplos que podem ser acessados por meio da página do Python sobre expressões regulares.</p><h3>Conclusão</h3><p>As expressões regulares representam um padrão que pode ser encontrado dentro de frases, textos ou dados em geral. Esta ferramenta em combinação com uma linguagem de programação como o Python possibilita a limpeza, substituição ou concerto dos dados, depende do problema a ser resolvido.<br>Caso o leitor queira saber mais sobre as expressões e ter mais exemplos de aplicabilidade, recomendo a leitura da documentação do Python e do livro “Expressões Regulares: Uma Abordagem Divertida”. Todas essas referências encontram-se abaixo juntamente com o link do site Regex Expression 101 para prática.</p><p>Acesse o site da <a href="https://www.datarisk.io/">Datarisk</a> e descubra como podemos gerar mais valor para sua empresa.</p><h3>Referencias</h3><ul><li>Python Software Foundation. re — Operações com expressões regulares. Disponível em: &lt;<a href="https://docs.python.org/pt-br/3/library/re.html">https://docs.python.org/pt-br/3/library/re.html</a>&gt;. Acesso em: 18 de fevereiro de 2022.</li><li>JARGAS, Aurélio Marinho. Expressões Regulares: Uma Abordagem Divertida. 5º edição. São Paulo — SP: Novatec Editora Ltda., 2016.</li><li>Regex Expressions 101. Regular Expression. Disponível em: &lt;<a href="https://regex101.com/">https://regex101.com/</a>&gt;. Acesso em: 19 de fevereiro de 2022.</li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a6163e1b4f8a" width="1" height="1" alt=""><hr><p><a href="https://medium.com/datarisk-io/escolha-as-suas-palavras-uma-introdu%C3%A7%C3%A3o-as-express%C3%B5es-regulares-e-ao-seu-entendimento-a6163e1b4f8a">Escolha as suas palavras: Uma introdução às expressões regulares e ao seu entendimento.</a> was originally published in <a href="https://medium.com/datarisk-io">Datarisk.io</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Métricas para Regressão: Entendendo as métricas R², MAE, MAPE, MSE e RMSE]]></title>
            <link>https://medium.com/data-hackers/prevendo-n%C3%BAmeros-entendendo-m%C3%A9tricas-de-regress%C3%A3o-35545e011e70?source=rss-56f46ba5588a------2</link>
            <guid isPermaLink="false">https://medium.com/p/35545e011e70</guid>
            <category><![CDATA[ciencia-de-dados]]></category>
            <category><![CDATA[métricas]]></category>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[regressão]]></category>
            <category><![CDATA[data-science]]></category>
            <dc:creator><![CDATA[Clébio Júnior]]></dc:creator>
            <pubDate>Mon, 13 Dec 2021 00:14:21 GMT</pubDate>
            <atom:updated>2025-08-29T20:05:15.462Z</atom:updated>
            <content:encoded><![CDATA[<h4>Tutorial explicando como funcionam algumas das métricas para avaliação de modelos de regressão.</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*B4UvMnI1Lf9Qb7S1" /><figcaption>Photo by <a href="https://unsplash.com/@amutiomi?utm_source=medium&amp;utm_medium=referral">Miguel A. Amutio</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>Alguns tipos comuns de projetos de <strong><em>machine learning</em></strong> ou <strong>ciência de dados</strong> são destinados a <strong>classificação</strong>, onde há a classificação, como por exemplo, de sentimento de textos, se uma pessoa será inadimplente ou não, se uma determinada movimentação está ligada a fraude, dentre outros. Além da classificação, há também modelos de <strong>regressão </strong>que têm como objetivo a previsão de valores numéricos. Apesar de terem funções parecidas, não é possível usar métricas de classificação em problemas de regressão e vice-versa. Portanto, ao avaliar modelos de regressão é preciso utilizar abordagens diferentes para a sua avaliação.</p><p>Então, quais são as métricas destinadas para avaliar modelos de regressão e o que elas representam?</p><p>Diante disso, neste texto serão apresentadas algumas métricas que podem ser importantes na hora de avaliar modelos de regressão e como elas podem ser interpretadas principalmente para descrever os seus resultados. As métricas abordadas serão a R², Erro Absoluto Médio (MAE), Erro Percentual Médio Absoluto (MAPE), Erro Quadrático Médio (MSE) e Raiz do Erro Quadrático Médio (RMSE).</p><blockquote>Caso o leitor queira saber mais sobre métricas de classificação, recomendo a leitura do artigo <a href="https://medium.com/data-hackers/indo-al%C3%A9m-da-acur%C3%A1cia-entendo-a-acur%C3%A1cia-balanceada-precis%C3%A3o-recall-e-f1-score-c895e55a9753">Indo Além da Acurácia: Entendo a Acurácia Balanceada, Precisão, Recall e F1 score</a>. Neste texto explico sobre as principais métricas para avaliar modelos de classificação juntamente com suas interpretações.</blockquote><p>Quando lidamos com modelos de classificação, as métricas fazem comparações se a classes foram corretamente previstas ou não. Ao utilizarmos a regressão, isto fica inviável, pois estamos lidando com valores numéricos, muitas vezes com casas decimais, e não apenas 0 ou 1. Portanto, a principal abordagem das métricas de regressão baseia-se na diferença entre o valor real e o previsto como pode ser observado na equação 1. No qual, <em>y</em> representa o valor real, enquanto que <em>ŷ</em> é atribuído a valores que foram preditos.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/118/1*HgL3yiujZiV9G0F1AIwHaw.png" /><figcaption>Equação 1 — Equação que mostra o cálculo da diferença entre o valor real e a previsão. Na equação e é o desvio, enquanto que y é o valor real e ŷ é o valor predito. Este cálculo é a base de todas as métricas aqui abordadas, mas cada uma tendo o seu propósito e sua interpretabilidade.</figcaption></figure><p>Todas as métricas apresentadas neste artigo usam esta mesma ideia de cálculo da diferença entre o valor real e o previsto, contudo com algumas diferenças. Estas diferenças são importantes para nos dar diferentes perspectiva sobre a performance do modelo.</p><h3>R²</h3><p>A métrica <strong>R²</strong>, também conhecida como <strong>R-dois</strong> ou <strong>coeficiente de determinação</strong>, representa o percentual da variância dos dados que é explicado pelo modelo. Os resultados variam de 0 a 1, geralmente também são expressos em termos percentuais, ou seja, variando entre 0% e 100%. Quanto maior é o valor de R², mais explicativo é o modelo em relação aos dados previstos. Na equação 2 é mostrado o cálculo desta métrica, no qual<em> y </em>e<em> ŷ</em> os valores reais e previstos, respectivamente, e <em>y-barra</em> representa a média dos valores reais.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/374/1*FF6mSGsAM-zX174JMEZwIg.png" /><figcaption>Equação 2 — Equação do coeficiente de determinação. Os valores de y são os valores verdadeiros e o y-barra é a média desses valores, enquanto que ŷ são os valores preditos. Os resultados de R-quadrado ficam entre 0 e 1, quanto mais perto de 1 melhor e pior para resultados perto de 0.</figcaption></figure><p>Porém, utilizando somente esta métrica, será que um valor de 0,5 já seria o suficiente para colocar o modelo em produção? Faz-se necessário aproximar ainda mais o seu resultado para 1? Para responder a essa e outras perguntas, deve-se sempre utilizar outras métricas para se ter uma visão global sobre a performance do modelo.</p><h3>Erro Médio Absoluto</h3><p>O <strong>erro médio absoluto</strong> (MAE — do inglês <em>Mean Absoluto Error</em>), como demonstrado na equação 3, mede a média da diferença entre o valor real com o predito. Mas por haver valores positivos e negativos, é adicionado um módulo entre a diferença dos valores. Além disso, esta métrica não é afetada por valores discrepantes — os denominados <em>outliers</em>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/357/1*wI8HtHdbC28rZD4EKiSKjA.png" /><figcaption>Equação 3 — Equação do erro médio absoluto. Nesta equação há o calculo da média da diferença entre o valor predito ŷ e o real y. Quanto menor o valor de MAE, significa que melhor são os resultados preditos pelo modelo de <em>machine learning</em>.</figcaption></figure><p>O valor de saída da equação tem a mesma escala dos dados utilizados para previsão, logo fica mais fácil a sua interpretação. Se o valor de <strong>MAE</strong> resultante for igual a 10,01 m, por exemplo, este resultado significa que o modelo pode estar errando em média 10,01 m para mais quanto para menos em relação ao valor correto. Por isso que para uma previsão futura, este resultado precisa ser levado em consideração para a tomada de decisão. Contudo o quanto este erro representa em relação ao valor real percentualmente?</p><h3>Erro Percentual Absoluto Médio</h3><p>O<strong> erro percentual absoluto médio </strong>(MAPE — do inglês <em>Mean Absolute Percentual Error</em>) é uma métrica que mostra a porcentagem de erro em relação aos valores reais. Na equação 4 representa o cálculo de <strong>MAPE</strong> que basicamente se parece com <strong>MAE</strong>, mas com o acréscimo de uma divisão por |<em>y|</em>. Então se o resultado de MAPE for igual a 40% significa que o nosso modelo faz previsões que em média a diferença entre o valor previsto e o real equivale a 40% do valor real tanto para mais quanto para menos.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/427/1*QKqcdW3BNvRblw73KPPUuw.png" /><figcaption>Equação 4 — Equação do erro percentual absoluto médio. Nesta equação há o cálculo do valor da média da divisão entre a diferença entre o valor real e o predito sobre o valor real. Para evitar a divisão por zero, é utilizado o valor de ε para ser utilizado caso o valor de y seja 0. Este valor é definido pela biblioteca sklearn como 2,220446049250313e-16.</figcaption></figure><p>Ao observar a equação 4 nota-se que caso<em> </em>o valor de <em>y</em> seja 0, ocorrerá um erro, devido a divisão por zero. Por isso que a biblioteca <a href="https://scikit-learn.org/stable/modules/generated/sklearn.metrics.mean_absolute_percentage_error.html">scikit-learn</a> utiliza a tratativa de colocar um número muito pequeno, representado por ε, cujo valor é 2,220446049250313e-16. A métrica MAPE é uma das métricas mais usadas para reportar a performance do modelo, trazendo uma compreensão mais abrangente do resultado de MAE.</p><h3>Erro Quadrático Médio</h3><p>O <strong>erro quadrático médio</strong> (MSE — do inglês M<em>ean Squared Error</em>) é uma métrica que calcula a média de diferença entre o valor predito com o real, como a métrica <strong>MAE</strong>. Entretanto, ao invés de usar o módulo do resultado entre o valor de <em>y</em> e <em>ŷ</em>, nesta métrica a diferença é elevada ao quadrado. Desta maneira penalizando valores que sejam muito diferentes entre o previsto e o real. Portanto, quanto maior é o valor de <strong>MSE</strong>, significa que o modelo não performou bem em relação as previsões.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/374/1*__2VLd_rJ-iPt56cMvvjoA.png" /><figcaption>Equação 5 — Equação do erro quadrático médio. Nesta equação há o cálculo da diferença entre o valor real y e o valor predito ŷ, porém elevando o resultado ao quadrado. Desta forma valores altos, ou seja, que a previsão esteja muito diferente da previsão são mais penalizados que os demais.</figcaption></figure><p>Apesar de sua ideia poderosa, a métrica MSE apresenta um problema de interpretabilidade. Por haver a elevação ao quadrado, a unidade fica distorcida, em outras palavras, se a unidade medida for metros (m), o resultado será em m². Por isso que uma adaptação da MSE é a <strong>RMSE</strong> que será apresentada abaixo.</p><h3>Raiz do Erro Quadrático Médio</h3><p>A <strong>raiz do erro quadrático médio </strong>(RMSE — do inglês, <em>Root Mean Squared Error</em>) é basicamente o mesmo cálculo de <strong>MSE</strong>, contendo ainda a mesma ideia de penalização entre diferenças grandes do valor previsto e o real. Porém, para lidar com o problema da diferença entre unidades, é aplicada a raiz quadrática como demonstrado na equação 6. Assim a unidade fica na mesma escala que o dado original, resultando em uma melhor interpretabilidade do resultado da métrica.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/430/1*fJ06CUuJ2X-deRfYHGArwA.png" /><figcaption>Equação 6 — Equação da raiz do erro quadrático médio. Nesta equação há o cálculo da diferença entre o valor y e ŷ, contudo com a elevação do resultado ao quadrático. Mas para deixar o resultado na mesma escala que os dados, é aplicado a raiz quadrada no resultado.</figcaption></figure><p>Apesar do valor ter a mesma unidade, ele não costuma se assemelhar ao resultado encontrado de <strong>MAE</strong>, demonstrando como os <em>outliers</em> podem estar impactando nas previsões do modelo. Mas a sua interpretabilidade pode seguir a mesma lógica, onde o resultado da métrica sendo igual a 80,0 m, significa que o modelo pode estar errando em 80,0 m para mais ou para menos. Por essa razão, esta métrica pode ser uma boa opção quando é preciso ter uma avaliação mais criteriosa sobre as previsões do modelo.</p><h3>Conclusão</h3><p>Neste artigo foram apresentadas algumas das métricas mais utilizadas para avaliar o modelos de regressão juntamente com as suas particularidades.</p><p>Então qual métrica usar?</p><p>Isso depende da solução que o modelo pode vir a resolver com o modelo de<strong><em> machine learning</em></strong>. Mas uma abordagem comum e muito interessante é utilizar todas para se ter diferentes perspectivas em relação a performance do modelo.</p><p>Dentre as métricas apresentadas, a <strong>R²</strong> é uma métrica muito comum, mas difícil de ser utilizada sozinha para se tirar conclusões completas sobre a performance do modelo. Tanto <strong>MAE</strong> e <strong>MAPE</strong> apresenta uma boa interpretabilidade, principalmente para reporte dos resultados do modelo. Enquanto que <strong>MSE</strong> e <strong>RMSE</strong> são afetados por valores discrepantes, o que pode ser importante quando é preciso ter uma avaliação mais criteriosa do modelo.</p><p>Espero que o artigo tenha ajudado e que tenha gostado. Até o próximo!</p><h3>Referencias</h3><ul><li>Scikit-learn developers. Regression metrics. Disponível em: &lt;<a href="https://scikit-learn.org/stable/modules/model_evaluation.html#regression-metrics">https://scikit-learn.org/stable/modules/model_evaluation.html#regression-metrics</a>&gt;. Acesso em: 2 de setembro de 2021.</li><li>BRUCE, Peter; BRUCE, Andrew. Estatística prática para cientistas de dados: 50 conceitos essenciais. 1ª edição. Rio de Janeiro — RJ: Alta Books, 2019.</li><li>HARRISON, Matt. Machine Learning: Guia de referência rápido. 1ª edição. São Paulo — SP: Novatec Editora Ltda, 2020.</li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=35545e011e70" width="1" height="1" alt=""><hr><p><a href="https://medium.com/data-hackers/prevendo-n%C3%BAmeros-entendendo-m%C3%A9tricas-de-regress%C3%A3o-35545e011e70">Métricas para Regressão: Entendendo as métricas R², MAE, MAPE, MSE e RMSE</a> was originally published in <a href="https://medium.com/data-hackers">Data Hackers</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Indo Além da Acurácia: Entendo a Acurácia Balanceada, Precisão, Recall e F1 score.]]></title>
            <link>https://medium.com/data-hackers/indo-al%C3%A9m-da-acur%C3%A1cia-entendo-a-acur%C3%A1cia-balanceada-precis%C3%A3o-recall-e-f1-score-c895e55a9753?source=rss-56f46ba5588a------2</link>
            <guid isPermaLink="false">https://medium.com/p/c895e55a9753</guid>
            <category><![CDATA[data-science]]></category>
            <category><![CDATA[machinelerning]]></category>
            <category><![CDATA[métricas]]></category>
            <dc:creator><![CDATA[Clébio Júnior]]></dc:creator>
            <pubDate>Sun, 21 Feb 2021 15:38:06 GMT</pubDate>
            <atom:updated>2021-09-19T17:28:54.158Z</atom:updated>
            <content:encoded><![CDATA[<h3>Indo Além da Acurácia: Entendo a Acurácia Balanceada, Precisão, Recall e F1 score</h3><h4>Tutorial explicando como funcionam outras métricas para validação de um modelo de machine learning além da acurácia. As métricas abordadas serão a acurácia balanceada, precisão, recall e F1 score.</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*fqpDo8PqYh9MNJYo" /><figcaption>Photo by <a href="https://unsplash.com/@darlingarias?utm_source=medium&amp;utm_medium=referral">Darling Arias</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>Durante um projeto de ciência de dados uma das etapas mais esperadas pode ser o desenvolvimento de um modelo de <em>machine learning</em>. Dentro desta etapa há o treino e a validação do modelo, e uma métrica muito utilizada para verificar a performance do algoritmo de <em>machine learning</em> é a <strong>acurácia</strong>. Porém até onde a acurácia pode nos dar uma representatividade do quanto o modelo pode ser eficaz para a classificação de duas ou mais classes?</p><p>Por isso que neste post serão descritas outras métricas que podem te ajudar a ter outras perspectivas de como o seu modelo está performando. Principalmente quando estamos criando uma solução de ciência de dados e temos uma base de dados desbalanceada, ou seja, há mais registros de uma determinada classe do que de outra. Assim sendo, abordaremos as métricas de <strong>acurácia balanceada</strong>, <strong>precisão</strong>, <strong>recall </strong>(<strong>sensibilidade</strong>)<strong> </strong>e<strong> F1 score</strong>.</p><blockquote>Todas as métricas apresentadas neste post têm seus valores variando entre 0 e 1, no qual 0 quer dizer péssimo e 1 excelente como resultado. Mas cada valor das métricas têm interpretações diferentes.</blockquote><h3>Matriz de Confusão</h3><p>Antes de entendermos como as métricas mencionadas acima funcionam, é preciso saber o que é uma matriz de confusão. Pois ela será a nossa base para os cálculos de cada métrica. Este tipo de matriz basicamente mostra quais foram as predições das classes “sim” ou “não”, relacionando-as. Onde as linhas são as classes verdadeiras e as colunas são as predições. Desta maneira é possível fazer relações entre as classificações e como elas foram preditas. Na Tabela 1 é mostrado um tipo de matriz de confusão.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/143/1*AZwZY6Rz1V3jKGO36mHKTg.png" /><figcaption>Tabela 1: Matriz de confusão onde são relacionadas as classes “não” e “sim” com as predições feitas por um modelo de machine learning. VN, FP, FN e VP são siglas que significam “verdadeiro negativo”, “falso positivo”, “falso negativo” e “verdadeiro positivo”, respectivamente.</figcaption></figure><p>Isto posto, para as classificações corretas da classe “não” são definidas como <strong>verdadeiras negativas</strong> (VN), enquanto que para as classificações corretas da classe “sim” são denominadas como <strong>verdadeiras positivas </strong>(VP). Para classificações erradas das classes “não” como “sim” são chamadas de <strong>falsas positivas </strong>(FP), bem como as classificações incorretas da classe “sim” como “não” são declaradas como <strong>falsas negativas </strong>(FN).</p><p>A Tabela 2 mostra a mesma Tabela 1 com valores para serem demonstrados como exemplos de um modelo de <em>machine learning</em> de um projeto de ciência de dados para previsão de transações bancárias fraudulentas. Os valores 101668, 3, 36 e 95 representam respectivamente VN, FN, FP e VP. Para mais informações sobre o projeto de ciência de dados citado, acesse o <a href="https://github.com/juniorcl/transaction-fraud-detection">link</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/161/1*TYkGckOItV47Nv_WtF_oTQ.png" /><figcaption>Tabela 2: Matriz de confusão com resultados de um modelo de machine learning para prever faudes em transações bancárias. Os valores 101668, 3, 36 e 95 representam respectivamente o número de VN, FP, FN e VP.</figcaption></figure><h3>Acurácia Balanceada</h3><p>A <strong>acurácia</strong> basicamente faz o cálculo de todos os acertos (VP e VN) divididos por todos os acertos mais os erros (FP e FN), como é colocado na Equação 1. Porém, quando há uma classe muito desbalanceada, a acurácia não é uma boa métrica a ser usada. Pois como pode ser visto na equação, os valores de classificados VN podem mascarar a classificações baixas de VP. Transmitindo uma sensação errada de que o modelo está fazendo a classificação correta.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/369/0*MmIFZI7vtTkRPB7b" /><figcaption>Equação 1: Acurácia</figcaption></figure><p>Uma alternativa à acurácia é utilizar a <strong>acurácia balanceada</strong> que não é influenciada pelo desbalanceamento das classes, porque os cálculos ocorrem em cima da taxa de verdadeiros positivos e verdadeiros negativos, como demonstrado na Equação 2. Logo, conseguindo chegar a um valor mais correto em relação aos acertos do modelo em relação as classes.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/557/0*bXd9ieoyTnk8uNd7" /><figcaption>Equação 2: Acurácia Balanceada.</figcaption></figure><p>Para exemplificar, serão calculados os valores da acurácia e acurácia balanceada utilizando os valores da Tabela 2 para os cálculos. O resultado encontrado para a acurácia é de 0,9996, ou seja, podemos logo imaginar que praticamente acertou todas as classes e o modelo está ótimo. Contudo, a maior parte dos acertos vieram da classe majoritária, enviesando o resultado.</p><p>Todavia quando utilizamos a acurácia balanceada, no qual é levada em conta os acertos de cada classe de forma igualitária, o valor encontrado é de 0,8626. Isto mostra uma valor mais próximo do quanto o modelo consegue acertar cada classe.</p><p>Apesar disso mesmo usando ainda a acurácia balanceada, ainda temos uma visão global de acerto de todas as classes, então não conseguimos verificar o quanto um modelo acertou ou errou em relação a uma determinada classe do nosso interesse. Então, em nosso exemplo, quanto o modelo conseguiu acertar que um transação foi fraudulenta? Qual a porcentagem das classes “sim” foram classificadas corretamente?</p><h3>Precisão</h3><p>Ok! Entendemos a acurácia balanceada e como conseguimos ter uma visão global dos acertos de todas as classes. Mas é preciso ter mais detalhes sobre a capacidade de classificação do modelo. Em nosso exemplo do modelo de detecção de fraude, o quanto ele consegue acertar que uma transação é de fato fraudulenta? A métrica utilizada para responder tal questão é a <strong>precisão </strong>que mostra a porcentagem de acertos feitas pelo modelo. Esta métrica relaciona o número de VP e VN como demonstrado na Equação 3.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/229/0*Dq0xL47n69f-ThMn" /><figcaption>Equação 3: Precisão.</figcaption></figure><p>Para uma melhor interpretação da métrica, imagine que você tenha um alvo distante de você e precisa acertá-lo. A cada 100 tentativas você consegue acertar 70 no alvo, logo, a sua precisão é de 70%. A mesma lógica é associada a interpretação do valor da precisão do modelo de <em>machine learning</em>. Para o nosso exemplo da Tabela 2, temos uma precisão igual a 0,9694 ou 96,94%. Logo, para cada 100 tentativas, o modelo consegue acertar aproximadamente 97 vezes.</p><h3>Recall</h3><p>Além da precisão, que mostra o quanto o modelo consegue diferenciar as classes, é importante também sabermos o quanto das fraudes bancárias foram identificadas corretamente em nosso exemplo da Tabela 2. Por esse motivo, veremos a métrica <strong>recall </strong>ou <strong>sensibilidade</strong>. Esta métrica mostra o quanto um modelo consegue reconhecer de uma determinada classe. O cálculo da recall acontece por meio da divisão do número de VP e FN, em outras palavras, classes “sim” que foram classificadas erroneamente.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/205/0*PFvWAOf_wN_n-llT" /><figcaption>Equação 4: Recall.</figcaption></figure><p>Para o nosso exemplo da Tabela 2 o valor de recall foi de 0,7252 ou 72,52%. O resultado demonstra que o modelo conseguiu classificar corretamente aproximadamente 73% das classes “sim”. Portanto, esta métrica pode ser utilizada para reportar a porcentagem que o modelo consegue identificar corretamente como uma transação fraudulenta.</p><h3>F1 score</h3><p>Depois de ver as métricas precisão e sensibilidade, pode estar pensando que essas métricas são importantes para verificar a performance do modelo. Dado que quanto mais o modelo consegue diferenciar as classes e predizer melhor a classe “sim” de interesse, melhor será a sua performance.</p><p>Então como levar em consideração ambas as métricas para avaliar a performance de um modelo?</p><p>Neste contexto uma métrica que podemos utilizar é a <strong>F1 score</strong>. F1 basicamente faz a média harmônica entre a precisão e a recall, como é apresentado na Equação 5. No exemplo da Tabela 2, o valor da F1 score encontrado foi de 0,8297. Esta métrica pode ser viável no desenvolvimento de novos modelos para verificar qual modelo obteve a melhor performance.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/562/0*ikrpb0ESZh8KxncD" /><figcaption>Equação 5: F1-score.</figcaption></figure><h3>Conclusão</h3><p>Neste post conseguimos entender algumas métricas que são bastante utilizadas para validação de um modelo de <em>machine learning</em>. Pudemos entender que nem sempre a <strong>acurácia </strong>não é a única métrica de validação e ela pode nos enganar sobre o modelo.</p><p>Portanto para classes desbalanceadas ao invés de utilizar a acurácia, uma métrica mais adequada é a <strong>acurácia balanceada</strong>. Porém esta métrica apresenta uma visão global dos acertos das classes do modelo.</p><p>Porém uma visão mais especializada de classes teremos que utilizar outras. Temos a <strong>precisão</strong> que nos mostra o quanto o modelo conseguiu acertar e a <strong>recall </strong>que mostra o quanto de uma determinada classe o algoritmo de <em>machine learning</em>. E para avaliarmos ambas as métricas utilizamos a <strong>F1 socre</strong>.</p><p>Por fim, espero que tenha gostado do post e entendido sobre outras métricas para avaliação de seus modelos. Até!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c895e55a9753" width="1" height="1" alt=""><hr><p><a href="https://medium.com/data-hackers/indo-al%C3%A9m-da-acur%C3%A1cia-entendo-a-acur%C3%A1cia-balanceada-precis%C3%A3o-recall-e-f1-score-c895e55a9753">Indo Além da Acurácia: Entendo a Acurácia Balanceada, Precisão, Recall e F1 score.</a> was originally published in <a href="https://medium.com/data-hackers">Data Hackers</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>