🛡️ Ana-FraudDetection-1.1

Ana-FraudDetection-1.1 es un modelo de lenguaje optimizado para la detección de fraude, Phishing y Spam, tanto en correos electrónicos como en mensajes de texto (SMS / Smishing), con umbral calibrado para máxima precisión en producción.

Ha sido afinado (fine-tuned) partiendo del robusto modelo base multilingüe BSC-LT/mRoBERTa del Barcelona Supercomputing Center, heredando su comprensión sobre 35 lenguajes europeos.

Mejoras respecto a Ana 1.0:

  • Datos: Dataset ampliado a 137.200 muestras únicas + upsampleo adversarial → 133.680 en train
  • Umbral Calibrado: 0.95 (reduce falsos positivos en -69.6% vs umbral 0.50)
  • Precisión: 99.90% en producción (solo 7 falsos positivos en 6.887 emails legítimos)

📊 Especificaciones del Modelo

  • Arquitectura Base: BSC-LT/mRoBERTa
  • Tarea: Clasificación Binaria de Texto (0: Ham / Seguro | 1: Phishing / Malicioso)
  • Dataset Entrenamiento: 133.680 muestras (tras dedup de 137.200 + upsampleo adversarial)
    • 🟢 Ham (Legítimos): 66.484 ejemplos
    • 🔴 Phishing (Maliciosos): 67.196 ejemplos
  • Dataset Test: 13.720 muestras
    • 🟢 Ham: 6.887 ejemplos
    • 🔴 Phishing: 6.833 ejemplos
  • Idiomas Soportados: Inglés, Español, Catalán, Gallego, Euskera (multilingüe)

🚀 Cómo enviar datos al modelo (Formatos)

⚠️ CRÍTICO: Preprocesamiento del Texto Para máxima precisión:

  1. Recorte de URLs: Cualquier URL debe recortarse hasta el dominio principal (Ej: https://harloff-support.cc/secure/login?id=2https://harloff-support.cc/).
  2. Colapso de espacios y saltos de línea: Reemplazar \n, \r y espacios múltiples por un único espacio en blanco.

1. Formato para Correos con Asunto

Concatenar "Asunto" y "Cuerpo" con separador especial </s></s> (incluyendo espacios):

Aviso urgente de bloqueo </s></s> Estimado cliente, su cuenta ha sido suspendida. Entre aquí: https://falso.com

2. Formato para SMS, WhatsApp o Correos sin Asunto

DGT: Último aviso. Tiene una multa impagada. Pague hoy: https://dgt-pagos.es

💻 Ejemplo de Inferencia

from transformers import pipeline
import json

# Cargar el modelo
clasificador = pipeline("text-classification", model="ruta_local", top_k=None)

# Ejemplo de entrada
texto = "Urgente: su cuenta ha sido bloqueada </s></s> Acceda aqui: https://harloff-support.cc"

# Obtener predicción
resultado = clasificador(texto)
print(json.dumps(resultado[0], indent=2))

# Aplicar umbral calibrado (0.95)
threshold = 0.95
for item in resultado[0]:
    if item["label"] in ("Phishing", "LABEL_1"):
        is_phishing = item["score"] >= threshold
        print(f"Score: {item['score']:.4f}, Phishing: {is_phishing}")

📈 Rendimiento y Métricas

Evaluación Final (Umbral 0.50 - Referencia)

  • Accuracy: 99.69%
  • F1-Score: 99.69%
  • Precision: 99.66%
  • Recall: 99.72%
  • FP rate: 0.33%
  • FN rate: 0.28%
  • Test Set: 13.720 muestras (6.833 phishing, 6.887 ham)

Umbral Calibrado (0.95 - Producción)

Métrica Valor
Precision 99.90%
Recall 99.02%
F1-Score 99.46%
Falsos Positivos 7 (en 6.887 emails legítimos)
Falsos Negativos 67 (phishing no detectado)
FP rate 0.10%

Mejora vs Umbral 0.50:

  • Falsos positivos: 23 → 7 (-69.6%)
  • Phishing no detectado: 24 → 67 (+43, pero aún 99.02% de recall)

🔧 Hiperparámetros de Entrenamiento

Parámetro Valor
Base Model BSC-LT/mRoBERTa
Learning Rate 2e-5
Epochs 5 (con Early Stopping patience=3)
Batch Size (Efectivo) 128 (32 × 4 gradient accumulation)
Warmup Steps 10% del total
Weight Decay 0.01
Label Smoothing 0.1
Precision BF16 (para GPUs Ampere+)
Training Time ~238 minutos

Entrenado: 2026-06-03
Calibrado: 2026-06-04
Ana-FraudDetection-1.1 — Kyndryl Iberia

Downloads last month
67
Safetensors
Model size
0.3B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support