Está en la página 1de 7

Introducción:

Los datos clínicos son una parte vital en la toma de decisiones de los
profesionales para cada paciente. Estos se conforman de datos estructurados y
no estructurados, en el primer caso, se puede almacenar información
concerniente a valores demográficos, pruebas de laboratorio, diagnostico
concreto y medicamento suministrado; en el segundo caso, se encuentra
información de texto libre, caracterizada por su libertad semántica y léxica,
permitiendo a cada encargado describir de manera específica tanto el estado del
paciente como su posterior tratamiento. Estas notas clínicas representan más del
80% de la información de los EMR (Registros Médicos Electrónicos) [1] siendo
una fuente importante de datos para procesamiento y análisis.

A pesar de la existencia de estándares internacionales que facilitan la capacidad


de las instituciones de salud para intercambiar información [2], la mayor parte
de las instituciones adaptan su base de datos a las necesidades propias de la
misma entidad, lo que aumenta la dificultad en términos de generalización e
interoperabilidad. Estos obstáculos pueden disminuir la calidad de los datos,
afectando la eficacia de los algoritmos de procesamiento posterior para
determinar el riesgo de enfermedades como la sepsis.

En cuanto a la información no estructurada, la mayor parte de las


investigaciones relacionadas a la adaptación total o parcial de las notas clínicas
tienen códigos precisos y metodologías concretas para cada caso [posible
adaptación de estado del arte], sin embargo, es posible la construcción de un
flujo de trabajo que permita aplicar los diferentes tipos de datasets y extrapolar
los algoritmos analizados a cada aplicación posible en los diferentes ámbitos, lo
que posibilitaría el análisis de los distintos tipos de datos y a su vez la aplicación
de modelos para la predicción del comportamiento de las variables muestreadas.

Materiales:
Para el desarrollo del workflow se implementan códigos en lenguaje de
programación Python, por su versatilidad y por sus herramientas disponibles
que facilitan la mayor parte de los procesos con datos, nos apoyamos en librerías
como: Pandas, Sickitlearn y Numpy, para el preprocesamiento de los datos
estructurados, Matplotlip y Seaborn, para visualizar datos y resultados,
LightGBM para el algoritmo de clasificación de los datos estructurados, NLTK
para el preprocesamiento de datos no estructurados, Gensim, para la
incrustación de las notas clínicas, y Keras para la red neuronal convolucional.
Además, se realiza a partir de la base de datos pública (Medical Information
Mart for Intensive Care) MIMIC en su tercera edición, que incluye una colección
completa de registros de salud electrónicos (EHR), que abarcan información
anónima asociada con más de cuarenta mil pacientes que estuvieron en unidades
de cuidados críticos del Centro Médico Beth Israel Deaconess entre 2001 y 2012.
La base de datos incluye información como datos demográficos, mediciones de
signos vitales, resultados de pruebas de laboratorio, procedimientos,
medicamentos, notas de los cuidadores, informes de imágenes y mortalidad
(incluida después del alta hospitalaria) [3].

Metodología:
La base de datos tiene a disponibilidad información estructurada y no
estructurada, ambas tienen sus propios procedimientos para la extracción de los
datos, por lo que separaremos los procesos para cada caso.

1. Datos estructurados:

La base de datos puede proporcionar, por medio de los datos estructurados, una
fuente complementaría de información que permite implementar un algoritmo de
clasificación para determinar si un paciente contiene riesgo de sepsis en un
registro de datos, con las variables seleccionadas. Para este caso estipulamos dos
partes principales: Preprocesamiento y Modelamiento.

1.1. Preprocesamiento de datos estructurados:

Primero se optimizan los datos por medio del cambio del formato de csv a
parquet, ya que algunas investigaciones han demostrado que este formato
permite reducir los tiempos de procesamiento en la mayor parte de los casos [4].

Posteriormente, se aísla la información útil, asegurando que los pacientes


