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

Cómo detectar fraudes en transacciones con Azure ML: paso a paso

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

Este tutorial muestra cómo detectar fraudes en transacciones con Azure Machine Learning, útil para reducir pérdidas y automatizar anomalías en pagos. Aprenderá por qué usar features, entrenamiento y deployment para obtener predicciones en tiempo real.

Requisitos previos

  • Cuenta Azure con suscripción activa y permisos para crear recursos.
  • Azure Machine Learning workspace creado.
  • Python 3.8+ instalado localmente y pip; paquetes: azure-ai-ml, azure-ml, scikit-learn, pandas.
  • Dataset de transacciones en CSV (columnas: transaction_id, amount, timestamp, merchant, customer_id, label).
  • Familiaridad básica con ML (features, entrenamiento, evaluación).

Paso 1: Preparar el entorno y cargar el dataset

Creé un entorno Python e instale las bibliotecas. A continuación conéctese al workspace y cargue el CSV en un DataFrame. Es importante validar tipos y valores en campos como amount y 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())

Paso 2: Preprocesamiento e ingeniería de features

Explique por qué: features bien construidas mejoran la detección de fraude (por ejemplo, frecuencia del cliente, valor medio, hora del día). Cree columnas como hour, txn_per_customer, avg_amount_customer. Procese valores faltantes y normalice 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

Paso 3: Entrenar un modelo de clasificación

Por qué: los modelos basados en árboles funcionan bien con features tabulares. Aquí usamos RandomForest para un ejemplo rápido. Guarde el modelo con joblib para el 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')

Paso 4: Registrar y empaquetar el modelo en Azure Machine Learning

Registre el fichero del modelo en el workspace para gestión de versiones. Cree un entorno de ejecución (conda) y un scoring script simple que cargue el modelo y prediga la label.

from azure.ai.ml.entities import Model

model_aml = Model(path='fraud_rf.joblib', name='fraud-rf-model', description='RandomForest para detección de fraude')
registered = ws.models.create_or_update(model_aml)
print('Model registered:', registered.name)

Paso 5: Crear una imagen de contenedor / endpoint de inferencia

Por qué: un endpoint permite predicciones en tiempo real. Defina el scoring script que procese JSON con las mismas features y devuelva probabilidad. Después cree un deployment como Managed Online Endpoint o compute que soporte el contenedor.

# 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)}

Paso 6: Probar localmente e implementar en Azure

Pruebe el scoring script localmente con un ejemplo JSON. Después cree el endpoint Managed Online Endpoint en Azure ML y haga el deploy del contenedor con la imagen que incluye scoring.py y el modelo registrado.

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

# En Azure: crear endpoint y deployment via Azure ML CLI/SDK (resumen):
# 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 el resultado

Confirme que el endpoint responde y que la precisión/recall son aceptables. Envíe ejemplos reales y verifique probabilidades para fraudes conocidos. Monitorice métricas (TP, FP) y latencia en el panel de Azure Machine Learning.

Conclusión

Ha creado un flujo completo para detección de fraude en transacciones con Azure Machine Learning: preparación, entrenamiento, registro y deployment de un endpoint de inferencia. Próximos pasos: ajustar features, probar XGBoost o LightGBM, e integrar alertas. Consejo: valide con datos recientes e implemente thresholds dinámicos para reducir falsos positivos.