$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Declaración ética, conjunto de datos, software y preparación de datos
Los hallazgos de este estudio se basaron en el conjunto de datos de Enfermedades Cardíacas del Repositorio de Aprendizaje Automático de UCI. Al ser un recurso de acceso público y desidentificado, su uso no requirió la aprobación de un comité ético. Los autores también verifican la originalidad de este manuscrito, confirmando que no ha sido publicado ni enviado previamente a otras revistas.
El conjunto de datos de Enfermedades Cardíacas de Cleveland se dividió en conjuntos de entrenamiento y pruebas con un 80/20. El conjunto de datos suele contener 303 instancias; por lo tanto, se utilizaron aproximadamente 242 muestras para entrenamiento y se conservaron 61 muestras como un conjunto de pruebas limpio. Las muestras sintéticas generadas por el GAN o método de respaldo Gaussiano se añadieron únicamente a los datos de entrenamiento para reducir el riesgo de fuga de datos. El conjunto final de entrenamiento aumentado consistió en aproximadamente 242 muestras reales y 1.000 muestras sintéticas, sumando 1.242 muestras de entrenamiento. No se utilizó ningún conjunto fijo de validación estática. En su lugar, se aplicó la validación cruzada estratificada durante el entrenamiento del modelo, dividiendo cada pliegue los datos de entrenamiento aumentados en subconjuntos de entrenamiento y validación.
El conjunto de datos se cargaba en un DataFrame Pandas y se inspeccionaba en busca de valores faltantes. Las características numéricas con valores ausentes se gestionaron mediante imputación mediana con la clase SimpleImputer de scikit-learn usando estrategia = 'mediana'. Las características categóricas con valores ausentes se manejaron mediante imputación de modo con SimpleImputer usando estrategia = 'most_frequent'. Los mecanismos de ausencia se documentaron calculando el porcentaje faltante de cada característica usando df.isnull().sum() / len(df). Los patrones de ausencia no aleatoria se evaluaron comparando los valores medios de otras características entre muestras con y sin datos faltantes utilizando pruebas t para características numéricas y pruebas de qui-cuadrado para características categóricas. La ausencia se documentaba entonces como Ausente Completamente al Azar (MCAR), Ausente al Azar (MAR) o Ausente No al Azar (MNAR), cuando correspondía.
Para conjuntos de datos con ausencia sustancial, se recomendó un análisis de sensibilidad comparando la imputación mediana/modal con la Imputación Múltiple por Ecuaciones Encadenadas (MICE), utilizando fancyimpute. IterativoImputer con max_iter = 10, y imputación KNN, usando fancyimpute. KNN con k = 5. Una diferencia de precisión inferior a 0,03 se trató como indicativa de robustez al métodode imputación 12. Este análisis de sensibilidad se consideró opcional para el conjunto de datos de Cleveland debido a su falta limitada, pero se recomendó para otros conjuntos clínicos con más del 5% de valores faltantes. Los patrones de ausencia también se visualizaron usando la biblioteca missingno generando un mapa de calor de matriz de ausencia con msno.matrix(df). Se utilizó agrupamiento de patrones de ausencia para identificar si los valores ausentes coocurrían de forma sistemática, lo que podría indicar mecanismos de MNAR que requieren intervención de expertos clínicos.
Las características numéricas se estandarizaron mediante la normalización de puntuación z. StandardScaler de scikit-learn se ajustaba a los datos de entrenamiento y luego se aplicaba tanto a conjuntos de entrenamiento como de prueba. Las variables categóricas se codificaban mediante codificación one-hot. El tipo de dolor torácico (cp), que contiene cuatro categorías, se convirtió en cuatro columnas indicadoras binarias usando pandas.get_dummies. La talasemia (thal), que contiene tres categorías, se convirtió en tres columnas indicadoras binarias. Debido a que el generador y discriminador GAN usaban una dimensión fija de entrada/salida de 13 características correspondientes al conjunto de datos original antes de la codificación one-hot, las muestras sintéticas se generaban en el espacio original de 13 características y luego pasaban por la misma tubería de codificación one-hot que los datos reales. Esto preservaba la compatibilidad con la arquitectura GAN y permitía el uso de características codificadas para el entrenamiento de modelos.
Definiciones matemáticas y métricas de calidad
La distancia de Fréchet se utilizó para comparar distribuciones de características reales y sintéticas. La distancia de Fréchet Fr(F, G) entre dos distribuciones F y G se definió de la siguiente manera:
Fr2(F,G)=minX,YE|X-Y|2 (1)
donde E representa la esperanza, y la minimización se toma sobre todas las variables aleatorias X e Y que tienen distribuciones F y G, respectivamente19.
La optimización Harris Hawk (HHO) se utilizó como método de optimización metaheurística. HHO se inspira en el comportamiento cooperativo de caza de los halconesHarris 20. La transición entre las fases de exploración y explotación estaba controlada por la energía de escape E. En la fase de exploración, donde |E| ≥ 1, la actualización se definió de la siguiente manera:
X(t+1) = Xrand (t) - r1 | Xrand (t) - 2r2X (t)|
En la fase de explotación, donde |E| < 1, las actualizaciones se determinaban por la energía de escape E = 2E(1 − t/T) y la fuerza del salto J = 2(1 − r5). En la condición de asedio suave, donde están ≥ 0,5 y |E| ≥ 0.5, la actualización se definió de la siguiente manera:
X(t+1) = ΔX(t) - E|JX rabbit (t) - X(t)|
En la condición de asedio duro, ¿dónde están ≥ 0,5 y |E| < 0.5, la actualización se definió de la siguiente manera:
X(t+1) = Xconejo (t) - E|ΔX(t)|
La equidad se evaluó utilizando la paridad estadística y el equilibrio de tasa de error, siguiendo a Hardt et al.20 y Lima et al.21. Como métricas de equidad se utilizaron diferencias de paridad demográfica, diferencia de probabilidades igualadas y error de calibración basado en edad.

