← Volver
Práctica universitariaDeep Learning — Proyecto finalProyecto en grupo

Detección de ECG anormal con RNN y LSTM

Comparación controlada Conv1D–SimpleRNN vs Conv1D–LSTM con partición por registro y MLflow

Problema

Distinguir ritmo sinusal normal de ECG anormal (16 categorías agrupadas) evitando fugas de información entre registros.

Datos

ECG signals (1000 fragments), Kaggle: 1,000 fragmentos de 10 s, 17 clases, 45 registros MIT-BIH.

Fuente de datos →

Métodos

  • Filtro pasa banda 0.5–40 Hz, remuestreo 360→180 Hz y z-score por fragmento
  • Partición por registro con StratifiedGroupKFold (≈64/16/20)
  • Extractor Conv1D común + SimpleRNN vs LSTM
  • Pesos de clase solo con entrenamiento
  • Umbral ajustado en validación (Macro F1); test abierto una sola vez
  • Registro de experimentos en MLflow

Resultados

  • Ganó SimpleRNN en validación (ROC-AUC 52.62 % vs 49.16 % de la LSTM); la LSTM más compleja no generalizó mejor con 45 registros.
  • En prueba (201 fragmentos) el modelo no fue satisfactorio: sensibilidad 72.03 %, especificidad 18.97 %, balanced accuracy 45.50 % y accuracy 56.72 %, por debajo del 71.70 % de clasificar todo como anormal. Se documentó así, sin maquillar.

Herramientas

PythonTensorFlow / KerasSciPyscikit-learnMLflowDatabricks

Trabajo universitario; no se afirma autoría individual exclusiva.