Métricas de Modelos Preditivos: Acurácia em Problemas de Classificação Desbalanceados

Mikael Souza
Computando Arte
Published in
5 min readSep 21, 2021
Foto por Colton Sturgeon no Unsplash

Breve contextualização…

Uma grande quantidade de problemas de classificação do mundo real tendem a ser desbalanceados, ou seja, são problemas nos quais tenta-se classificar dados em que existem poucas ocorrências de uma classe e muitas ocorrências de outra classe. Para facilitar o entendimento, usarei um exemplo prático: Avaliar se uma compra realizada no cartão de crédito é fraudulenta ou não.

Podemos imaginar que uma bandeira de cartões de crédito tenha o conhecimento de todas as compras realizadas nos cartões de todos os clientes. Também podemos imaginar que uma pequena parcela, digamos 0.1%, destas compras são acompanhadas de reclamações, nas quais os clientes afirmam não reconhecê-las. Por conta disso, estas compras são consideradas fraudulentas e a bandeira deve reembolsar o valor cobrado ao cliente. Encurtando a história, é plausível que a bandeira tente prever se uma determinada compra é fraudulenta ou não afim de evitar roubos e frustrações para os clientes.

Esse problema pode ser modelado como um problema de classificação binária em que desejamos determinar se uma compra é fraudulenta (classe positiva) ou não fraudulenta (classe negativa). A peculiaridade deste e de muitos outros problemas do mundo real é a proporção entre dados positivos e negativos.

Utilizando a base de dados Credit Card Fraud Detection, base relacionada a detecção de fraudes em transações de cartões de crédito que está disponível no Kaggle, podemos verificar que, de fato, a quantidade de compras fraudulentas é muito inferior quando comparado à quantidade de transações comuns.

> creditcard_data['Class'].value_counts(normalize=True)0    0.998273 # 99.83% categorizado como 0, ou seja, não fraudulento
1 0.001727 # 0.17% categorizado como 1, ou seja, fraudulento
Name: Class, dtype: float64

Essa proporção desbalanceada é uma característica compartilhada por diversos outros problemas como avaliação de risco de crédito — se um cliente pagará ou não um empréstimo, por exemplo — e detecção de spam. Apesar de serem comuns, estes problemas são difíceis de lidar, exigindo maior cuidado no tratamento de dados e na avaliação dos resultados dos modelos preditivos utilizados.

Apresentado tudo isso, neste post exploraremos como avaliar corretamente os resultados de modelos preditivos para problemas desbalanceados, afinal não há como tomar decisões para melhorar os resultados de predições sem antes entender o que está errado.

Como ser iludido em 3 passos: Acurácia

Tirinha mostrando uma empresa com problemas de fraudes. O cientista de dados monta um modelo preditivo, mas só avalia o desempenho usando acurácia. A empresa pega fogo 3 meses depois.

Acredito que posso afirmar que, caso você tenha trabalhado com dados e modelos preditivos, você já tenha usado a acurácia. É uma métrica útil para entender o quão bom são as predições dos modelos de classificação. Vamos revisar brevemente como a métrica funciona e a sua intuição.

Vamos imaginar um problema de classificação binária qualquer, por exemplo prever se uma pessoa sobreviveria ao naufrágio do Titanic ou não usando algumas informações. Abstraindo bastante detalhe, podemos pensar que um modelo treinado para este problema receberá informações relacionadas aos passageiros e responde 0 caso o modelo acredite que o passageiro passageiro não sobreviva e 1 caso sobreviva. Podemos imaginar também que algumas predições realizadas por este modelo possam estar incorretas. Segue um pseudocódigo para ilustrar:

predicao    # O que o modelo acredita que vá acontecer
> [0, 0, 1, 1]
sobreviveu # O que realmente aconteceu
> [0, 1, 0, 1]

