🛡️ 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:
- Recorte de URLs: Cualquier URL debe recortarse hasta el dominio principal (Ej:
https://harloff-support.cc/secure/login?id=2→https://harloff-support.cc/). - Colapso de espacios y saltos de línea: Reemplazar
\n,\ry 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