Classificacao

Eval

Classificacao

まとめ
  • 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 #

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 #


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()
Variacao de Precision / Recall / F1 por limiar

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 #

  1. Anexe a matriz de confusao
    Ajuda a identificar erros por classe.
  2. Explique o limiar escolhido
    Use curvas PR ou grafico limiar-score.
  3. Verifique calibracao
    Se probabilidades forem usadas em decisao, avalie com Brier Score.
  4. Considere desbalanceamento
    Use Balanced Accuracy ou MCC em conjunto.
  5. Monitoramento de drift
    Acompanhe Precision/Recall, PR-AUC e ROC-AUC ao longo do tempo.

Referencia rapida #

FocoMetricasPaginasNota
Acerto geralAccuracy / Balanced AccuracyAccuracy / Balanced AccuracyEm desbalanceamento, reporte Balanced Accuracy
FP vs FNPrecision / Recall / FβPrecision-Recall / F1Combine com ajuste de limiar
Qualidade de rankingPR-AUC / ROC-AUC / Top-kPR curve / ROC-AUC / Top-k AccuracyBom para recomendacao e classes raras
CalibracaoLog Loss / Brier ScoreLog Loss / Brier ScoreNecessario para decisoes por probabilidade
RobustezMCC / 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