Escola da Nuvem · Aula visual

Um balaio
de gatos
pra entender
ML de verdade

Acurácia, Precisão, Recall, F1, AUC, MAE, ROI... tudo isso fica claro quando você troca fórmula por gato. Role pra baixo, mexe nos controles, vê os números mudarem ao vivo. Sem decoreba.

Bora começar 🐾
🐈 🐱 😺 🐈‍⬛ 😸 😻
🐈 ACURÁCIA🐱 PRECISÃO🐾 RECALL😺 F1 SCORE🐈‍⬛ ROC + AUC😸 MAE💰 ROI🐈 ACURÁCIA🐱 PRECISÃO🐾 RECALL😺 F1 SCORE🐈‍⬛ ROC + AUC😸 MAE💰 ROI
00 · O cenário

Você treinou um detector de gatos.

Imagina que você foi contratado pelo app de adoção "AdoteUmaPata.com". Você treinou um modelo que olha uma foto e responde: "é gato?" ou "não é gato". Pra avaliar, separou 100 fotos novas que o modelo nunca viu:

🐈 40
São gatos de verdade
🐶 60
Não são gatos (cães, etc.)
🎯 O que o modelo respondeu

Depois de rodar nas 100 fotos, o modelo entregou esse resultado:

35 gatos identificados corretamente como gato 🐈 ✓
5 gatos que o modelo deixou passar 🐈 → 🚫
10 não-gatos que o modelo achou que era gato 🐶 → 🐈
50 não-gatos corretamente recusados ✓

👇 Esses 4 números formam o coração de tudo: a matriz de confusão. Vamos olhar.

01 · Matriz de confusão

O balaio organizado.

A matriz de confusão é um quadradinho 2×2 que separa tudo que pode acontecer num classificador binário. Clica em cada quadrante pra entender o que ele significa na prática.

Previu:
🐈 GATO
Previu:
🐶 NÃO-GATO
Era 🐈 gato
VP · True Positive
35
Acertou! Era gato, disse gato.
🐈🐈🐈🐈🐈🐈🐈
🐈🐈🐈🐈🐈🐈🐈
🐈🐈🐈🐈🐈🐈🐈
🐈🐈🐈🐈🐈🐈🐈
🐈🐈🐈🐈🐈🐈🐈
FN · False Negative
5
Era gato, mas deixou passar. Tadinho 🥺
🐈🐈🐈🐈🐈
Era 🐶 não-gato
FP · False Positive
10
Não era gato, mas chutou gato. Aff.
🐶🐶🐶🐶🐶🐶🐶🐶🐶🐶
VN · True Negative
50
Acertou! Não era gato, e disse que não era.
🐶🐶🐶🐶🐶🐶🐶🐶🐶🐶
🐶🐶🐶🐶🐶🐶🐶🐶🐶🐶
🐶🐶🐶🐶🐶🐶🐶🐶🐶🐶
🐶🐶🐶🐶🐶🐶🐶🐶🐶🐶
🐶🐶🐶🐶🐶🐶🐶🐶🐶🐶
Clique num quadrante

Os 4 cantos do balaio

O modelo pode errar de dois jeitos diferentes, e acertar de dois jeitos diferentes. Em cima estão os erros e acertos com os gatos reais; embaixo, com os não-gatos. As colunas dizem o que o modelo respondeu.

💡 Cada métrica que a gente vai ver é só uma conta diferente com esses 4 quadrantes. É só isso. Sem matemática feia.

No nosso caso: 35 + 5 + 10 + 50 = 100 fotos. Tudo soma. Sempre.
02 · Acurácia

Quantas fotos você acertou no total?

A métrica mais óbvia e mais traiçoeira. Soma todos os acertos e divide pelo total. Pronto, virou %.

📊 As 100 fotos lado a lado

Verde = modelo acertou (VP + VN). Vermelho = modelo errou (FP + FN).

Acertou (85) Errou (15)
Acurácia = VP + VN Total = 35 + 50 100 = 85%
"Que % das fotos eu acertei, considerando tudo?"

Olhou. Bateu olho. 85%. Modelão, né? Calma.

A pegadinha: imagina que ao invés de 40 gatos e 60 não-gatos, fosse 2 gatos e 98 não-gatos. Eu posso fazer um modelo BURRO que sempre diz "não é gato". Ele vai acertar 98 de 100 = 98% de acurácia. E ele nunca achou um gato sequer.

Por isso a acurácia é perigosa em datasets desbalanceados. Pra clases muito raras (fraude, doenças, defeitos), ela engana legal.

Quando usar? Quando as classes são razoavelmente equilibradas e os dois tipos de erro custam o mesmo. Útil como sanity check, perigoso como única métrica.
03 · Precisão

Quando o modelo grita "GATO!", quantas vezes ele tá certo?

Precisão olha só pra as previsões positivas. De todas as vezes que o modelo disse "é gato", quantas eram gato de verdade?

🔎 Olha só o que ele chamou de gato

