🔥 Quer saber como aplicar o Isolation Forest para detecção de fraudes?

Aprenda a intuição do algoritmo por meio de uma aplicação para detecção de fraudes em 5 passos


1. Aprenda a intuição por trás do algoritmo: Isolation Forest

  • 🕵️ Anomalias são mais fáceis de isolar do que observações normais
  • 🌳 O modelo cria árvores de decisão que dividem os dados aleatoriamente com base nos valores das features
  • 🟣 Anomalias requerem menos divisões (ramos da árvore) para serem isoladas (chegar ao nó folha)
  • ⚪ Valores normais requerem mais divisões para serem isolados


1. Aprenda a intuição por trás do algoritmo: Isolation Forest

  • ➗ Quanto menor o número de divisões necessárias para isolar um ponto, maior será seu score de anomalia.
  • 🤖 No sklearn esse score varia de -1 (anomalia) a 1 (normal).
  • ⏸️ É semelhante ao random-forest, mas se trata de um algoritmo não supervisionado
  • ⚖️ Aplicado em problemas bem desbalanceados (ex: 0.1% de desbalanceamento)
  • ✖️ Ou quando não existem exemplos rotulados (não supervisionado)

2. Descubra como o isolation forest pode ser aplicado para detectar fraudes em cartões

  • Problema: como identificar transações fraudulentas de cartões de crédito ?
  • ❌ Queremos decidir se uma transação deve ser bloqueada,
  • ⚠️ Se deve ser gerado apenas um aviso de suspeita de fraude
  • ✅ Ou, se a transação deve ser liberada
  • 🌳 Fraudes são difíceis de rotular, pode não haver exemplos de fraudes
  • ⚙️ Por isso a importância de um modelo não supervisionado
  • 📋 Ao lado a descrição do dataset de exemplo (link do dataset)
Field name Type
transaction_amount number
installments integer
login_attempts_last_12h integer
total_of_last_1h_transactions number
merchant_id string
time_of_day string
location string

3. Treinando o isolation forest

Agora vamos treinar o isolation forest usando os dados de transações, primeiros vamos importar as libs e carregar o nosso dataset:

from sklearn.ensemble import IsolationForest
from sklearn.preprocessing import OneHotEncoder
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# Load the synthetic credit card transactions dataset
# Dataset link: https://www.kaggle.com/datasets/marcusos/synthetic-fraud-detection
df = pd.read_csv('data/transactions.csv')

# numerical variables
numerical_cols = ['transaction_amount', 'installments', 'login_attempts_last_12h', 'total_of_last_1h_transactions']

# One-hot encode the categorical variables
categorical_cols = ["merchant_id", "location", "time_of_day"]

features = numerical_cols + categorical_cols
df[features].head()
transaction_amount installments login_attempts_last_12h total_of_last_1h_transactions merchant_id location time_of_day
0 149.906 1 1 0 B USA afternoon
1 562.798 1 0 2 A USA morning
2 86.064 1 1 1 B Canada afternoon
3 571.313 1 2 0 C USA afternoon
4 1146.57 1 2 2 A Canada morning

3. Treinando o isolation forest

Agora vamos pre-processar o dataset (tratando as categóricas) e por fim fitar o IsolationForest

# Enconding categorical variables using OneHotEncoder
onehot_encoder = OneHotEncoder(sparse_output=False)
onehot_encoded = onehot_encoder.fit_transform(df[categorical_cols])
df_encoded = pd.concat([df[numerical_cols], pd.DataFrame(onehot_encoded)], axis=1)

# Train the isolation forest model
clf = IsolationForest(random_state=42)
clf.fit(df_encoded.values)

# Make predictions on the data
preds = clf.decision_function(df_encoded.values)

3. Treinando o isolation forest: verificando o resultado

  • 📈 Ao lado temos o plot do score de anomalia versus o valor da transação.
  • ➗ É possível observar que o modelo consegue separar razoavelmente as anomalias (fraudes).
  • ➗ Entre -0.10 e -0.15, o modelo já encontra algumas fraudes, mas ainda pode errar bastante (falsos positivos)
  • ➗ Porém, abaixo do score -0.15, o modelo consegue identificar bem os casos anômalos

4. Um sistema antifraude usando o isolation forest

  • ⚠️ Podemos usar o range de -0.10 até -0.15 para gerar alertas de fraude.
  • ❌ Podemos usar o range de -0.15 até -1 para bloquear transações.
  • 🔢 Usando -0.15 como ponto de corte para bloqueio, o modelo teria 45% de recall
  • 🤌 Ou seja, ele conseguiria bloquear 45% das transações fraudulentas
  • 🌲 Ao utilizar o isolation forest é possível criar um sistema antifraude robusto e eficaz.

4. Um sistema antifraude usando o isolation forest

  • Segue um diagram ilustrando a apliação do modelo treinado em um sistema antifraude

5. Vantagens e Desvatagens do isolation forest

👍 Vantagens

  • Consegue lidar com alta dimensionalidade (alto número de features)
  • Não exige conhecimento prévio da distribuição dos dados.
  • Reduz o overfitting por usar multiplas árvores de decisão
  • Escalável, algoritmo rápido, com complexidade linear
  • Não precisa de um label

👎 Desvatagens

  • Pode ter problemas com dados muito esparsos ou discrepantes
  • Dificuldade em lidar com categóricos de alta cardinalidade (muitas categorias)
  • Interpretabilidade limitada: Isolation Forest é um algoritmo de black-box
  • Necessidade de especificar alguns hiperparâmetros

Achou esse conteúdo útil?

Me ajude dando o seu like, comentando ou compartilhando essa publicação. Sua opinião é importante para mim! ❤️👍