Avaliação¶
Performance do modelo¶
Teste estratificado (n = 1.409), taxa-base de churn ≈ 26,5%.
| Modelo | PR-AUC | ROC-AUC | Precisão | Recall (churn) | F1 | Limiar |
|---|---|---|---|---|---|---|
| Regressão Logística (baseline) | 0,633 | 0,842 | 0,524 | 0,765 | 0,622 | 0,54 |
| Gradient Boosting (escolhido) | 0,660 | 0,843 | 0,562 | 0,714 | 0,629 | 0,34 |
Se essas métricas forem novas para você, consulte as explicações de PR-AUC, ROC-AUC, F1, recall e limiar.
- Critério: maior PR-AUC (adequado ao desbalanceamento). O limiar não é 0,5 fixo — é tunado para maximizar F1.
- Trade-off honesto: o baseline tem recall maior; o GB tem melhor PR-AUC/precisão. Para retenção, um próximo passo é escolher o limiar por custo de negócio (custo da oferta × valor do cliente).
- Reprodutível:
python -m ml.trainregenera o modelo e omodels/metrics.json.
Avaliação do sistema¶
21 testes automatizados (tests/) cobrem:
- Modelo: probabilidade válida, alto risco > baixo risco, SHAP retorna fatores,
Contractno topo. - Guardrails: categoria inválida, numérico fora de faixa, jailbreak e fora de escopo bloqueados, saída incoerente sinalizada.
- API: health,
/predict(200 + estrutura), schema inválido (422), chat com jailbreak bloqueado,/metrics.
pytest -q # 21 passed
Latência, custo e monitoramento¶
Cada interação vira um trace JSONL (monitoring/tracing.py), agregado em /api/metrics e na aba
Monitoramento do produto:
- Latência média e p95 (modo fallback ~0,2–0,3 s; com LLM, dominada pela chamada à OpenAI).
- Custo estimado por tokens (
gpt-4o-mini). - Taxa de fallback e taxa de bloqueio por guardrail.
UX¶
- Claro: resposta padronizada Risco → Por quê → Ação, com medidor e gráfico de fatores.
- Rápido: perfis fictícios de exemplo (alto/baixo risco) para demonstração imediata.
- Quando há contingência: a faixa alto/médio/baixo comunica o nível de risco; se o LLM estiver indisponível, o sistema avisa que a explicação foi gerada pelo fallback. A faixa não deve ser interpretada como intervalo de confiança estatística.