Pular para o conteúdo
Vitor Dal Mora
Todos os projetos

Modelo2026Demo ao vivo

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.
  • 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).