Clasificación de Quejas Financieras con DistilBERT

Yuri Biardo · Andrea Aranda · Mariana Sambucetti NLP Fine-tuning Clasificación de texto Técnicas de Deep Learning — UTEC · Febrero 2026

Problema

Las entidades financieras reciben miles de quejas en texto libre. Clasificarlas manualmente por categoría de producto es costoso, lento e imposible de escalar. Se requiere automatización con NLP.

Objetivo

Entrenar un modelo capaz de clasificar automáticamente quejas financieras en 5 categorías de producto, con alta precisión y manejo explícito del desbalance de clases.

89.89%
Accuracy en test
0.87
F1-score macro
162 K
Registros
5
Categorías
3
Epochs
0.94
F1 mejor clase

Decisiones técnicas

  • Modelo distilbert-base-uncased (66 M parámetros)
  • Fine-tuning sobre tarea de clasificación de secuencias
  • MAX_LENGTH = 256 tokens — cubre el 94.6 % de los textos
  • Pesos de clase para corregir desbalance (credit_reporting = 56 %)
  • División estratificada 80 / 10 / 10 (train / val / test)
  • Seed fija (42) para reproducibilidad total

Metodología

  • EDA: distribución de clases, valores nulos, longitud de textos
  • Preprocesamiento: limpieza de NaN, tokenización HuggingFace
  • Entrenamiento: HF Trainer + DataCollatorWithPadding
  • Hiperparámetros: lr = 2e-5, batch = 16, epochs = 3
  • Evaluación: accuracy, F1, matriz de confusión
  • Análisis: curvas de loss (1.15 → 0.20) y accuracy por epoch

Resultados

  • Accuracy en test: 89.89 % · F1 macro: 0.87 · F1 weighted: 0.90
  • Mejor clase: credit_reporting (F1 = 0.94) · Clase más pequeña: retail_banking con solo 8 % del dataset alcanzó F1 = 0.89
  • Sin overfitting: accuracy en validación subió 89.0 % → 89.6 % → 90.0 % en las 3 epochs
  • Principales confusiones entre categorías con vocabulario compartido (debt_collection ↔ credit_reporting)

Tecnologías utilizadas

Python PyTorch Transformers (HF) DistilBERT datasets (HF) scikit-learn pandas numpy matplotlib seaborn Google Colab Kaggle API

Posibles mejoras

  • Probar bert-base-uncased (mayor capacidad representacional)
  • Subir MAX_LENGTH a 512 para cubrir el 5.4 % de textos largos
  • Early stopping con mayor número de epochs
  • Data augmentation en clases minoritarias
🎯

DistilBERT con fine-tuning alcanzó 89.89 % de accuracy clasificando quejas financieras en 5 categorías sobre más de 162,000 registros. El uso de pesos de clase fue clave: retail_banking con solo el 8 % del dataset logró F1 = 0.89, demostrando que los modelos pre-entrenados son una solución robusta y eficiente para NLP en entornos con desbalance real de datos.