seleccionados no sean recién nacidos, no hayan sido internados en TSICU, NICU
o PICU, y que hayan tenido más de tres días en cualquier unidad de cuidados
intensivos, para que la información sea lo más estable posible. Se selecciona una
ventana de tiempo de tres días en la unidad de cuidados intensivos, ya que
durante este tipo de hospitalización se concentra una mayor densidad de datos.
Se seleccionan 21 variables relacionadas a sepsis y sus síntomas de aparición [5],
para obtener sus registros durante este tiempo y se etiquetan por medio de
SOFA (Sequential Organ Failure Assessment), el SOFA se utiliza como parte del
Sistema de Puntuación de Sepsis (Sepsis-3) para identificar y clasificar la
gravedad de esta afección. La sepsis es una respuesta inflamatoria sistémica
severa del cuerpo ante una infección, que puede llevar al fallo de múltiples
órganos y sistemas. El SOFA evalúa seis sistemas principales del cuerpo
(respiratorio, cardiovascular, neurológico, hepático, renal y coagulación) y otorga
puntos en función del grado de disfunción en cada uno [6].

Se construyen dos estructuras para almacenar la información obtenida, un


archivo de tipo JSON con información general de cada paciente (nombre, id,
fecha de ingreso, fecha de salida, id de admisión, entre otros) y otro con
información más específica (medicamentos suministrados, pruebas de
laboratorio, pruebas de microbiología, eventos).

1.2. Modelamiento:

Se asegura una aleatoriedad en la selección del grupo de datos de entrenamiento,


prueba y validación, y se modela por medio del algoritmo de LigthGBM. Es una
estructura rápida, apropiada e impulso de gradiente, que depende del cálculo del
árbol de elección, y que se utiliza para el posicionamiento, la caracterización y
otras numerosas asignaciones de la IA.

Dado que depende de los cálculos del árbol, divide la hoja del árbol con el mejor
ajuste, mientras que otros cálculos de impulso dividen la profundidad del árbol
de manera astuta o nivelada en oposición a la hoja. Así que cuando se desarrolla
en una hoja similar en Light GBM, el cálculo por hojas puede disminuir más
desgracias que el cálculo por niveles y, por lo tanto, produce una precisión
mucho mayor que puede ser lograda de vez en cuando por cualquiera de los
cálculos de impulso actuales. De la misma manera, es sorprendentemente
extremadamente rápido, de ahí la palabra ‘Luz’. [7]

2. Datos no estructurados:

Por otro lado, para obtener información útil y procesable de las notas clínicas,
es necesario realizar diferentes transformaciones, para lo cual se establecen para
el modelo estructural del flujo de trabajo, tres partes principales:
Preprocesamiento, Incrustación y Clasificación.

2.1. Preprocesamiento de notas clínicas:

Las notas clínicas, al igual que otro conjunto de datos, tienen ciertas
características similares entre ellas, títulos, abreviaturas, fechas, datos anónimos
con una sintaxis similar, entre otros. Todos estos aspectos se eliminan previo a
cualquier procesamiento, de manera que se pueda obtener por cada escrito solo
la información relevante y necesaria, proceso al cual se le llama limpieza.
Posteriormente, el texto se tokeniza, se remueven palabras inútiles, se lematiza y
se convierten a minúsculas todas las palabras por separado.

2.2. Incrustaciones de palabras:


El modelo para realizar las incrustaciones de palabras seleccionado es
Word2Vec. Este modelo desarrollado en 2013 por Tomas Mikolov y otros
investigadores de Google en una técnica de incrustación para resolver problemas
avanzados de NLP. Esta puede iterar a lo largo de un corpus de datos con el fin
de aprender asociaciones o dependencias entre palabras [8]. Este modelo se
configuro en su versión Skip-Gram, con un vector de palabras de 500 valores,
una ventana de 100 palabras y una frecuencia mínima de aparición de 2.

La incrustación arroja un valor numérico para las palabras del vocabulario en


relación con la sintaxis que lo rodea, de manera que se pueda representar en
forma numérica el sentido semántico para cada caso.

2.3. Red Neuronal o Aplicación:

Para verificar la eficiencia de la incrustación se realiza un modelo de clasificación


por medio de una red neuronal convolucional, aprovechando las etiquetas de los
pacientes, obtenidas en los datos estructurados, y sus marcas de tiempo se
construye un Dataframe de las notas clínicas preprocesadas y sus etiquetas para
sepsis.

Se construye una red neuronal con las capas que se observan en la figura _,
donde la capa de incrustaciones posee los valores correspondientes a cada una de
las palabras del vocabulario.

