まとめ
- Organizamos as metricas principais para classificacao e as diferencas entre binario, multiclasse e multilabel.
- Vemos indicadores de matriz de confusao, ajuste de limiar, probabilidade e ranking.
- Apresentamos como montar um conjunto de metricas e como reportar corretamente.
Capitulo 3 #
Panorama das metricas de classificacao #
A avaliacao de classificacao muda conforme o balanceamento das classes, o limiar de decisao, a confiabilidade das probabilidades e a qualidade do top ranking. Nesta secao reunimos os grupos de metricas e criterios de escolha.
Categorias de metricas #
1. Baseadas na matriz de confusao #
- Accuracy (Accuracy): taxa de acerto geral, mas pode enganar em dados desbalanceados.
- Precision / Recall / F1 (Precision/Recall, F1): escolha conforme custo dos erros.
- Specificity / Sensitivity (Sensitivity/Specificity): critico em areas como saude.
- Macro / Micro / Weighted averaging (Averaging strategies): formas de agregar em multiclasse.
2. Limiar e ranking #
- Precision-Recall curve / PR-AUC (PR): util quando a classe positiva e rara.
- ROC curve / ROC-AUC (ROC-AUC): mede separabilidade global.
- Top-k Accuracy / Hit Rate (Top-k Accuracy, Hit Rate): importante para recomendacao/busca.
3. Probabilidade e calibracao #
- Log Loss (Log Loss): valoriza probabilidades bem calibradas.
- Brier Score (Brier Score): avalia confiabilidade com curva de calibracao.
- Calibration curves: compara probabilidade prevista com frequencia real.
4. Indicadores para desbalanceamento #
- Balanced Accuracy (Balanced Accuracy): media de recall por classe.
- Cohen’s Kappa / MCC (Cohen’s κ, MCC): mais estaveis com classes desbalanceadas.
Como o limiar muda as metricas #
import matplotlib.pyplot as plt
import numpy as np
from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import precision_score, recall_score, f1_score
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
X, y = make_classification(
n_samples=2000,
n_features=12,
n_informative=4,
weights=[0.85, 0.15],
random_state=42,
)
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, stratify=y, random_state=42
)
scaler = StandardScaler()
model = LogisticRegression(max_iter=2000)
model.fit(scaler.fit_transform(X_train), y_train)
prob = model.predict_proba(scaler.transform(X_test))[:, 1]
thresholds = np.linspace(0.05, 0.95, 19)
precision, recall, f1 = [], [], []
for t in thresholds:
y_pred = (prob >= t).astype(int)
precision.append(precision_score(y_test, y_pred, zero_division=0))
recall.append(recall_score(y_test, y_pred, zero_division=0))
f1.append(f1_score(y_test, y_pred, zero_division=0))
fig, ax = plt.subplots(figsize=(6.8, 4))
ax.plot(thresholds, precision, label="Precision", color="#2563eb")
ax.plot(thresholds, recall, label="Recall", color="#dc2626")
ax.plot(thresholds, f1, label="F1", color="#0d9488")
ax.set_xlabel("Threshold")
ax.set_ylabel("Score")
ax.set_title("Effect of threshold on classification metrics")
ax.set_ylim(0, 1.05)
ax.grid(alpha=0.3)
ax.legend()
plt.tight_layout()

Ao reduzir o limiar, o recall sobe, mas a precision cai. Um criterio e escolher o ponto onde o F1 e maximo.
Pontos para relatorio e operacao #
- Anexe a matriz de confusao
Ajuda a identificar erros por classe. - Explique o limiar escolhido
Use curvas PR ou grafico limiar-score. - Verifique calibracao
Se probabilidades forem usadas em decisao, avalie com Brier Score. - Considere desbalanceamento
Use Balanced Accuracy ou MCC em conjunto. - Monitoramento de drift
Acompanhe Precision/Recall, PR-AUC e ROC-AUC ao longo do tempo.
Referencia rapida #
| Foco | Metricas | Paginas | Nota |
|---|---|---|---|
| Acerto geral | Accuracy / Balanced Accuracy | Accuracy / Balanced Accuracy | Em desbalanceamento, reporte Balanced Accuracy |
| FP vs FN | Precision / Recall / Fβ | Precision-Recall / F1 | Combine com ajuste de limiar |
| Qualidade de ranking | PR-AUC / ROC-AUC / Top-k | PR curve / ROC-AUC / Top-k Accuracy | Bom para recomendacao e classes raras |
| Calibracao | Log Loss / Brier Score | Log Loss / Brier Score | Necessario para decisoes por probabilidade |
| Robustez | MCC / Cohen’s κ | MCC / Cohen’s κ | Estavel em desbalanceamento |
Checklist #
- Usei metricas para desbalanceamento
- Justifiquei o limiar (PR/ROC, custo)
- Verifiquei calibracao de probabilidades
- Comparei distribuicoes de validacao e producao
- Mantive metricas base para futuras comparacoes