A acurácia é a métrica que calcula a porcentagem de predições feitas corretamente pelo modelo, portanto, para este exemplo, teremos uma acurácia de 50% visto que metade das predições são diferentes do que aconteceu. De forma análoga, um modelo que sempre prevê valores inversos aos valores reais resultaria em 0% de acurácia e um modelo que sempre prevê os valores corretamente resultaria em 100% de acurácia.

Neste momento já até consigo ouvir o pensamento de alguns leitores com a seguinte pergunta: “Mikas, se a acurácia é baseada na porcentagem de predições corretas, quanto maior a acurácia, melhor, certo?”.

Nem sempre.

Vamos pensar no problema de classificação de fraudes novamente. Algum cientista de dados mais júnior chega conosco e nos apresenta um modelo com 99% de acurácia. Esse modelo deve ser muito bom, não?

O modelo ingênuo e sua acurácia exorbitante

Uma tirinha mostrando um computador apontando para diversas pessoas e dizendo que as transações delas não são fraudulentas. A última pessoa é um ladrão com diversos cartões de crédito.

Um curto exercício de imaginação: Nós temos um modelo ingênuo. A ingenuidade dele se dá porque ele sempre prevê o resultado negativo. Independente de qualquer entrada que se dá a esse modelo, a predição dele é sempre a mesma: 0. Esse modelo serve pra absolutamente nada, entretanto, vamos colocá-lo no contexto de detecção de fraudes e ver o que acontece.

Como vimos anteriormente, a grande maioria das compras realizadas em cartões de crédito não são fraudulentas. Na base apresentada, as fraudes correspondem a apenas 0.17%, sendo 99.83% compras comuns. Considerando que utilizamos 0 para classe negativa (não fraude) e 1 para classe positiva (fraude), o que aconteceria se nosso modelo ingênuo fosse utilizado para classificar estes dados?

Espero que tenha ficado claro, mas se você ainda está se perguntando, sim, a acurácia para este modelo inútil seria de 99.83%, enchendo os olhos do cientista de dados menos experiente e que não conhece as armadilhas de problemas desbalanceados.

Por que isso ocorre? Bem, o modelo sempre responde as previsões com a classe negativa, independente dos dados de entrada. Por conta disso, o modelo acertará todas as previsões que são realmente negativas. Considerando que a classe negativa corresponde a 99.83% da nossa base de dados, a acurácia será de 99.83% mesmo que o modelo erre todas as predições para classes positivas.

Agora vem a pergunta: Qual a utilidade de acertar todas as predições da classe negativa e errar todas da positiva? Isso mesmo:

Nenhuma.

A bandeira do cartão de crédito criou esse modelo exatamente para conseguir distinguir quais compras são fraudulentas e quais não são. Se o modelo sempre prevê a classe negativa, é o mesmo que a empresa assumir que nenhuma compra é fraudulenta e portanto, nenhuma compra precisa de intervenção. Isso faz com que a empresa não impeça nenhuma compra que é realmente fraudulenta, não causando redução nas reclamações feitas pelos clientes. Uma perda de tempo.

“Mas Mikas”, eu imagino você falando, “Se a acurácia não é ideal, como que eu avalio o desempenho do meu modelo nesses casos?”. Isso será discutido em um próximo post onde falarei sobre as métricas precision, recall, f-1 e AUC. Estas são mais adequadas para problemas desbalanceados e apresentam informações distintas relacionados ao desempenho do modelo, informações estas que são importantes de conhecer. Caso esteja ansioso para conhecer algumas destas métricas, você também pode dar uma checada no texto excelente sobre Precision e Recall da Erica Bertan, aqui no Computando Arte.

Este post faz parte de uma série de posts relacionados a métricas para avaliação de modelos em problemas de classificação desbalanceados. Ainda não sei quantos posts serão, mas o objetivo é apresentar o contexto, a necessidade e objetivo das métricas discutidas, além de tentar divertir (um pouco) o leitor.

--

--