Das 100 fotos, o modelo disse "é gato" pra 45. Vamos ver quantas eram gato mesmo.

Era gato (VP=35) Não era (FP=10) Modelo ignorou
Precisão = VP VP + FP = 35 35 + 10 = 77,8%
"De cada 10 vezes que disse gato, em quantas tô certo?"

Em ~7,8 vezes. As outras 2,2 vezes ele apontou pra um cachorro e jurou que era gato. Embaraçoso.

Precisão alta = quando o modelo abre a boca pra dizer "é gato", confia. Ele não fala se não tem certeza. Mas pode ser medroso e perder gatos de verdade (vamos ver isso no Recall).

Use precisão quando o custo do FALSO POSITIVO é alto. Filtro de spam: se classificar um email do seu chefe como spam (FP), você perde o emprego. Melhor deixar passar alguns spams (FN) do que xingar de spam algo importante.
04 · Recall (Sensibilidade / Revocação)

De todos os gatos de verdade, quantos a gente pegou?

Recall vira o jogo: agora foca nos gatos reais. De todos os gatos que existiam no balaio, quantos o modelo conseguiu identificar?

😿 Os 40 gatos reais

Esquece os não-gatos por um momento. Existiam 40 gatos. O modelo achou quantos?

Gatos achados (VP=35) Gatos perdidos (FN=5) Não-gato
Recall = VP VP + FN = 35 35 + 5 = 87,5%
"Algum gato passou batido aqui pelo balaio?"

O modelo pegou 35 dos 40 gatos reais. Recall = 87,5%. 5 gatos escaparam sem ser identificados. Esses são os false negatives.

Recall alto = o modelo é "abusado", arrisca mesmo quando não tem certeza, prefere chutar gato. Não perde quase nenhum gato real. Mas, em troca, pode acabar chamando cachorros de gato (cai a precisão).

Use recall quando o custo do FALSO NEGATIVO é alto. Diagnóstico de câncer: melhor um falso positivo (paciente faz mais exames) do que um falso negativo (manda pra casa quem tem a doença). Detecção de fraude no banco, idem.
🛑

Precisão importa quando...

O falso positivo dói. Você não quer gritar lobo à toa.

  • 📧 Filtro de spam (perder email bom dói)
  • 🎬 Recomendação de filme (não quer entupir o usuário)
  • ⚖️ Acusação criminal (não condena inocente)
🚨

Recall importa quando...

O falso negativo dói. Não pode passar despercebido.

  • 🩺 Câncer, doenças graves (não pode perder ninguém)
  • 💳 Fraude no cartão (cada perdida = prejuízo)
  • ⚠️ Falha em peça de avião (não pode deixar passar)
05 · F1 Score

E se você precisar dos dois?

Precisão e Recall puxam pra lados opostos. F1 é a "média harmônica" entre os dois, uma maneira de combinar em um número só, mas punindo desequilíbrios.

⚖️ A balança

Se Precisão = 77,8% e Recall = 87,5%, a média simples seria 82,6%. Mas o F1 usa média harmônica, que penaliza quando um dos dois está muito baixo.

🛑 Precisão 77,8%
🚨 Recall 87,5%
⚖️ F1 Score 82,4%
F1 = 2 × P × R P + R = 82,4%
"Como ter uma nota única quando preciso dos dois?"

A "graça" do F1: se você tem precisão 99% e recall 1%, a média comum dá 50% (parece ok). Mas o F1~2%. Ele denuncia que tem coisa errada.

F1 só fica alto quando os dois estão altos. Por isso ele é o padrão quando você não sabe qual erro é pior, ou quando ambos importam de verdade.

Lê assim: "0,82 de F1" = o modelo equilibra bem encontrar gatos sem chamar cachorros de gato.

Quando usar? Quando precisão e recall importam, e quando há desbalanceamento de classes. F1 não considera os Verdadeiros Negativos, então é ótimo pra quando a classe positiva é a rara (fraude, doença, defeito).
06 · Curva ROC e AUC

Quão "esperto" é o modelo, no geral?

Os modelos de classificação não cospem "gato" ou "não-gato" direto, eles cospem um número de 0 a 1 ("0,87 de probabilidade de ser gato"). Você escolhe um limiar (threshold). Acima dele, é gato. Mexe no slider e veja o jogo virar.

chute aleatório (AUC=0.5) Taxa de Falsos Positivos (FPR) Taxa de Verdadeiros Positivos (TPR / Recall) 0 1 0 1 Curva ROC do detector de gatos
87,5% Recall (TPR)
16,7% Falsos positivos (FPR)

🎚️ ROC: o trade-off, visualizado

Pra cada limiar diferente (a partir de qual probabilidade chamar de gato), o modelo gera uma combinação diferente de TPR (acertos em gatos) e FPR (alarmes falsos com cachorros).

Limiar baixo (ex.: 0,2): chama quase tudo de gato → pega tudo (TPR alto) mas erra muito (FPR alto).
Limiar alto (ex.: 0,9): só chama de gato se tiver muita certeza → quase nada de erro, mas perde gatos reais.

