/ Proyectos / Industria / Clasificación de fallas eléctricas

Clasificación de fallas en redes eléctricas: combinando texto y datos tabulares con BERT

Predicción de la causa de una interrupción eléctrica fusionando comentarios de campo en texto libre con datos tabulares del circuito, en una arquitectura tipo TabBERT.

11 min de lectura Python · PyTorch · Transformers Datos: interrupciones de una red de distribución eléctrica Aplicable a tesis y proyectos aplicados
Red de distribución eléctrica con miles de interrupciones registradas, analizada con machine learning para clasificar la causa de cada falla

El objetivo era predecir la causa de una interrupción eléctrica a partir de datos tabulares del evento, como circuito, municipio y duración, junto con el comentario de campo que escribe el operador al atender la falla. El problema real: las causas originales venían repartidas en más de una decena de categorías desordenadas, y el comentario de texto libre era la señal más rica del dataset, justo la más difícil de aprovechar.

Se diseñó una arquitectura multimodal tipo TabBERT: una rama tabular con embeddings de las categóricas y la duración escalada, fusionada con un embedding de DistilBERT sobre el comentario. El hallazgo más importante no fue de modelo, fue de datos. Agrupar las causas en 3 clases con significado de negocio, antes de tocar cualquier arquitectura, resultó más determinante para el desempeño que cualquier ajuste posterior.


Mapa del casoContenido


Estructura de alto nivelDiagrama de la solución

Fuente Datos tabulares Fuente Comentario de campo Embeddings categóricas + numérica escalada DistilBERT tokenización + codificación Rama tabular Vector concatenado Rama de texto Token [CLS] Concatenación Dense + Dropout Loss ponderado por clase + early stopping Clasificación 3 clases (softmax) Predicción de causa

Pasa el cursor sobre cada bloque para ver qué hace ese paso.

Las dos ramas, tabular y texto, se mantuvieron separadas hasta el punto de concatenación, porque fusionarlas antes habría diluido la señal semántica del comentario de campo dentro de los embeddings tabulares.


Cómo se construyóConstrucción de la solución

Condiciones del proyecto

RestricciónDato
Objetivo inicialNo exigía llevar el modelo a producción, con margen para explorar un enfoque más disruptivo
Categorías originales de causa de fallaMás de una decena, muchas con pocos registros
Señal más rica del datasetComentario de campo en texto libre, sin estructura fija
Variables de alta cardinalidadCircuito y municipio, no tratables como categóricas simples
OpciónPor qué se descartó
Modelar directamente con las categorías originales de causaDemasiado ruidosas y desbalanceadas: ningún modelo encontraría un patrón limpio
Ignorar el comentario de texto por ser "difícil de procesar"Era la variable con más señal real del dataset
Agrupar causas en 3 clases con significado de negocio + fusión tabular-texto con BERTReduce el ruido de la variable objetivo y aprovecha la señal del texto sin descartarla

Pasos

1

Agrupación de causas de falla en clases con significado de negocio

Agente: propuso mantener las categorías originales tal cual venían en los datos.
Criterio aplicado: colapsarlas en 3 clases con significado de negocio, Natural, Interna/Accidente y Otros, antes de tocar cualquier modelo, para concentrar señal en vez de diluirla.

2

Diseño de la rama tabular

Agente: sugirió one-hot encoding para todas las categóricas.
Criterio aplicado: usar embeddings entrenables para circuito y municipio por su alta cardinalidad, en vez de disparar la dimensionalidad con one-hot.

3

Fusión con la rama de texto usando DistilBERT

Agente: generó el pipeline estándar de tokenización y fine-tuning de BERT.
Criterio aplicado: tomar el embedding del token [CLS] y concatenarlo con la rama tabular en vez de promediar todos los tokens, para preservar el resumen semántico del comentario completo.

4

Balanceo y loss ponderado

Agente: propuso solo oversampling como solución al desbalance.
Criterio aplicado: combinar oversampling con un loss ponderado por clase durante el entrenamiento, porque el desbalance real no desaparece solo con más copias de la clase minoritaria.

Proceso de iteración

Ajuste documentado, no forzado

Las primeras corridas del modelo multimodal, con un learning rate más alto y menos dimensiones de embedding, sobreajustaban rápido al ruido del comentario. También se probaron modelos clásicos como Random Forest, Gradient Boosting y Regresión Logística, solo con la parte tabular, como punto de comparación. Ninguno aprovechaba la señal del texto, lo que confirmó que la complejidad extra del enfoque multimodal sí se justificaba.


CierreLecciones importantes

El trabajo de mayor impacto ocurrió antes de escribir una sola línea de PyTorch. Agrupar categorías ruidosas en clases con significado fue más determinante que cualquier ajuste fino de hiperparámetros. El texto libre casi nunca es "extra": a veces es la variable predictora más fuerte que tienes, y se descarta por default porque es más difícil de procesar.

Si quieres ver un enfoque publicado con una idea similar, texto y datos estructurados aplicados a infraestructura eléctrica, este paper es una buena referencia del nivel de la contribución: Enhancing reliability in power grid fault management via multi-task learning-based knowledge graph completion.

Termina ya tu proyecto

¿Tienes un proyecto similar y no sabes por dónde empezar? Yo te ayudo a diseñarlo.

El 92% de los profesionales de datos desbloquea sus proyectos al ver ejemplos completos resueltos.

53
proyectos
8
sectores
100%
aplicado

Sin registro. Acceso inmediato