Aprendizado supervisionado · Avaliação de modelos

Meu modelo é bom?

A acurácia mostra com que frequência um classificador acerta. Precisão e recall revelam quais erros esse único número pode esconder.

Um classificador pode acertar 95% das vezes e, ainda assim, deixar passar a maioria dos casos que nos importam.

Isso só parece contraditório quando esperamos que um único número descreva todo tipo de acerto e de erro. Problemas de previsão diferentes exigem formas diferentes de avaliação, e até um mesmo problema pode exigir várias métricas, pois cada uma responde a uma pergunta diferente.

Aqui, vamos nos concentrar em classificação binária: o modelo precisa colocar cada exemplo em uma de duas classes.

Para tornar o problema visual, vamos representar cada datapoint como um ponto. Esse ponto pode corresponder a tipos muito diferentes de dado: um texto classificado por emoção, uma linha de um dataset tabular com várias features sobre um cliente ou uma imagem classificada conforme contenha ou não determinado objeto.

O classificador não vê de fato um ponto verde ou vermelho. Ele vê o datapoint e suas features e precisa prever a qual das duas classes ele pertence. Antes dessa previsão, podemos pensar no ponto como cinza: sua classe é desconhecida para o modelo.

Como estamos avaliando o classificador com dados rotulados de teste, porém, nós conhecemos a classe real depois. Por isso, vamos colorir cada ponto de verde ou vermelho para mostrar o que ele realmente era. As cores existem para avaliarmos as previsões, não como informação fornecida ao modelo.

Agora imagine que nosso test set contenha pontos verdes e vermelhos. O classificador recebe cada datapoint e o coloca em um de dois círculos:

A cor do ponto representa sua classe real. O círculo representa a previsão do modelo.

Positivo realNegativo realO círculo ao redor mostra a previsão do modelo.

A forma mais imediata de avaliar esse classificador é contar quantas vezes o ponto terminou no círculo correto.

Acuraˊcia=classificac¸o˜es corretastodas as classificac¸o˜es\text{Acurácia} = \frac{\text{classificações corretas}} {\text{todas as classificações}}

Se um ponto verde cai no círculo verde, o modelo acertou. Se um ponto vermelho cai no círculo vermelho, ele também acertou.

Portanto, a acurácia responde a uma pergunta útil:

Com que frequência o modelo acerta?

Entretanto, saber com que frequência um modelo acerta não revela tudo o que pode nos importar. Em muitas aplicações, também precisamos entender como o modelo erra.

Duas perguntas vão orientar o restante deste artigo.

Precisão: entre os exemplos que eu disse serem positivos, quantos realmente eram positivos?

Recall: entre os exemplos que realmente eram positivos, quantos consegui identificar como positivos?

À primeira vista, essas perguntas podem parecer semelhantes, mas elas examinam as mesmas previsões a partir de duas direções muito diferentes.

Antes de vermos as fórmulas, é mais útil entender por que faríamos cada uma dessas perguntas.

Métricas como ROC-AUC, F1, PR-AUC, especificidade e muitas outras oferecem formas adicionais de avaliar classificadores. Vamos deixar a maioria delas de lado e nos concentrar em construir uma intuição clara para acurácia, precisão e recall.


Quando deixar um caso passar é perigoso

Imagine um teste médico usado para rastreamento de câncer.

Cada paciente é representado por um ponto:

O classificador usa informações sobre a pessoa e toma uma decisão simples:

Positivo realNegativo realOs círculos mostram quem passa por uma investigação adicional e quem não passa.

Esse classificador pode errar de duas maneiras.

A primeira é encaminhar uma pessoa saudável para uma investigação adicional.

Ela pode precisar fazer outro exame, passar mais tempo no sistema de saúde e sentir uma preocupação desnecessária. Esse erro claramente tem um custo.

O segundo erro é mais grave: uma pessoa que realmente tem câncer é classificada como saudável.

Ela pode sair do processo de rastreamento sem receber a investigação adicional de que precisava.

Os dois erros importam, mas sistemas de rastreamento costumam ter uma assimetria clara entre eles. Deixar um caso real passar pode custar muito mais do que investigar alguém que, no fim, se mostra saudável.

Por isso, talvez aceitemos deliberadamente que alguns pontos vermelhos entrem no círculo verde se isso impedir que pontos verdes escapem para o círculo vermelho.

Modelo de triagem

Avance em direção a um recall maior

Limiar de triagemPreviu negativoPreviu positivo
Recall43.8%

7 de 16 positivos reais encontrados · 1 alarme falso

