Avaliação
O que “Avaliação (Evaluation)” Significa no Aprendizado de Máquina (Machine Learning)
No aprendizado de máquina (machine learning), avaliação é a prática de medir o quão bem um modelo funciona, quão confiavelmente (reliably) ele se comporta e quanta incerteza (uncertainty) devemos atribuir às suas previsões. Uma boa avaliação não é apenas escolher um número como acurácia — é projetar um processo que responda a perguntas como:
- Desempenho (performance): O modelo atende ao objetivo da tarefa (por exemplo, alta revocação (recall) para fraude, baixo erro para previsão (forecasting))?
- Confiabilidade: Ele se comporta de forma consistente entre fatias de dados, ao longo do tempo e em diferentes ambientes?
- Incerteza: Quando o modelo não tem certeza, ele sinaliza isso — e essas estimativas de incerteza são significativas?
A avaliação fica no centro de fluxos de trabalho práticos de aprendizado de máquina. Ela informa a Seleção de Modelos (Model Selection), orienta melhorias nos dados (frequentemente via IA Centrada em Dados (Data-Centric AI)) e reduz o risco de implantar (deployment) um modelo que falha de maneiras sutis, porém caras.
Por que a Avaliação é Mais Difícil do que Parece
Um modelo pode “parecer bom” por métricas padrão e ainda assim ser inadequado para uso. Armadilhas comuns incluem:
- Vazamento de dados (data leakage): O modelo, indiretamente, vê informações do futuro ou dos rótulos-alvo.
- Conjuntos de teste não representativos: A distribuição do teste difere da produção.
- Desalinhamento de métrica (metric mismatch): Otimizar acurácia quando o negócio se importa com erros ponderados por custo.
- Modos de falha ocultos (hidden failure modes): Métricas gerais fortes, mas desempenho ruim em coortes minoritárias.
- Sobreajuste ao benchmark (overfitting to the benchmark): Ajustes repetidos no conjunto de teste inflacionam os resultados.
- Cegueira de incerteza (uncertainty blindness): Saídas de probabilidade estão mal calibradas, ou o modelo fica confiante demais sob mudança de distribuição.
Por causa desses problemas, a avaliação deve cobrir protocolo + métricas (metrics) + diagnósticos (diagnostics) + incerteza + estatística, e não apenas uma pontuação.
As Bases: O que Você Está Realmente Estimando
Em alto nível, a avaliação estima o desempenho esperado de generalização (expected generalization performance):
[ \mathbb{E}{(x,y)\sim \mathcal{D}{\text{target}}}[\ell(f(x), y)] ]
Onde:
- ( \mathcal{D}_{\text{target}} ) é a distribuição real com a qual você se importa (muitas vezes, “produção”),
- ( f ) é o seu modelo,
- ( \ell ) é uma função de perda (loss function) (perda 0/1, erro quadrático, perda logarítmica, etc.).
Na prática, você não tem acesso direto a ( \mathcal{D}_{\text{target}} ). Você a aproxima usando conjuntos de dados e divisões, introduzindo incerteza decorrente de amostragem finita, mudança de distribuição, ruído de rotulagem e ciclos de retroalimentação.
É por isso que a avaliação é tanto um problema de estimação estatística (statistical estimation problem) quanto um problema de sistemas/medição (systems/measurement problem).
Protocolos de Avaliação: Divisões, Vazamento e Reprodutibilidade (Reproducibility)
Treino/validação/teste e por que “teste” deve ser sagrado
Uma configuração padrão é:
- Conjunto de treino (train set): ajustar os parâmetros do modelo
- Conjunto de validação (validation set): escolher hiperparâmetros (hyperparameters), limiares, atributos (features)
- Conjunto de teste (test set): estimativa final e não enviesada após as decisões serem travadas
Testar repetidamente ideias com base no desempenho no teste efetivamente torna o conjunto de teste parte do treino, enviesando os resultados para cima. Para procedimentos robustos, veja Validação e Validação Cruzada (Validation & Cross-Validation).
Validação cruzada (cross-validation, CV) na prática
A validação cruzada reduz a variância nas estimativas quando os dados são limitados, mas precisa respeitar a estrutura:
- Séries temporais (time series): dividir por tempo (sem vazamento do futuro)
- Dados agrupados (grouped data) (usuários/pacientes): divisões conscientes de grupo para evitar vazamento de identidade (identity leakage)
- Dados espaciais (spatial data): divisões espaciais para evitar vazamento por proximidade (proximity leakage)
Exemplo (validação cruzada por grupos com scikit-learn):
from sklearn.model_selection import GroupKFold, cross_val_score
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_auc_score, make_scorer
X, y, groups = ... # groups could be user_id, patient_id, etc.
model = LogisticRegression(max_iter=200)
cv = GroupKFold(n_splits=5)
auc_scorer = make_scorer(roc_auc_score, needs_proba=True)
scores = cross_val_score(model, X, y, cv=cv, groups=groups, scoring=auc_scorer)
print(scores.mean(), scores.std())
Evitando vazamento: um checklist rápido
- Não compute normalização/estatísticas no conjunto de dados inteiro (ajuste transformações apenas no treino).
- Não use atributos pós-evento (por exemplo, “número de chargebacks” para prever fraude no momento da compra).
- Não deixe quase-duplicatas cruzarem as divisões (mesmo cliente, mesmo documento, mesma imagem).
- Para processamento de linguagem natural (NLP)/modelos de linguagem grandes (LLMs), cuidado com contaminação de conjuntos de avaliação nos dados de pré-treinamento (difícil de evitar completamente; meça e documente).
Escolhendo Métricas: Alinhe ao Objetivo, Não à Conveniência
Métricas são uma linguagem: elas codificam o que “bom” significa. Uma boa avaliação usa métricas que refletem:
- custos operacionais (falsos positivos vs falsos negativos),
- restrições de experiência do usuário,
- qualidade de ranqueamento (ranking),
- necessidades de calibração e tomada de decisão.
Para uma cobertura detalhada, veja Métricas (Metrics). A seguir, estão princípios-chave.
Classificação (classification): além da acurácia
- Acurácia (accuracy) pode ser enganosa com classes desbalanceadas (imbalanced classes).
- Precisão (precision)/revocação/F1 refletem trade-offs entre falsos positivos e falsos negativos.
- AUC-ROC (ROC-AUC) mede a qualidade de ranqueamento ao longo de limiares, mas pode parecer boa sob desbalanceamento extremo.
- AUC-PR (PR-AUC) costuma ser mais informativa com positivos raros (veja Desbalanceamento de Classes (Class Imbalance) e Modelagem de Eventos Desbalanceados / Raros (Imbalanced / Rare Event Modeling)).
- Perda logarítmica (log loss, cross-entropy) avalia a correção probabilística e é sensível a excesso de confiança.
Exemplo prático: detecção de fraude (fraud detection)
Se positivos são 0,1%, um modelo com 99,9% de acurácia ainda pode ser inútil. Provavelmente você se importa com revocação com precisão restrita, ou com perda esperada ponderada por custo.
Regressão (regression): acurácia pontual vs qualidade da decisão
- Erro absoluto médio (MAE) (robusto a outliers), erro quadrático médio (MSE)/raiz do erro quadrático médio (RMSE) (penalizam erros grandes), coeficiente de determinação (R²) (variância explicada).
- Considere intervalos de previsão (prediction intervals) e comportamento de cauda se decisões dependem de risco.
- Para previsão temporal, avalie por tempo, horizonte e sazonalidade, não apenas por erro global.
Ranqueamento e recuperação (retrieval)
Para busca, sistemas de recomendação (recommenders) e recuperação em perguntas e respostas (QA):
- NDCG@k, MAP, MRR, Recall@k medem a utilidade top-k.
- Métricas offline de ranqueamento podem divergir do engajamento online; trate métricas offline como proxies.
Modelos generativos (generative models) e modelos de linguagem grandes (LLMs)
A avaliação frequentemente mistura:
- Métricas automáticas (automatic metrics) (BLEU/ROUGE, perplexidade (perplexity)), que podem ser proxies fracas,
- Métricas baseadas na tarefa (task-based metrics) (correspondência exata (exact match), pass@k para código),
- Avaliação humana (human evaluation) (preferência, utilidade (helpfulness), factualidade (factuality)),
- Métricas de segurança (safety metrics) (toxicidade (toxicity), violações de política (policy violations)),
- Calibração/incerteza para comportamento de recusa/abstenção (refusal/abstention behavior).
O ponto-chave é ancorar a avaliação em casos de uso e modos de falha (failure modes), e não apenas em similaridade de texto.
Confiabilidade: o Modelo se Comporta de Forma Dependável?
Confiabilidade amplia a avaliação para além do desempenho médio.
Avaliação baseada em fatias (slice-based evaluation) (análise de erros)
Um modelo pode ter métricas gerais fortes, mas falhar em coortes específicas (por exemplo, certos idiomas, tipos de dispositivo, categorias raras). Isso motiva fatiamento sistemático e investigação; veja Análise de Erros (Fatiamento) (Error Analysis (Slicing)).
Exemplos de fatias:
- demografia (quando apropriado e legal),
- geografia, tipo de dispositivo, idioma,
- entidades head vs tail,
- imagens com pouca luz vs iluminação normal,
- usuários novos vs recorrentes.
Um fluxo de trabalho prático:
- Defina fatias com base em conhecimento do domínio.
- Compute métricas por fatia com intervalos de confiança.
- Ranqueie fatias por impacto (gravidade × prevalência × custo de negócio).
- Melhore dados e modelo de forma direcionada para essas fatias.
Robustez (robustness) e mudança de distribuição
Sistemas reais enfrentam:
- Mudança de covariáveis (covariate shift): entradas mudam (novos dispositivos, novas gírias)
- Mudança de rótulos (label shift): proporções de classes mudam
- Deriva de conceito (concept drift): a relação entre x e y muda (fraude se adapta)
A avaliação offline deve incluir:
- retroteste (backtesting) baseado em tempo,
- testes de estresse (stress tests) (ruído, corrupções),
- verificações fora da distribuição (out-of-distribution, OOD) quando viável.
Mesmo que você não consiga simular totalmente a produção, você pode medir sensibilidade e detectar fragilidade (fragility).
Estabilidade entre sementes aleatórias (random seeds) e re-treinamentos
Para muitos modelos, os resultados podem variar com inicialização e ordem dos dados. Uma avaliação orientada à confiabilidade frequentemente reporta:
- média ± desvio padrão em múltiplos treinos,
- sensibilidade a hiperparâmetros,
- intervalos de confiança das métricas.
Isso importa especialmente quando as diferenças são pequenas (por exemplo, +0,2% de AUC), onde o ruído pode exceder a melhoria.
Incerteza: Quantificando “Eu Não Sei”
A incerteza é essencial quando decisões têm alto impacto ou quando o modelo pode encontrar entradas desconhecidas. Para aprofundar, veja Estimação de Incerteza (Uncertainty Estimation).
Tipos de incerteza
- Incerteza aleatória (aleatoric uncertainty): ruído irredutível nos dados (por exemplo, imagem borrada).
- Incerteza epistêmica (epistemic uncertainty): incerteza sobre o modelo devido a conhecimento limitado (por exemplo, entradas OOD).
A incerteza epistêmica é particularmente valiosa para detectar quando o modelo provavelmente está errado sob mudança de distribuição.
Probabilidades não são automaticamente confiáveis
Muitos classificadores geram probabilidades (por exemplo, softmax), mas elas frequentemente estão mal calibradas (miscalibrated) — confiantes demais ou de menos. Assim, calibração é uma dimensão central da avaliação; veja Calibração (Calibration).
Diagnósticos comuns de calibração:
- Diagramas de confiabilidade (reliability diagrams) (probabilidade prevista vs frequência observada)
- Erro de Calibração Esperado (Expected Calibration Error, ECE) (medida resumo; tem ressalvas)
- Pontuação de Brier (Brier score) (regra de pontuação adequada para previsões probabilísticas)
Exemplo prático: calibração e ECE
Conceitualmente, o ECE agrupa previsões por confiança e compara a confiança média com a acurácia empírica em cada grupo.
import numpy as np
def ece(probs, labels, n_bins=10):
probs = np.asarray(probs)
labels = np.asarray(labels)
bins = np.linspace(0.0, 1.0, n_bins + 1)
ece_val = 0.0
for i in range(n_bins):
mask = (probs > bins[i]) & (probs <= bins[i+1])
if mask.sum() == 0:
continue
avg_conf = probs[mask].mean()
avg_acc = labels[mask].mean()
ece_val += (mask.mean()) * abs(avg_conf - avg_acc)
return ece_val
Se o ECE for grande, considere métodos de calibração como escalonamento por temperatura (temperature scaling), escalonamento de Platt (Platt scaling) ou regressão isotônica (isotonic regression) — e reavalie.
Intervalos de previsão e predição conformal (conformal prediction)
Para regressão (e, às vezes, classificação), você pode querer intervalos em vez de estimativas pontuais. A predição conformal é popular porque pode fornecer garantias de cobertura em amostras finitas (finite-sample coverage guarantees) sob suposições de permutabilidade (exchangeability):
- Construir um intervalo ([L(x), U(x)]) tal que (P(y \in [L(x),U(x)]) \approx 1 - \alpha).
Na prática, você:
- Treina um modelo no treino.
- Usa um conjunto de calibração para computar escores de não conformidade (nonconformity scores) (medidas semelhantes a resíduos).
- Usa quantis desses escores para formar intervalos no teste.
Isso é especialmente útil em sistemas de decisão que exigem limites de risco.
Rigor Estatístico: Intervalos de Confiança, Significância e Poder Estatístico (Power)
Resultados de avaliação são estimativas, e estimativas têm incerteza. Dois modelos com AUC 0,812 vs 0,815 podem não ser significativamente diferentes.
Intervalos de confiança via reamostragem por bootstrap (bootstrap resampling)
Reamostragem bootstrap é uma forma flexível de obter estimativas de incerteza para métricas.
import numpy as np
from sklearn.metrics import roc_auc_score
def bootstrap_ci(y_true, y_score, metric_fn, n=2000, alpha=0.05, seed=0):
rng = np.random.default_rng(seed)
y_true = np.asarray(y_true)
y_score = np.asarray(y_score)
m = len(y_true)
stats = []
for _ in range(n):
idx = rng.integers(0, m, size=m)
stats.append(metric_fn(y_true[idx], y_score[idx]))
lo = np.quantile(stats, alpha/2)
hi = np.quantile(stats, 1-alpha/2)
return float(lo), float(hi)
lo, hi = bootstrap_ci(y_test, p_test, roc_auc_score)
print("AUC 95% CI:", lo, hi)
Comparando modelos de forma justa
Ao comparar modelos, use testes pareados (paired tests) quando apropriado (os mesmos exemplos avaliados por ambos os modelos) para reduzir variância, e pré-defina:
- qual métrica importa,
- qual tamanho mínimo de efeito é significativo,
- quantos experimentos você fará.
Para comparações online (testes A/B), design cuidadoso e análise de poder estatístico são essenciais; veja Desenho de Experimentos e Poder Estatístico (Experiment Design & Power).
Avaliação Offline vs Online
Avaliação offline (offline evaluation)
Prós:
- iteração rápida
- controlada e reprodutível
- segura (sem impacto em usuários)
Contras:
- pode não corresponder a ciclos de retroalimentação do mundo real
- pode não capturar mudanças de distribuição e efeitos de UX
A avaliação offline deve incorporar:
- conjuntos de teste representativos,
- análise por fatias,
- verificações de incerteza/calibração,
- testes de robustez.
Avaliação online (online evaluation)
Frequentemente feita via testes A/B, interleaving (interleaving) ou implantações sombra (shadow deployments). Prós:
- mede resultados reais (conversão, satisfação, retenção)
- captura efeitos em nível de sistema
Contras:
- cara, mais lenta
- exige restrições éticas/de segurança cuidadosas
- pode ser ruidosa e confundida por fatores externos
Um fluxo de trabalho maduro usa avaliação offline como um gate e, em seguida, avaliação online como o árbitro final — enquanto monitora incerteza, deriva e segurança.
Definição de Limiar (Thresholding), Custos e Avaliação Consciente da Decisão
Muitos modelos produzem uma pontuação (s(x)) ou probabilidade (p(y=1|x)), mas a implantação exige uma regra de decisão (decision rule):
- aprovar/negar,
- escalar para revisão humana,
- abster-se quando incerto.
A avaliação deve refletir essas decisões:
- escolher limiares com base em trade-offs de custo,
- computar métricas em pontos de operação (por exemplo, revocação a 99% de precisão),
- avaliar políticas de abstenção (cobertura vs acurácia).
Exemplo: humano no loop (human-in-the-loop)
Se o modelo pode abster-se quando a incerteza é alta, avalie:
- acurácia nos casos não abstidos,
- taxa de abstenção,
- carga de trabalho humana a jusante,
- redução de erro vs custo.
Monitoramento Após a Implantação: A Avaliação Não Termina
A avaliação em produção inclui:
- monitoramento de deriva de dados (data drift) (distribuições de atributos),
- deriva de desempenho (performance drift) (requer rótulos; podem chegar com atraso),
- deriva de calibração (calibration drift) (confiança torna-se pouco confiável),
- monitoramento por fatias (slice monitoring) (coortes importantes),
- critérios de alerta e reversão (rollback).
Como rótulos podem atrasar ou faltar, equipes frequentemente acompanham indicadores antecedentes (deriva de entrada, picos de incerteza) e usam rotulagem periódica para reestimar desempenho.
Antipadrões Comuns (Anti-Patterns) (e Como Evitá-los)
- Obsessão por um único número (single-number obsession): Sempre combine métricas globais com fatias, intervalos de confiança e calibração.
- Ajustar no conjunto de teste: Mantenha um conjunto final de retenção (holdout) e documente decisões.
- Ignorar desbalanceamento: Use métricas e estratégias de amostragem adequadas; veja Desbalanceamento de Classes.
- Sem medição de incerteza: Adicione verificações de calibração e estimação de incerteza para cenários sensíveis a risco.
- Sobreajuste ao benchmark (benchmark overfitting): Iterar repetidamente contra o mesmo conjunto público pode inflar resultados.
- Sem análise de erros: Use Análise de Erros (Fatiamento) para descobrir falhas acionáveis.
Checklist Prático de Avaliação
- Defina a distribuição-alvo e critérios de sucesso (incluindo custos e restrições).
- Escolha uma estratégia de divisão que corresponda ao processo gerador de dados (sensível a tempo/grupo).
- Selecione métricas alinhadas à decisão real (e reporte métricas no ponto de operação).
- Quantifique incerteza tanto nas previsões (calibração/intervalos) quanto nas métricas (intervalos de confiança).
- Faça checagens de confiabilidade por fatias em coortes-chave e casos raros.
- Faça testes de estresse de robustez (mudança de distribuição, corrupção, casos extremos).
- Compare modelos estatisticamente e evite exagerar ganhos pequenos.
- Planeje validação online e monitoramento pós-implantação.
Como Este Artigo se Conecta a Tópicos Relacionados
Avaliação é um tópico guarda-chuva. Na prática, você frequentemente irá mais a fundo em:
- Métricas para medidas e trade-offs específicos da tarefa
- Validação e Validação Cruzada para estimação robusta e prevenção de vazamento
- Calibração para probabilidades confiáveis
- Estimação de Incerteza para métodos de incerteza epistêmica/aleatória
- Análise de Erros (Fatiamento) para descobrir modos de falha
- Desenho de Experimentos e Poder Estatístico para testes A/B estatisticamente sólidos
- Desbalanceamento de Classes para escolha de métricas e cenários com positivos raros
Em conjunto, esses itens formam um kit completo de avaliação: medir desempenho, verificar confiabilidade, quantificar incerteza e tomar decisões com disciplina estatística.