ΔEO = max(|TPRA - TPRB |,| FPRA - FPRB |)
ΔBS=|BS edad<50 - BSedad>50 |
donde BS es la puntuación Brier:

La interpretabilidad del panel se basaba en valores SHAP, que se calculan usando la teoría de juegos coalicionales18.

donde Φi representa la atribución SHAP para la característica i, F. f(S) representa el conjunto de todas las características, y representa la predicción del modelo para un subconjunto de características S.
Aumento de datos basado en GAN
Para abordar la escasez de datos y el desequilibrio de clases, se utilizó una Red Generativa Adversarial (GAN) para generar muestras sintéticas. La arquitectura del generador estaba configurada en TensorFlow/Keras. Aceptaba un vector de ruido de 100 dimensiones muestreado de una distribución normal estándar N(0,1), seguido de capas densas con 128, 256 y 512 unidades usando activación ReLU. La capa de salida contenía 13 unidades, correspondientes a la dimensión original de la característica, y utilizaba activación sigmoide.
La arquitectura del discriminador aceptaba un vector de características de 13 dimensiones como entrada. Consistía en capas densas con 512, 256 y 128 unidades usando activación LeakyReLU con α = 0,2. La capa de salida contenía una unidad con activación sigmoide para la clasificación binaria de muestras reales frente a sintéticas.
El GAN fue entrenado durante 100 épocas utilizando un lote de 64 años. El optimizador Adam se utilizó con una tasa de aprendizaje de 0,0002, β1 = 0,5 y β2 = 0,999. Durante cada época, el discriminador se entrenaba alternativamente en lotes reales y sintéticos, y el generador se entrenaba para engañar al discriminador. Tras el entrenamiento, se introdujeron 1.000 vectores de ruido aleatorio en el generador para producir 1.000 muestras sintéticas, que se añadieron únicamente al conjunto de entrenamiento.
El colapso de modos se monitorizaba durante el entrenamiento GAN midiendo la varianza de cada característica sintética entre 100 muestras generadas cada 10 épocas. Si la varianza de cualquier característica bajaba por debajo del 10% de la varianza correspondiente en datos reales durante tres comprobaciones consecutivas, se sospechaba el colapso del modo. Las estrategias de mitigación incluyeron reducir la tasa de aprendizaje a 1 × 10⁻4, aumentar el tamaño del lote a 128, reiniciar el entrenamiento con una inicialización de peso diferente o reemplazar el GAN estándar por el GAN de Wasserstein con penalización por gradiente (WGAN-GP), tal como describen Arjovsky et al.17. La implementación utilizó un GAN estándar con un respaldo de perturbación gaussiana para asegurar la generación de datos sintéticos cuando TensorFlow no estaba disponible.
La calidad de los datos sintéticos se evaluó calculando la distancia de Fréchet entre distribuciones de características reales y sintéticas mediante una implementación personalizada. También se entrenó un clasificador, como la regresión logística, para distinguir muestras reales de sintéticas; La precisión de clasificación cercana al azar se trató como indicativa de alta fidelidad. Se calculó el AUC de Recordo de Precisión, considerando valores superiores a 0,9 indicativos de buena captura de distribución. También se compararon las correlaciones de Pearson entre pares de características en los conjuntos de datos real y sintético, tratando diferencias por debajo de 0,05 como preservación aceptable de la estructura de correlación.
Cuando TensorFlow/Keras no estaba disponible o el entrenamiento GAN fallaba, se utilizaba un método de retroceso por perturbación gaussiana. Para cada clase, la media (μ) y la desviación estándar (σ) de cada característica se calcularon a partir del conjunto de entrenamiento. A continuación, se generaron muestras sintéticas de la siguiente manera:
Xsynthetic = μ + ε × σ × 0,05, donde ε ~ N(0,1)
Las etiquetas de clase se generaban en proporción a la distribución original de clases. Este respaldo se incluyó para apoyar la reproducibilidad en entornos sin dependencias de aprendizaje profundo.
Selección de características híbridas
Se aplicó una estrategia híbrida de selección de características en dos etapas. En la primera etapa, se realizó un prefiltrado estadístico. Para cada característica xi en el conjunto X, los valores se dividieron en dos grupos según la variable binaria de resultado: G0 para y = 0, indicando que no hay enfermedad, y G1 para y = 1, indicando presencia de enfermedad. La prueba t de dos muestras de Welch se realizó usando scipy.stats.ttest_ind con equal_var = Falso. El tamaño del efecto d de Cohen se calculó entonces de la siguiente manera:
d = (media1 − media2) / pooled_std
donde:
pooled_std = sqrt((std12 + std22)/2)
El nombre de la característica, el valor p y el valor d de Cohen se almacenaban en una tabla de resultados. Se seleccionaron características si cumplían ambos criterios: valor p < 0,05 y |El d| de Cohen ≥ 0,5. El conjunto de características resultante se definió como Xfiltered.
La prueba t de Welch se utilizó porque es adecuada para características numéricas continuas como edad, talaco y pico antiguo. Para características categóricas binarias como sexo y exang, la prueba t. produce resultados comparables a una prueba de proporción al comparar dos grupos. Características multicategóricas como cp y thal se codificaron en un hot, y cada indicador binario se probó individualmente contra la variable de resultado. Este enfoque se consideró apropiado porque el conjunto de datos de Cleveland tiene más de 30 muestras, las características se estandarizaron antes del análisis y equal_var = False tiene en cuenta las varianzas desiguales entre grupos. Para características con violaciones graves de la normalidad, la prueba Mann-Whitney U se consideró como una prueba alternativa no paramétrica.
El umbral p < 0,05 siguió la significación estadística convencional, mientras que |El d| de Cohen ≥ 0,5 correspondía a un tamaño de efecto moderado a grande. Para conjuntos de datos con muestras pequeñas o resultados poco frecuentes, se recomendó el ajuste basado en bootstrap, la corrección de Hedges g o umbrales exploratorios relajados con aportaciones clínicas de expertos. Por ejemplo, se podrían usar 1.000 remuestreos bootstrap para calcular los intervalos de confianza d de Cohen, y se podría aplicar la g de Hedges para corregir el sesgo de muestras pequeñas. Características con estadísticas límite, como valores p entre 0,03 y 0,08 o |d| Se documentaron valores entre 0,4 y 0,6 para posible revisión clínica experta antes de su exclusión.
En la segunda etapa, se aplicó la Optimización Harris Hawk (HHO) al conjunto de características filtrado estadísticamente. El tamaño de la población de los HHO se estableció en 20, y el número máximo de iteraciones en 50. Cada solución se representaba como un vector binario con longitud igual al número de características en Xfiltered, donde 1 indicaba que se había seleccionado una característica y 0 que no se había seleccionado. Las posiciones continuas de HHO se mapearon a vectores binarios usando la función de transferencia en forma de V:
T(x) = |tanh(x)|
El valor binario se establecía en 1 si T(x) > 0,5 y en 0 en caso contrario. La función en forma de V fue seleccionada porque permite la exploración y explotación equilibrada durante la conversión binaria.
La función de aptitud para cada solución se definió mediante regresión logística. Se entrenó un modelo de regresión logística usando únicamente las características seleccionadas por el vector binario, y se realizó una validación cruzada de 5 veces usando cross_val_score de scikit-learn. La aptitud física se calculó de la siguiente manera:
aptitud = 1 − precisión media
La población de posiciones de halcones se inicializó uniformemente en el rango [−1, 1] usando numpy.random.uniform(−1, 1, (population_size, n_features)) con una semilla aleatoria fija de 42 para la reproducibilidad. En cada iteración, se evaluó la aptitud de todos los halcones, se identificó la mejor posición del halcón como el conejo, y se actualizaron las posiciones de los halcones utilizando las ecuaciones de exploración y explotación de HHO basadas en la energía de escape. Tras la convergencia, se seleccionaba el vector binario con mejor rendimiento como el subconjunto final de características, Xfinal.
Las características seleccionadas se registraron a partir de una única ejecución de optimización HHO con una semilla aleatoria fija. Para aplicaciones que requieren mayor confianza estadística, se recomendaron 30 etapas independientes con diferentes semillas aleatorias, y se pudieron seleccionar características de consenso que aparecieran en al menos el 80% de las partidas. La implementación reportada se basó en una única ejecución representativa, ya que las pruebas preliminares indicaron una convergencia consistente.
Entrenamiento y optimización de modelos
Se consideraron tres modelos: Regresión Logística, Bosque Aleatorio y una Red Neuronal Artificial (ANN) optimizada para PSO. La regresión logística se entrenó utilizando la validación cruzada estratificada de 5 veces para mantener la distribución de clases. La intensidad de regularización C se optimizó usando el espacio de búsqueda C
[0,001, 0,01, 0,1, 1, 10]. Para cada pliegue y cada valor de C, el modelo se entrenó en el pliegue de entrenamiento y se evaluó en el pliegue de validación. Se seleccionó el valor de C que maximizaba la precisión media de validación entre pliegues.
El modelo de Bosque Aleatorio se entrenó usando ajuste de hiperparámetros. El espacio de búsqueda incluía max_depth = [5, 10, 15, Ninguno] y min_samples_split = [2, 5, 10]. La búsqueda en cuadrícula con validación cruzada de 5 veces se realizó utilizando ROC-AUC como métrica de optimización a través de GridSearchCV con puntuación = 'roc_auc'. El modelo seleccionado de Bosque Aleatorio utilizó max_depth = 10 y min_samples_split = 5. La estimación de puntuación fuera de la bolsa (OOB) se habilitó usando oob_score = Verdadero.
El sobreajuste se evaluó calculando la diferencia entre la precisión del entrenamiento y la puntuación OOB:
overfitting_gap = training_accuracy − oob_score
Una brecha de sobreajuste por debajo de 0,05 se consideró indicativa de buena generalización, mientras que una brecha superior a 0,10 indicaba la necesidad de reducir max_depth o aumentar min_samples_split. Con una puntuación OOB de 0,9296 y una precisión típica de entrenamiento entre 0,94 y 0,96, la diferencia fue aproximadamente de 0,01–0,03.
También se optimizó un clasificador ANN utilizando la Optimización por Enjambre de Partículas (PSO). La arquitectura ANN consistía en una capa de entrada, una capa oculta con 64 neuronas usando activación ReLU, y una capa de salida con una neurona usando activación sigmoide. PSO se inicializó con 50 partículas y 50 iteraciones y se utilizó para optimizar los pesos iniciales de la red. El RNA se entrenó entonces usando retropropagación estándar. Como la optimización PSO se realizó sobre los mismos datos de entrenamiento sin validación cruzada anidada, este componente se trató con cautela. Para aplicaciones futuras, se recomendó la validación cruzada anidada, con un bucle exterior de 10 partidas para la evaluación y un bucle interno de 10 para la selección de hiperparámetros PSO. Se consideró aceptable una brecha de generalización por debajo de 0,08, mientras que una brecha por encima de 0,15 indicaba un posible sobreajuste que requeriría simplificación del modelo.
Evaluación del modelo
La evaluación del modelo se realizó mediante validación cruzada estratificada de 10 veces en el conjunto final de características, Xfinal. En cada pliegue, se entrenaron modelos de Regresión Logística y Bosque Aleatorio sobre los datos de entrenamiento y evaluados con los datos de validación. Precisión, Precisión, Recordo, puntuación F1 y ROC-AUC se calcularon usando classification_report y roc_auc_score de scikit-learn. La media y la desviación estándar de todas las métricas se calcularon a lo largo de las 10 veces.
La brecha de generalización también se calculó para cada pliegue de la siguiente manera:
generalization_gap = training_accuracy − validation_accuracy
Se informó de la brecha de generalización media en las 10 veces. Se consideró que una brecha media por debajo de 0,08 indicaba un sobreajuste mínimo, mientras que una brecha por encima de 0,15 sugería sobreajuste y la necesidad de regularización o reducción de la complejidad del modelo. Se realizaron pruebas de rango por signo de Wilcoxon para comparar el marco propuesto con métodos de referencia en 10 pliegues usando α = 0,01.
Análisis de explicabilidad
El análisis de explicabilidad se realizó utilizando métodos específicos y agnósticos de cada modelo. Para la Regresión Logística, se ajustó el modelo final y se extrajeron valores de coeficientes para cada característica seleccionada. Las razones de probabilidad se calcularon como exp (coeficiente), y se calcularon intervalos de confianza del 95% utilizando los errores estándar de los coeficientes.
Para Random Forest, las puntuaciones de importancia de Gini se extrajeron del modelo entrenado usando el atributo feature_importances_ y se normalizaron para sumar 1. Las explicaciones de SHAP se generaban usando la biblioteca SHAP. Se creó un objeto KernelExplainer utilizando el modelo entrenado y un conjunto de datos de fondo, como 100 muestras de entrenamiento seleccionadas aleatoriamente. Los valores SHAP se calcularon para todas las instancias del conjunto de pruebas usando shap_values. Se generaron diagramas resumen de enjambre de abejas usando shap.summary_plot, y gráficos de barras con valores absolutos medios de SHAP usando shap.bar_plot.
Se generaron Diagramas de Dependencia Parcial (PDP) para las principales características identificadas mediante el análisis SHAP. Para cada característica seleccionada, se creaba una secuencia de valores que abarcaban el rango de características. Cada valor se sustituyó en la columna de características manteniendo las demás características constantes, y la probabilidad media predicha se calculó en todas las instancias. Los valores de las características se representaron en función de las predicciones medias usando matplotlib. Se añadieron intervalos de confianza del 95% usando 100 iteraciones de remuestreo bootstrap.
Se generaron gráficos de Expectativa Condicional Individual (ICE) para características seleccionadas trazando trayectorias de predicción para instancias individuales a medida que cambiaban los valores de las características. La línea del PDP se superpuso sobre la parcela de ICE. Se compararon métodos explicativos calculando la correlación de rangos de Spearman entre las razones de probabilidades de regresión logística y los valores de SHAP de Bosque Aleatorio usando scipy.stats.spearmanr. Se documentaron discrepancias entre los métodos de explicación para la interpretación clínica. Cuando los coeficientes de regresión SHAP y logística entraron en conflicto, se examinó el PDP para esa característica. Si el PDP mostraba una tendencia no lineal, la explicación SHAP se priorizaba sobre el coeficiente de regresión logística porque el Bosque Aleatorio puede capturar relaciones no lineales que los modelos lineales no pueden.
Protocolo de generalización del marco para validación externa usando MIMIC-III
Se debozó un protocolo de validación externo para aplicar el marco a la base de datos MIMIC-III. El acceso a MIMIC-III requeriría la aprobación de PhysioNet y la finalización de la formación requerida en sujetos humanos. La cohorte propuesta incluiría pacientes adultos de 18 años o más con primer ingreso en UCI y códigos CIE-9 410–414 para infarto agudo de miocardio o códigos CIE-10 I20–I25 para enfermedad cardíaca isquémica. Los criterios de exclusión incluirían más del 30% de valores faltantes en las características objetivo, duración de la estancia por debajo de 24 horas, edad superior a 90 años, cirugía cardíaca previa o enfermedad cardíaca congénita.
El resultado propuesto fue eventos adversos cardíacos mayores (ECM) en las 72 horas posteriores al ingreso, definidos como un compuesto de mortalidad hospitalaria, shock cardiogénico o arritmia ventricular que requirió intervención. Características de series temporales como la frecuencia cardíaca y la presión arterial se agregarían durante las primeras 24 horas de estancia en la UCI usando media, mediana, mínima, máxima y tendencia, donde la tendencia se estimaría como la pendiente de la regresión lineal a lo largo del tiempo. La frecuencia cardíaca máxima se usaría como equivalente cartografiado de la talaca.
Las características del conjunto de datos de Cleveland se mapearían a variables MIMIC-III. Por ejemplo, el talach se mapearía a la frecuencia cardíaca máxima registrada durante las primeras 24 horas de estancia en UCI, la cp se mapearía a evaluaciones estructuradas del dolor y menciones extraídas con PLN del dolor torácico, y oldpeak se mapearía a la desviación del segmento ST respecto a los informes ECG. Se crearía una tabla de mapeo para documentar todas las alineaciones de características.
Antes de aplicar toda la pipeline, la extracción de PLN para oldpeak se validaría en 100 informes ECG seleccionados aleatoriamente. La precisión, la llamada y la puntuación F1 se calcularían en función de la anotación manual por dos clínicos. Si la puntuación F1 era inferior a 0,85, se revisarían los patrones regex o se utilizarían datos ECG estructurados de eventos gráficos como alternativa. La cadena de preprocesamiento se repetiría entonces sobre los datos MIMIC-III extraídos, el GAN se reentrenaría para aumentación, se reaplicaría la selección de características híbridas, se reentrenarían los modelos, se generarían explicaciones y se compararían métricas de rendimiento con los resultados del conjunto de datos de Cleveland.
Implementación de paneles clínicos
Se diseñó un prototipo de panel clínico basado en web utilizando un marco como Flask o Django. Se planificaron endpoints de la API HL7/FHIR para la integración de EHR, con autenticación y autorización configuradas según las políticas de seguridad institucionales. Las funciones de mapeo de datos fueron diseñadas para convertir los datos de los EHR en formato de entrada de modelo.
La interfaz de usuario incluía tres vistas principales. La vista previa al cribado mostraba la demografía de los pacientes y calculaba las puntuaciones de riesgo con niveles de riesgo codificados por colores. La vista de soporte a la decisión mostraba un gráfico en cascada SHAP que mostraba los principales factores que contribuían a un paciente específico. La vista de planificación de intervenciones permitió el análisis hipotético ajustando factores de riesgo modificables y mostrando predicciones de riesgo actualizadas. Se incluyó la funcionalidad de exportación para guardar informes como archivos PDF o integrarlos con sistemas de documentación EHR.
Para el despliegue clínico futuro, se planificó una evaluación de usabilidad con panel de control con al menos cinco clínicos. La evaluación utilizaría la Escala de Usabilidad del Sistema, con una puntuación objetivo superior a 68, tiempo de finalización de la tarea, con una reducción objetivo de al menos un 20% en comparación con el uso solo del EHR, y escalas de satisfacción de 5 puntos para la claridad y confianza de la explicación. Esta evaluación de usabilidad estaba prevista como un paso futuro y no se implementó en el estudio actual.