À medida que o modelo prevê positivo com mais frequência, menos positivos reais são perdidos — mas mais negativos reais viram alarmes falsos.

Agora ignore os pontos vermelhos por um momento e destaque todas as pessoas que realmente têm câncer, independentemente do círculo no qual o classificador as colocou.

Isso nos leva naturalmente à pergunta que importa:

Entre todas as pessoas que realmente têm câncer, quantas detectamos?

Essa quantidade é chamada de recall e, em contextos médicos, também costuma ser chamada de sensibilidade.

Recall=pontos verdes no cıˊrculo verdetodos os pontos realmente verdes\text{Recall} = \frac{\text{pontos verdes no círculo verde}} {\text{todos os pontos realmente verdes}}

O denominador inclui todos os pontos verdes do dataset. Alguns podem estar no círculo verde e outros, no círculo vermelho.

O numerador mantém apenas os pontos verdes que o classificador enviou corretamente ao círculo verde.

Visualmente, o recall começa pela realidade.

Antes de olhar o que o modelo previu, perguntamos: Quais pontos são realmente positivos? Depois, medimos quantos deles o classificador encontrou.

Assim, um classificador pode ter recall alto mesmo quando alguns pontos vermelhos também são enviados ao círculo verde. Se quase todos os pontos genuinamente verdes forem capturados, o recall será alto.

Isso não significa que o classificador seja necessariamente bom de modo geral. Recall alto nos diz algo mais específico: poucos positivos reais deixaram de ser detectados.


Quando uma previsão positiva precisa ser confiável

Agora considere um problema completamente diferente.

Suponha que um filtro de e-mail possa enviar automaticamente mensagens classificadas como spam para uma área de quarentena ou removê-las da caixa de entrada principal.

Novamente, cada e-mail é representado por um ponto:

O classificador decide:

Positivo realNegativo realOs círculos mostram quais mensagens vão para o spam e quais permanecem na caixa de entrada.

Mais uma vez, há dois tipos de erro.

O primeiro acontece quando uma mensagem de spam é classificada como legítima. Um e-mail indesejado chega à caixa de entrada. Isso incomoda, mas costuma ser recuperável.

O segundo acontece quando uma mensagem legítima é classificada como spam. Um e-mail importante pode nunca ser visto ou pode até ser removido.

Agora, a assimetria aponta para a direção oposta.

Podemos preferir deixar passar algum spam se, com isso, quase nada que o modelo classifique como spam for na verdade uma mensagem legítima.

Em termos visuais, o classificador se torna mais conservador ao colocar pontos no círculo verde.

Filtro de spam

Avance em direção a uma precisão maior

Limiar de spamPreviu negativoPreviu positivo
Precisão65.2%

15 de 23 previsões positivas corretas · 1 positivos não detectados

À medida que o modelo se torna mais seletivo, menos mensagens legítimas viram alarmes falsos — mas mais mensagens de spam deixam de ser detectadas.

Em vez de destacar todos os pontos genuinamente verdes, olhe agora apenas para o conteúdo do círculo que o modelo chamou de positivo.

A pergunta relevante passa a ser:

Entre as mensagens que o modelo chamou de spam, quantas realmente eram spam?

Isso é precisão.

Precisa˜o=pontos verdes no cıˊrculo verdetodos os pontos no cıˊrculo verde\text{Precisão} = \frac{\text{pontos verdes no círculo verde}} {\text{todos os pontos no círculo verde}}

Agora, o denominador é determinado inteiramente pelas previsões do modelo. Observamos tudo o que está dentro do círculo previsto como positivo, sejam os pontos verdes ou vermelhos.

O numerador mantém apenas os pontos que realmente são verdes.

Portanto, a precisão começa pela afirmação do modelo.

Primeiro perguntamos: Quais pontos o classificador disse serem positivos? Depois, examinamos com que frequência essa afirmação estava correta.

Isso nos dá a distinção central entre precisão e recall:

Recall: olhe para todos os pontos verdes e pergunte quantos encontramos.

Precisão: olhe para tudo o que chamamos de verde e pergunte quanto disso realmente era verde.

Comece pela afirmação do modelo

Precisão

2121 + 3=87.5%

De tudo o que chamamos de positivo, quanto realmente era positivo?

Comece pela realidade

Recall

2121 + 6=77.8%

De tudo o que realmente era positivo, quanto encontramos?

Positivo realNegativo realO numerador não muda. O denominador muda a pergunta.

O numerador é o mesmo nas duas métricas: pontos verdes colocados corretamente no círculo verde.