Resultados:
El modelamiento de los datos estructurados puede arrojar los resultados por
medio de las matrices de confusión, estas matrices permiten conocer el
rendimiento del modelo en función de los Dataframes obtenidos. El resumen de
las matrices de confusión puede verse en la tabla a continuación:

Dataframe Dataframe
Ámbito Not imputed Imputed ¿ Interpolation
NoBalanced Balanced NoBalanced Balanced
Registros positivos 820 700 1.658 1.290
Registros negativos 352.458 120.243 351.620 119.653
Registros clasificados
366 281 226 219
positivos
Registros clasificados
352.912 120.662 353.052 120.724
negativos
Registros falsos positivos 73 38 28 41
Registros falsos
527 457 1460 1.112
negativos
Registros verdaderos
293 243 198 178
positivos
Registros verdaderos
352.385 120.205 351.592 119.612
negativos

Como se puede observar por medio de la estrategia de la media de tiempo entre


unos se aumentó la cantidad de registros positivos y a su vez se redujeron los
ceros, lo que permitió pasar de 0.003% a 0.006% de registros positivos. Sin
embargo, aún se observa un amplio desbalance de los datos, lo que se traduce en
valores falsos negativos demasiado altos, ya que, el modelo encuentra con mayor
facilidad razones para que un registro sea negativo a que sea positivo. Por este
motivo también se observan que la mayor parte de los datos etiquetados como
positivos son clasificados como negativos, más específicamente el 32.1% en el
caso del dataframe no interpolado, y la interpolación no ayuda con el problema,
de hecho, el porcentaje de aciertos para los valores positivos disminuye al 27.2%.
En el caso de los valores negativos es similar, la brecha entre la cantidad de
registros negativos y los clasificados negativos aumenta en lugar de disminuir.
En cuanto al total de los valores predichos se observa que el dataframe no
imputado tiene 455.364 registros clasificados correctamente, mientras que el
dataframe imputado tiene 454.322 registros.

Otros resultados pueden verse por medio del reporte de clasificación, este
permite observar el rendimiento del modelo por medio del valor de precisión,
recall y f1-score. Estos datos se resumen en la siguiente tabla.

Dataframe Dataframe
Ámbito Not imputed Imputed ¿ Interpolation
NoBalanced Balanced NoBalanced Balanced
Precision 0.800 0.865 0.876 0.812
Recall 0.357 0.347 0.119 0.134
F1-score 0.494 0.495 0.21 0.230

En cuanto a la información no estructurada se puede observar a continuación un


mapa de visualización de las palabras obtenida por medio de TSNE, de manera
general, este algoritmo intenta preservar las relaciones de similitud entre los
puntos en un espacio de alta dimensionalidad al mapearlos a un espacio de baja
dimensionalidad. La figura 33 muestra la visualización generada por medio de
este algoritmo, donde cada punto representa una palabra del vocabulario
incrustado, se pueden observar con claridad algunas agrupaciones pequeñas,
donde convergen algunas palabras o números con un significado contextual
similar y a su vez, se pueden ver palabras uniendo diferentes agrupaciones, como
puentes semánticos, lo que se hace más evidente cuando nos acercamos al
centro, en donde se observa un grupo denso y grande de palabras con el mismo
contexto, teniendo en cuenta que todas las palabras del modelo pertenecen al
mismo tema o mismo origen, es normal que en general se organicen como un
solo grupo.

También es posible observar los resultados de las métricas de evaluación


seleccionadas para el rendimiento del modelo de la red neuronal convolucional
en la tabla que se muestra a continuación

Métrica Valor
Precision 0.8945
Accuracy 0.9922
Recall 0.5636
AUC 0.8245
F1-score 0.6915

Estos valores evolucionan con las iteraciones realizadas por la red neuronal, su
desarrollo puede observarse por medio de las siguientes gráficas.
Finalmente, se puede concluir que la función de la red neuronal no es muy
estable en la mayor parte de las métricas, además tiene ciertos picos de caída
que pueden aparentar a simple vista problemas de comprensión, sin embargo, es
importante mencionar que la red neuronal siempre trata de adaptarse a los
datos que recibe y en este caso intenta encontrar patrones complejos al interior
de los textos, en caso de que alguno de esos patrones encontrados no brinde gran
importancia o relevancia en las métricas, se descarta por completo y se inicia un
nuevo análisis en la iteración o epoch siguiente.

También podría gustarte