Menu
CoddyTech

Monitoramento de fraudes em cartões

Parte da seção Aprendizado não supervisionado do Journey de Machine Learning da Coddy. Lição 49 de 51.

A equipe de cartões de uma cooperativa de crédito só consegue verificar manualmente alguns pagamentos por dia. No mês passado, as fraudes se esconderam nas extremidades:

Os 300 pagamentos com cartão do mês passado, com a hora do dia no eixo horizontal e o valor no eixo vertical em escala logarítmica: pagamentos legítimos em cinza preenchem a região central diurna, cruzes vermelhas marcam 12 fraudes comunicadas, algumas pequenas à noite e outras muito grandes a qualquer hora

Mas ninguém sabe que houve uma fraude até que um cliente reclame, semanas depois. Portanto, dois detectores precisam encontrar os pagamentos fora do comum sem nenhum rótulo.

As reclamações desta semana chegaram. Qual detector teria detectado mais?

challenge icon

Desafio

Difícil

Os 400 pagamentos desta semana estão em payments.csv; o programa lê quantos a equipe pode verificar, budget.

  1. Padronize as quatro características.
  2. Sinalize budget pagamentos com uma floresta de isolamento (random_state=0) e com um fator de outlier local (20 vizinhos).
  3. Só agora consulte fraud: imprima o que cada lista identificou e quantos pagamentos legítimos a equipe teve de verificar.
  4. Envie à equipe a lista que identificou mais fraudes: the isolation forest's list ou the local outlier factor's list; caso contrário, either list, they tie.

Para o mês passado e um orçamento de 10:

Budget: 10 of 300 payments
Isolation forest: caught 6 of 12 frauds, 4 honest payments checked
Local outlier factor: caught 10 of 12 frauds, 0 honest payments checked
Send the team: the local outlier factor's list

Experimente você mesmo

import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import IsolationForest
from sklearn.neighbors import LocalOutlierFactor

# Uma linha por pagamento com cartão; fraud é 1 para os pagamentos que os clientes denunciaram semanas depois
payments = pd.read_csv("payments.csv")
features = ["amount_eur", "hour", "km_from_home", "minutes_since_last"]

# Quantos pagamentos a equipe pode verificar manualmente
budget = int(input())

# Escreva seu código abaixo
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Aprendizado não supervisionado

Pratique por conta própria: Compilador de Python online