O que muda é o denominador e, portanto, a pergunta que fazemos.


Cenários

Agora podemos remover completamente câncer, pacientes, e-mail e spam.

Só precisamos dos pontos verdes e vermelhos e dos dois círculos.

Cada arranjo abaixo poderia ser o resultado produzido por algum classificador binário.

As quatro combinações possíveis também correspondem aos termos conhecidos da matriz de confusão:

Vamos comparar precisão e recall com a acurácia, que mede a fração de todos os pontos colocados no círculo correto.

Cenário 1 — Uma acurácia alta pode esconder um modelo ruim

Considere 100 pontos:

O classificador produz:

Verde realVermelho real
Acuraˊcia=95%\text{Acurácia}=95\%Precisa˜o=50%\text{Precisão}=50\%Recall=20%\text{Recall}=20\%

Se olhássemos apenas para a afirmação 95% de acurácia, esse classificador poderia parecer excelente.

No entanto, entre os cinco pontos genuinamente verdes, ele encontrou apenas um.

A acurácia alta vem principalmente do fato de que os pontos vermelhos dominam o dataset. Classificar corretamente 94 dos 95 pontos vermelhos basta para fazer a acurácia geral parecer impressionante, embora o classificador tenha um desempenho ruim na rara classe positiva.

Um classificador ainda mais simples, que previsse vermelho para todos os pontos, também teria 95% de acurácia. Nosso classificador encontrou um ponto verde, mas o ponto vermelho adicional que ele classificou incorretamente anulou esse ganho na acurácia.

Esse é um dos motivos pelos quais a acurácia pode ser especialmente enganosa em datasets desbalanceados. A prevalência de cada classe afeta o quanto cada tipo de previsão correta contribui para o número final.


Cenário 2 — Precisão perfeita, recall muito baixo

Agora mantenha os 100 pontos, com 10 verdes e 90 vermelhos. Esse classificador prevê verde apenas duas vezes, e as duas previsões estão corretas. Os outros 8 pontos verdes e todos os 90 pontos vermelhos vão para o círculo vermelho.

Verde realVermelho real

O resultado é 92% de acurácia, 100% de precisão e 20% de recall. Toda vez que o classificador diz verde, ele acerta — mas encontra apenas 2 dos 10 pontos genuinamente verdes.

Portanto, é possível alcançar precisão perfeita com um comportamento muito conservador: fazer pouquíssimas previsões positivas, mas fazê-las apenas quando o modelo está muito confiante.

O preço é deixar passar muitos positivos reais.

Há um limite importante para essa ideia. Se o modelo não fizer nenhuma previsão positiva, o denominador da precisão será zero. Nesse caso, a precisão é indefinida, não 100%.


Cenário 3 — Recall perfeito, precisão baixa

Mantenha os mesmos 10 pontos verdes e 90 vermelhos, mas torne o classificador muito mais disposto a prever verde. Ele envia todos os 10 pontos verdes e 30 pontos vermelhos ao círculo verde, deixando 60 pontos vermelhos no círculo vermelho.

Verde realVermelho real

Agora, a acurácia é 70%, a precisão é 25% e o recall é 100%. Nenhum ponto verde escapa, mas apenas 10 dos 40 pontos chamados de verde realmente são verdes.

Assim, o classificador encontra todos os positivos ao custo de produzir muitos alarmes falsos.

Da mesma forma que podemos aumentar a precisão sendo mais conservadores, podemos levar o recall em direção a 100% sendo cada vez mais agressivos ao prever a classe positiva.


Cenário 4 — Um modelo equilibrado

Agora considere uma população equilibrada de 50 pontos verdes e 50 vermelhos. O classificador acerta 45 pontos de cada classe e comete cinco erros em cada direção.

Verde realVermelho real

Esse resultado simétrico nos dá 90% de acurácia, 90% de precisão e 90% de recall.

Nessa configuração específica, acurácia, precisão e recall têm o mesmo valor. Isso é consequência da distribuição equilibrada das classes e dos erros simétricos, não uma relação geral entre as métricas.


Cenário 5 — A mesma acurácia, comportamentos completamente diferentes

Por fim, considere dois classificadores avaliados nos mesmos 50 pontos verdes e 50 vermelhos. Ambos acertam 80 observações, mas fazem promessas diferentes.

Modelo A

Verde realVermelho real
Acurácia
80%
Precisão
100%
Recall
60%

Modelo B

Verde realVermelho real
Acurácia
80%
Precisão
71%
Recall
100%

O Modelo A é conservador. Sempre que prevê verde, ele acerta, mas deixa 20 pontos genuinamente verdes no círculo vermelho.

