Decisão de pagamentos
Estudo de caso: decidir se uma transação deve ser aprovada, revisada ou recusada pelo custo esperado, e não só pela probabilidade de fraude.
−67% de custo frente a aprovar tudo, no teste e com custos hipotéticos
- Tipo
- Modelo
- Período
- 2026
- Status
- Concluído
Ferramentas
- Python
- scikit-learn
- FastAPI
A pergunta
Em pagamentos, errar para um lado custa um chargeback e errar para o outro custa uma venda legítima perdida. Os dois erros não valem o mesmo, e o valor da venda muda a conta. Por isso acurácia ou AUC sozinhas não respondem à pergunta de verdade: qual decisão tomar com esta transação?
O estudo trata o problema como uma decisão de negócio. Cada transação pode ser aprovada, enviada para revisão manual ou recusada, e o objetivo é minimizar o custo total, não maximizar uma métrica de classificação.
Os dados
Dados públicos e anonimizados de transações de cartão europeias (ULB e Kaggle): 284.807 transações em dois dias, 492 delas fraudes. As 28 variáveis são componentes de PCA, então não têm significado legível. O tempo não entra como variável; serve só para ordenar.
O dataset não traz custos, então eles são hipóteses declaradas no código: chargeback de R$ 15 fixos mais o valor da venda, margem de 20% sobre a venda recusada e R$ 5 por revisão manual.
O método
- Split temporal de 60%, 20% e 20% (treino, validação, teste). Um split aleatório vazaria o futuro para o treino. O teste é usado uma única vez, no fim.
- Calibração de Platt na validação. A decisão usa a probabilidade em si, não só o ranking, então ela precisa ser confiável.
- Política A: um limiar global na probabilidade, escolhido na validação. Só aprova ou recusa.
- Política B: para cada transação, escolhe a ação de menor custo esperado.
- Aprovar custa
p × (valor + chargeback). - Revisar custa a taxa de revisão.
- Recusar custa
(1 − p) × margem × valor.
- Aprovar custa
- O modelo foi escolhido pelo PR-AUC na validação. A incerteza vem de um bootstrap sobre as transações do teste.
Experimente
Escolha uma transação real do conjunto de teste e mude as hipóteses de custo: a probabilidade de fraude não muda, mas a decisão pode mudar. No fim aparece o que a transação era de verdade e quanto a decisão custou.
Carregando a demo…
Resultados
No teste, com 56.962 transações e 75 fraudes:
| Política (gradient boosting) | Custo | Economia frente a aprovar tudo | IC de 95% |
|---|---|---|---|
| Aprovar tudo | R$ 8.854 | — | — |
| A: limiar global | R$ 9.611 | −R$ 757 | de −13.724 a 7.938 |
| B: custo esperado, 3 ações | R$ 2.941 | +R$ 5.913 | de 2.603 a 10.456 |
A política B aprova 99,2% das transações, manda 0,11% para revisão e recusa 0,65%. Das 75 fraudes, recusa 55, revisa 5 e deixa 15 passarem. Recusa também 314 transações legítimas, mas nenhuma vale mais que R$ 3,13 e todas juntas somam R$ 22,74: recusar uma compra de centavos custa só a margem sobre centavos.
Em uma análise de sensibilidade, a economia continua positiva nas 27 combinações testadas de margem, chargeback e taxa de revisão.
O que os números mostram
A política A perdeu para “aprovar tudo”. Um limiar fixo trata uma compra de R$ 3 e uma de R$ 25 mil do mesmo jeito. A maior compra legítima do teste vale R$ 25.691: recusá-la custaria R$ 5.138 de margem, mais da metade do custo de aprovar tudo (R$ 8.854). A política B enxerga o valor, e a A não.
Um único número engana. Com regressão logística no lugar do gradient boosting, o intervalo de confiança da política B inclui o zero. Com 75 fraudes no teste, a conclusão só é firme para o modelo que tem o intervalo acima de zero.
Dois erros de natureza diferente. Recusar uma legítima pequena custa centavos. Já o exemplo “Fraude que passou” da demo mostra o outro lado: uma fraude de R$ 187 recebeu 0,04% de probabilidade, foi aprovada e custou R$ 202. O modelo não vê tudo, e é isso que a revisão manual cobre quando a dúvida é grande.
Limitações
- Dois dias de dados e variáveis anônimas: não dá para explicar por que uma transação foi marcada.
- Só 75 fraudes no teste, então o resultado é ruidoso. O intervalo de confiança existe por isso.
- Os custos são hipóteses. A revisão manual é assumida perfeita e com capacidade ilimitada.
- Sem mudança de comportamento ao longo do tempo, sem fraude que se adapta e sem atraso de rótulo (chargebacks chegam semanas depois).
- Calibração com poucos casos de fraude na validação (57).
