(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Como detetar fraudes em transações com Azure ML: passo a passo

João Barros 09 de September de 2026 4 min de leitura

Este tutorial mostra como detetar fraudes em transações com Azure Machine Learning, útil para reduzir perdas e automatizar anomalias em pagamentos. Vai aprender por que usar features, treino e deployment para obter previsões em tempo real.

Pré-requisitos

  • Conta Azure com subscrição ativa e permissões para criar recursos.
  • Azure Machine Learning workspace criado.
  • Python 3.8+ instalado localmente e pip; pacotes: azure-ai-ml, azure-ml, scikit-learn, pandas.
  • Dataset de transações em CSV (colunas: transaction_id, amount, timestamp, merchant, customer_id, label).
  • Familiaridade básica com ML (features, treino, avaliação).

Passo 1: Preparar o ambiente e carregar o dataset

Crie um ambiente Python e instale as bibliotecas. Em seguida ligue-se ao workspace e carregue o CSV para um DataFrame. É importante validar tipos e valores em campos como amount e timestamp.

pip install azure-ai-ml azure-identity scikit-learn pandas joblib

from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
import pandas as pd

ws = MLClient(DefaultAzureCredential(), subscription_id="", resource_group_name="", workspace_name="")
df = pd.read_csv('transactions.csv')
df['timestamp'] = pd.to_datetime(df['timestamp'])
print(df.head())

Passo 2: Pré-processamento e engenharia de features

Explique por que: features bem construídas melhoram a deteção de fraude (por exemplo, frequência do cliente, valor médio, hora do dia). Crie colunas como hour, txn_per_customer, avg_amount_customer. Trate valores em falta e normalize amount.

# Exemplo simples de features
import numpy as np

df['hour'] = df['timestamp'].dt.hour
cust_stats = df.groupby('customer_id')['amount'].agg(['count','mean']).rename(columns={'count':'txn_count','mean':'avg_amount'})
df = df.merge(cust_stats, on='customer_id')

df['amount_norm'] = (df['amount'] - df['avg_amount']) / (df['amount'].std() + 1e-9)

features = ['amount_norm','hour','txn_count']
X = df[features].fillna(0)
y = df['label']  # 1 = fraud, 0 = legit

Passo 3: Treinar um modelo de classificação

Por que: modelos tree-based funcionam bem com features tabulares. Aqui usamos RandomForest para um exemplo rápido. Guarde o modelo com joblib para deployment.

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
import joblib

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, stratify=y, random_state=42)
model = RandomForestClassifier(n_estimators=100, class_weight='balanced', random_state=42)
model.fit(X_train, y_train)

preds = model.predict(X_test)
print(classification_report(y_test, preds))
joblib.dump(model, 'fraud_rf.joblib')

Passo 4: Registar e empacotar o modelo no Azure Machine Learning

Registe o ficheiro do modelo no workspace para gestão de versões. Crie um ambiente de execução (conda) e um scoring script simples que carrega o modelo e prevê a label.

from azure.ai.ml.entities import Model

model_aml = Model(path='fraud_rf.joblib', name='fraud-rf-model', description='RandomForest para deteção de fraude')
registered = ws.models.create_or_update(model_aml)
print('Model registered:', registered.name)

Passo 5: Criar um container image / endpoint de inferência

Por que: um endpoint permite previsões em tempo real. Defina o scoring script que processa JSON com as mesmas features e devolve probabilidade. Depois crie um deployment como Managed Online Endpoint ou compute que suporte o container.

# scoring.py (simplificado)
import json
import joblib
import numpy as np

def init():
    global model
    model = joblib.load('fraud_rf.joblib')

def run(raw_data):
    data = json.loads(raw_data)
    X = np.array([data['amount_norm'], data['hour'], data['txn_count']]).reshape(1,-1)
    pred = model.predict_proba(X)[0,1]
    return {'fraud_probability': float(pred)}

Passo 6: Testar localmente e implementar no Azure

Teste o scoring script localmente com um exemplo JSON. Depois crie o endpoint Managed Online Endpoint no Azure ML e faça o deploy do container com a imagem que inclui scoring.py e o modelo registado.

# Teste local (exemplo)
import requests, json
payload = {'amount_norm':0.5,'hour':2,'txn_count':10}
print(run(json.dumps(payload)))

# No Azure: criar endpoint e deployment via Azure ML CLI/SDK (resumo):
# az ml online-endpoint create -n fraud-endpoint -f endpoint.yml
# az ml online-deployment create -n deployment1 --endpoint fraud-endpoint -f deployment.yml

Verificar o resultado

Confirme que o endpoint responde e que a precisão/recall são aceitáveis. Envie exemplos reais e verifique probabilidades para fraudes conhecidas. Monitorize métricas (TP, FP) e latência no painel do Azure Machine Learning.

Conclusão

Acabou de criar um fluxo completo para deteção de fraude em transações com Azure Machine Learning: preparação, treino, registo e deployment de um endpoint de inferência. Próximos passos: ajustar features, experimentar XGBoost ou LightGBM, e integrar alertas. Dica: valide com dados recentes e implemente thresholds dinâmicos para reduzir falsos positivos.