Indo Além da Acurácia: Entendo a Acurácia Balanceada, Precisão, Recall e F1 score

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.

Clébio de Oliveira Júnior
Data Hackers
6 min readFeb 21, 2021

--

Photo by Darling Arias on Unsplash

Durante um projeto de ciência de dados uma das etapas mais esperadas pode ser o desenvolvimento de um modelo de machine learning. 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 machine learning é a acurácia. 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?

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 acurácia balanceada, precisão, recall (sensibilidade) e F1 score.

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.

Matriz de Confusão

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.

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.

Isto posto, para as classificações corretas da classe “não” são definidas como verdadeiras negativas (VN), enquanto que para as classificações corretas da classe “sim” são denominadas como verdadeiras positivas (VP). Para classificações erradas das classes “não” como “sim” são chamadas de falsas positivas (FP), bem como as classificações incorretas da classe “sim” como “não” são declaradas como falsas negativas (FN).

A Tabela 2 mostra a mesma Tabela 1 com valores para serem demonstrados como exemplos de um modelo de machine learning 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 link.

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.

Acurácia Balanceada

A acurácia 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.

Equação 1: Acurácia

Uma alternativa à acurácia é utilizar a acurácia balanceada 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.

Equação 2: Acurácia Balanceada.

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.

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.

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?

Precisão

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 precisão 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.

Equação 3: Precisão.

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 machine learning. 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.

Recall

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 recall ou sensibilidade. 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.

Equação 4: Recall.

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.

F1 score

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.

Então como levar em consideração ambas as métricas para avaliar a performance de um modelo?

Neste contexto uma métrica que podemos utilizar é a F1 score. 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.

Equação 5: F1-score.

Conclusão

Neste post conseguimos entender algumas métricas que são bastante utilizadas para validação de um modelo de machine learning. Pudemos entender que nem sempre a acurácia não é a única métrica de validação e ela pode nos enganar sobre o modelo.

Portanto para classes desbalanceadas ao invés de utilizar a acurácia, uma métrica mais adequada é a acurácia balanceada. Porém esta métrica apresenta uma visão global dos acertos das classes do modelo.

Porém uma visão mais especializada de classes teremos que utilizar outras. Temos a precisão que nos mostra o quanto o modelo conseguiu acertar e a recall que mostra o quanto de uma determinada classe o algoritmo de machine learning. E para avaliarmos ambas as métricas utilizamos a F1 socre.

Por fim, espero que tenha gostado do post e entendido sobre outras métricas para avaliação de seus modelos. Até!

--

--