Predicción de patologías físicas y psicológicas mediante IA y BigData


Elaboramos bases de datos, de mecanismos de recogida y procesamiento de información, para la posterior elaboración de una red neuronal que permita predecir problemas en materia de salud física como psicológica.

Autores de la investigación

Adrián Vélez

(Ingeniero Informático)

Jorge Guerrero

(Ingeniero informático, máster en Big Data)

José Antonio Betances

(Ingeniero informático, máster en Inteligencia Artificial)

Resumen

En esta investigación comprobaremos si es posible predecir, mediante el análisis de variables biomédicas y psicométricas, patologías como obesidad, enfermedades del corazón, incluyendo enfermedad coronaria e infarto, presión arterial alta, colesterol alto, accidentes cerebrovasculares, síndrome metabólico, diabetes tipo 2, ciertos tipos de cáncer, incluidos los de colon, seno y de útero.

De igual modo trataremos de predecir trastornos psicológicos como depresión, ansiedad generalizada, conductas adictivas, etc. Para el desarrollo de esta investigación se ha empleado el Apple Watch.

Palabras clave: Big data, IA, predicción, patología, enfermedad, salud mental.

In this research we will test whether it is possible to predict, through the analysis of biomedical and psychometric variables, pathologies such as obesity, heart disease, including coronary heart disease and stroke, high blood pressure, high cholesterol, stroke, metabolic syndrome, type 2 diabetes, certain types of cancer, including colon, breast and uterine cancer.

Likewise, we will try to predict psychological disorders such as depression, generalized anxiety, addictive behaviors, etc. The Apple Watch has been used for the development of this research.

Keywords: Big data, IA, prediction, pathology, disease, mental health.


Introducción

El proyecto de las prácticas de empresa está en desarrollo, siguiendo la planificación establecida en la primera sesión de trabajo. En ella se estableció que debía ayudar a montar y probar un sistema de captación de datos biométricos mediante un smartwatch. Para ello, lo primero que hice fue investigar los distintos tipos de smartwatches y smartband que hay en el mercado y que fueran fáciles de conseguir, especialmente a través de plataformas como Amazon, o las propias de varias de las marcas.

Tras realizar dicha investigación, realicé una tabla comparativa de los distintos modelos que había en el mercado y la presente a la empresa para que ellos decidieran cuál de ellos era el más adecuado para el proyecto, ya que no todos tienen las mismas características de sensores, programación y conexión.

Tras la evaluación de cada uno de los modelos presentados en la tabla, me mandaron el elegido para que pudiera recopilando datos, en este caso una smartband Xiaomi 6. Después, entré en el desarrollo del método de analizar los datos en streaming.

Esto consiste en desarrollar un programa que permite enlazar los datos mandados por la smartband a un proyecto situado en Google Cloud Platform, que es una serie de servicios propios proporcionados por Google entre los que se encuentran distintas herramientas para el tratamiento de datos de forma remota, con los que se desarrollará tanto el curso como el proyecto. En dicha plataforma se ha creado un proyecto donde se guardarán los datos recogidos de la smartband, mediante el uso de las técnicas de streaming necesarias para hacerlo.

  • Búsqueda de smartwatches.

    Busqué diferentes marcas y modelos de smartwatches y smartbands para ver cual de ellos tenía mejores características (poder leer el ritmo cardíaco, niveles de oxígeno en sangre, pasos etc…).

  • Obtención de datos.
    Una vez decidida la smartband usada (Xiaomi smartband 6), se procedió a la recogida de datos durante varias sesiones y días, para saber cómo estructurar dicho dispositivo y app relacionada (mifit) los datos que recogía una vez exportados.

     

  • Google Cloud.
    Se asoció mi cuenta de correo Gmail al proyecto de la empresa en la plataforma de Google Cloud, para poder usar sus servicios en línea, como la capacidad de recoger datos en streaming y guardarlos.

     

  • Guardado en nube.
    Se creó un “bucket” para guardar los datos que se le pasen.

     

  • Dataflow.
    Se estructuró un dataflow para la estructuración de la ejecución del código, escrito en lenguaje Python, que se sube y ejecuta.

     

  • Pub/Sub.
    Para que la recogida de datos y su posterior lectura fueran más sencillos, dicho código mencionado antes se escribió teniendo en cuenta la estructura y servicio de Pub/Sub, que consiste en crear un tema (en este caso la conexión y envío de los datos) al que se suscriben 1 o varios usuarios, que recogen dichos datos y los guardan (en el bucket mencionado anteriormente). Se utilizó la variante LITE de este servicio, que hace más sencillo el posterior trabajo con ellos.

     

  • Lectura.
    Para hacer la lectura de los datos en streaming mediante este servicio, se escribió el código en Python utilizando las librerías y objetos de Google Cloud que se tuvieron que descargar e instalar tanto en ordenadores personales como en la propia plataforma. Se tuvo en cuenta la estructura con la que la smartband codifica los datos.

  • Guardado.
    El guardado se codificó también en Python, pero haciéndolo en 2 fases:1. Guardado de los datos recién recibidos en un archivo CSV.
    2. Volcado 2 veces al día de dicho CSV a un archivo Avro, que puede contener y comprimir grandes cantidades de datos.
    Esto se decidió así como medida de seguridad ya que, si hubiera un problema (generalmente con los datos recibidos) y estos se corrompieran o perdieran, sólo se perderían unos pocos megas o gigabytes, lo cual sería preferible a perder terabytes de datos.

     

  • Funciones.
    Se escribieron funciones en el dataflow de GCP para poder hacer el volcado de datos mencionado en el anterior punto, aprovechando la capacidad de automatización de la plataforma.