A curva ROC mostra todas essas combinações de uma vez. Quanto mais ela se gruda no canto superior esquerdo, melhor.

AUC · Área sob a curva 0,89 AUC = 1,0 ➜ modelo perfeito · AUC = 0,5 ➜ chute · AUC > 0,8 ➜ bom modelo
07 · MAE (Mean Absolute Error)

Pera. E se não for sim/não?

Até aqui falamos de classificação (é ou não é). Mas e quando o modelo prevê um número, peso do gato pra calcular a dose do remédio, idade do gato pra estimar adoção, preço do animal de raça?

Aí entra a regressão. E a métrica mais intuitiva pra regressão é o MAE: a média de quanto seu modelo erra, em valor absoluto, em cada previsão.

🐈 Quanto pesa cada gato? (em kg)

Verde = peso real · Laranja = previsão do modelo · Vermelho = quanto errou

MAE = (0,3 + 0,5 + 0,2 + 0,3 + 0,3) ÷ 5 = 0,32 kg
"Em média, quanto eu erro em cada previsão?"

MAE = 0,32 kg significa que, em média, o modelo erra 320 gramas de cada gato. Pra cima ou pra baixo, tanto faz (é absoluto).

Vantagem do MAE: é na mesma unidade da sua variável. Se você prevê preço, MAE vem em reais. Se prevê tempo, vem em minutos. Fácil de explicar pro chefe.

Diferença pro RMSE: o RMSE eleva os erros ao quadrado, então pune erros grandes com mais força. MAE trata todo erro igualmente.

No nosso caso: se o veterinário usar esse modelo pra calcular dose de remédio, errar 320g pode ser aceitável pra um gato adulto de 4kg, mas crítico pra um filhote de 1kg. Sempre contextualize o MAE.
08 · Métricas de negócio

No final do dia: isso dá grana?

Tudo isso é lindo, mas seu chefe não quer saber de F1. Ele quer saber se vale a pena rodar esse modelo. Mexe nos valores abaixo, o impacto financeiro recalcula em tempo real.

📊 Cenário do app de adoção
💚 Ganho por gato adotado (VP) Cada gato que o modelo identifica = adoção. Comissão por sucesso.
💸 Custo de falso positivo (FP) Modelo disse "gato", veio cachorro. Funcionário gasta tempo revisando.
🚨 Custo de falso negativo (FN) Modelo perdeu um gato real. Não foi pra adoção. Receita perdida.
⚙️ Custo de operar o modelo / mês Infra, AWS, manutenção. Custo fixo.
📌 Resultado do modelo: VP=35, FP=10, FN=5 (esses números vêm direto da matriz de confusão lá no começo).
Receita (35 adoções)
R$ 2.800
Custos totais
R$ 550
Lucro líquido / mês
R$ 2.250
ROI = 409%
🤔 A grande sacada: Imagina que você consegue melhorar o recall (pegar mais gatos), mas em troca a precisão cai (mais falsos positivos). O modelo fica "pior" em F1, mas talvez fique melhor em lucro. É por isso que métricas técnicas e métricas de negócio precisam andar juntas. Sempre faça essa conta. Sempre.
💡 Aumentar Recall: mexa nos custos. Tente Custo FN = 200 e Custo FP = 5. Veja o que acontece: agora perder um gato vale 40x mais que dar um alarme falso. Nessa lógica, vale a pena treinar um modelo MAIS agressivo (recall alto, mesmo que precisão caia).
TL;DR · Cola final

A cola visual.

Salva essa parte. Ou imprime. Ou tira print. Toda métrica responde a uma pergunta diferente.

🎯 Acurácia
(VP + VN) / Total
"Acertei quanto do total?"
Boa pra dataset balanceado. Traiçoeira em casos raros.
🛑 Precisão
VP / (VP + FP)
"Quando digo SIM, tô certo?"
Use quando FALSO POSITIVO custa caro. Spam, recomendação.
🚨 Recall
VP / (VP + FN)
"Pego todo mundo que importa?"
Use quando FALSO NEGATIVO custa caro. Câncer, fraude.
⚖️ F1 Score
2 × (P × R) / (P + R)
"Bom equilíbrio entre os dois?"
Padrão em datasets desbalanceados. Penaliza ter um lado fraco.
📈 AUC-ROC
Área sob a curva ROC
"O modelo, no geral, distingue bem?"
Independe do threshold. 0,5 = chute, 1,0 = perfeito, > 0,8 = bom.
📏 MAE
média de |real − previsto|
"Em média, erro quanto?"
Só pra REGRESSÃO. Na mesma unidade da variável.
💰 ROI
(Ganho − Custo) / Custo
"Vale a pena economicamente?"
A única métrica que importa pro chefe. Sempre traduza tudo pra cá.
🐾 Resumo do resumo
"Que métrica eu uso?"
Depende do que você quer otimizar. Não existe métrica universal. Comece pelo problema de negócio, depois escolha.