O Modelo B se comporta quase da maneira oposta. Ele captura todos os pontos verdes, mas também envia 20 pontos vermelhos ao círculo verde.

Os dois modelos acertam 80 das 100 observações, portanto têm exatamente a mesma acurácia. Ainda assim, seus comportamentos são claramente diferentes.

O Modelo A evita falsos positivos ao custo de deixar passar alguns positivos reais. O Modelo B evita perder positivos ao custo de produzir mais alarmes falsos.

Dependendo do problema real, qualquer um desses comportamentos pode ser preferível.

Para algo semelhante ao exemplo do filtro de spam, podemos preferir a cautela do Modelo A. Para algo semelhante ao rastreamento de câncer, a capacidade do Modelo B de capturar todos os positivos pode importar mais.

É por isso que uma métrica não deve ser interpretada como uma descrição absoluta da qualidade do modelo. Cada métrica resume uma propriedade específica do comportamento do classificador.


Explore por conta própria

Podemos tornar essas relações mais fáceis de enxergar controlando diretamente o conteúdo dos dois círculos.

Em vez de alterar um classificador ou seu processo de treinamento, você controla diretamente as previsões finais.

Controle quatro quantidades — duas em cada círculo:

Círculo previsto como verde

Círculo previsto como vermelho

Playground interativo

Explore as métricas

Classe positivaMuda a perspectiva, não os pontos.
Resultados da classificaçãoExemplos realmente verdes e vermelhos agrupados pela classe prevista pelo modelo.Previu vermelhoPreviu verde
Previu verde
Previu vermelho
Destacar

A partir desses quatro números, o playground calcula automaticamente as três métricas.

O mais importante não é apenas ver os números mudarem, mas perceber a quais pontos cada métrica dá atenção.

Para a precisão, destaque apenas o círculo previsto como verde.

Entre os pontos que eu disse serem verdes, quantos realmente eram verdes?

Para o recall, esmaeça os pontos vermelhos e destaque todos os pontos realmente verdes nos dois círculos.

Entre os pontos que realmente eram verdes, quantos eu disse serem verdes?

Para a acurácia, destaque todos os pontos cuja cor real coincide com o círculo em que estão.

Entre todos os pontos, quantos foram classificados corretamente?

Depois de experimentar com as distribuições, vale tornar explícito um último detalhe.

Não há nada de especial em verde ser a classe positiva.

Escolhemos verde como positivo apenas para manter a linguagem visual consistente ao longo do artigo. Poderíamos inverter a definição e declarar vermelho como a classe positiva.

Os pontos não mudariam de lugar. O classificador não mudaria. Mudaria apenas a perspectiva a partir da qual calculamos precisão e recall.

Poderíamos então perguntar:

Entre os pontos que eu disse serem vermelhos, quantos realmente eram vermelhos?

Essa seria a precisão para a classe vermelha.

Ou:

Entre os pontos que realmente eram vermelhos, quantos classifiquei corretamente como vermelhos?

Esse seria o recall para a classe vermelha.

Isso revela uma propriedade importante das duas métricas:

Precisão e recall não são números únicos e universais que pertencem a um classificador independentemente de como definimos a tarefa. Eles são calculados em relação à classe que escolhemos tratar como positiva.

Quando verde é a classe positiva, o recall da classe verde costuma ser chamado de sensibilidade.

A capacidade correspondente de identificar corretamente exemplos vermelhos — o recall da classe negativa — é o que geralmente chamamos de especificidade:

Especificidade=pontos vermelhos no cıˊrculo vermelhotodos os pontos realmente vermelhos\text{Especificidade} = \frac{\text{pontos vermelhos no círculo vermelho}} {\text{todos os pontos realmente vermelhos}}

A terminologia é útil, mas a lógica visual permanece exatamente a mesma.

As duas perguntas que vale lembrar são mais simples do que as fórmulas:

Precisão: entre o que eu disse ser positivo, quanto acertei?

Recall: entre o que realmente era positivo, quanto encontrei?

Nenhuma das duas é universalmente mais importante.

A métrica adequada depende do uso do classificador e, principalmente, de qual tipo de erro custa mais no problema real.

Essas métricas descrevem um conjunto fixo de previsões; elas não tomam sozinhas a decisão de colocar um modelo em produção. Na prática, a escolha de um limiar também pode exigir custos de erro explícitos, probabilidades calibradas e atenção à prevalência das classes — especialmente porque a precisão pode mudar quando muda a prevalência da classe positiva.