Método

Para el desarrollo de las prácticas he tenido que utilizar los siguientes recursos:

  • Google Cloud Platform.
  • Bucket.
  • Dataflow.
  • Clusters.
  • Pub/sub.
  • Python. Ejecutado en:
  • Anaconda navigator.
  • Google Colab.
  • Coursera.
  • Curso de Google Platform.


Valoración de las tareas desarrolladas:

Las tareas han sido muy satisfactorias. Yo partía de un conocimiento previo suficiente de las principales áreas de trabajo y herramientas a utilizar. Las prácticas me han aportado un conocimiento más profundo de las herramientas empleadas.

Los problemas que se me han planteado durante las prácticas han resultado bastante asequibles a mis conocimientos, aunque no tuviera conocimiento en el área específica de programación en la nube, que pudo ser solucionada mediante la realización de un curso en la plataforma Coursera. Aun así, todos se han planteado y ejecutado con seriedad y persistencia, sin miedo a pedir ayuda para su resolución.

Antes de las prácticas, mi conocimiento de las aplicaciones y programación en la nube era prácticamente nulo, y ahora he adquirido conocimiento, aunque todavía a un nivel básico, para programación en la nube.

Por otro lado, mi conocimiento previo del lenguaje Python, su estructura y librerías, así como una perspectiva de cómo estructurar los datos para su posterior almacenamiento y uso para la minería de datos ha permitido una profundización significativa con dichas prácticas.

 

Conclusiones

Las prácticas han sido muy satisfactorias, tanto por los conocimientos adquiridos como por los retos superados, que mediante las explicaciones y perspectiva sé que serán muy útiles en el futuro, tanto para la empresa como para mí, debido a la gran importancia que tendrán tanto los conocimientos en el lenguaje Python como la capacidad de hacer streaming y otros tipos de computación en la nube.

 

Predicción de enfermedades físicas y psicológicas mediante una red neuronal y el análisis de datos.

 

Introducción

La idea de las prácticas era desarrollar un modelo que pudiese predecir enfermedades para una serie de datos introducidos. Al principio no se tenía claro cómo abordar el problema, por lo que se tuvieron que hacer varias reuniones para encontrar las vías posibles, además de encontrar los datos. Fue así como se encontró la base de datos «Disease Symptom Prediction» en Kaggle, la cual, fue la que se usó para entrenar el modelo. Así, con Google Collab, y Tensor Flow 2.6, se entrenó una red neuronal, que alcanzó una excelente precisión al primer intento. Luego de un proceso de poda y optimización, se obtuvo una red de 1781 parámetros que hacía perfectamente el trabajo.

Se obtuvieron algunos datos cardíacos recolectados por un smartwatch, con la idea de hacer algo con ellos, pero no se encontró manera de minarlos. El departamento de la empresa en donde estuve haciendo las prácticas fue el de Ingeniería, con Adrian Anselmo Vélez como director.


Método

Se han utilizado bases de datos de Kaggle y datos recolectados de Smartwatches, aunque solo ha podido hacerse algo útil con lo primero. Se entrenó un modelo hecho con Tensor Flow 2.6, usando Google collab.


Valoración de las tareas desarrolladas:

Las lecciones recibidas en materias como Sistemas Cognitivos Artificiales o Aprendizaje Automático fueron de mucha ayuda. Gracias a ello, entrenar la red neuronal fue muy sencillo, al igual que la evaluación de su desempeño.

El problema planteado fue el de entrenar una red neuronal que predijese enfermedades, para una serie de síntomas introducidos. Se usó un dataset de Kaggle, y se entrenó una red neuronal. Se entregó un notebook de jupyter para mostrar el método de entrenamiento, y otro de demostración para hacer las predicciones.

Si bien no puedo decir que lo hecho en las prácticas haya sido especialmente desafiante, me parece que ha sido muy nutritivo para mi desarrollo profesional. El modelo alcanzó una precisión de casi 1 para el conjunto de pruebas, cosa que rara vez sucede, y el hecho de haber trabajado con un equipo de personas que me apoyaron en todo momento supuso para mí una gran motivación.

Conclusiones

No puedo hacer un solo comentario negativo de mi experiencia en las prácticas. Me he topado con gente muy colaborativa y profesional, que me han apoyado en todo lo que he necesitado. La única cosa que lamentaría fue que no hubo tiempo para hacer algo más potente que involucrase procesado de lenguaje natural o cosas más sofisticadas.

Comparte esta investigación:

 

Deja una respuesta

Más artículos...

El Internet de la Mente

El internet de la mente 7/11/2021 Jorge Martija (Psicólogo, CEO de Emobotics) 1. El internet de las cosas (Internet of Things -IoT-) En los últimos

Copyright Emobotics 2021