Curso de Introducción al Machine Learning para las Ciencias de la Salud – Versión Verano 2024

El Machine Learning es un área de la Inteligencia artificial que desarrolla modelos computacionales que tienen la capacidad de ajustarse automáticamente a un conjunto de datos o descubrir patrones dentro de ellos. La aplicación de Machine Learning a las ciencias de la salud es una área de alto impacto que puede tener beneficios directos para la salud de las personas.

Cátedras

1.1 - Aprendizaje automático
2.1
leer más

Prediciendo las Atenciones de Urgencia en Chile

Predicción de Atenciones de Urgencia por Causas Respiratorias en Chile

La predicción es la ciencia de estimar situaciones de incertidumbre, donde en este caso lograremos predecir el futuro utilizando datos de series temporales anteriores.

Los datos que utilizaremos datos del Departamento de Estadísticas e información en salud del Ministerio de Salud de Chile, estos datos están libremente disponibles en el sitio web del Departamento. Utilizaremos datos desde el año 2017 para predecir el mes de Marzo y Abril del año 2020.

El caso de estudio que analizaremos son los casos totales de Chile para atenciones de urgencia respiratoria.

Además de la biblioteca Prophet utilizaremos Pandas para manejar el conjunto de datos y Matplotlib para la visualización.

Importamos las bibliotecas necesarias:

import pandas as pd
from fbprophet import Prophet
import matplotlib.pyplot as plt

Primero cargaremos el conjunto de datos en memoria:

df = pd.read_csv('2017-today.csv', sep=';')

Convertimos la fecha del punto de datos en un objeto Datetime de Pandas y el valor en un Integer:

df['ds']
leer más

Generador Automático de Diagnósticos

Puedes probar el generador acá.

La narrativa médica es un tema muy estudiado en estos momentos dado el gran advenimiento de la Inteligencia Artificial en la sociedad en general.

Lograr entender cuál es el significado de una narrativa médica es el objetivo principal del Procesamiento de Lenguaje Natural en Medicina, si llegamos a una perfecta representación sistematizada de la información que escriben los profesionales de la salud en las distintas fuentes de datos clínicos, muchos problemas podrían solucionarse en el área de la salud, desde la justa priorización de un paciente dentro de la temida lista de espera hasta la correcta distribución de recursos dentro de un establecimiento de salud.

La narrativa médica o mejor dicho el lenguaje en general no tiene una distribución al azar, sino que podemos encontrar patrones fácilmente de manera casi intuitiva, por ejemplo al explorar diagnósticos nos encontramos con que la palabra caries en la mayoría de los casos está acompañada de palabras que definen más específicamente el diagnóstico, las cuales tienen una distribución predecible, por ejemplo:

Es muy probable que encontremos los siguientes grupos de 2 palabras (bigramas) con mucha frecuencia:

  • caries dentinaria
  • caries penetrante

Pero que nos encontremos con una frecuencia casi nula los bigramas:

  • caries cerebral
  • caries pulmonar

Esto quiere decir que dada una palabra de entrada podemos predecir qué palabras le seguirían con mayor probabilidad.

Uno de los métodos que podemos utilizar para modelar este comportamiento son las Cadenas de Markov, en donde establecemos una matriz de probabilidades en donde como filas tenemos cada una de las palabras de nuestro vocabulario y cada uno de los valores de esta fila nos dice con qué probabilidad aparece una siguiente palabra.

Este modelamiento tiene una desventaja, porque sólo podemos predecir la siguiente palabra dado una única palabra anterior, olvidándonos de todo lo que hayamos escrito antes.

Para modelar el lenguaje utilizado en los diagósticos, se extrajeron las frecuencias de todos los bigramas posibles dentro de alrededor de 2 millones de diagnósticos médicos, el desarrollo del modelo se realizó en Python y el código para poder entrenar tus propios modelos o probar el modelo generado con los 2 millones de diagnósticos se encuentra libre pero los datos de entrenamiento no se encuentran disponibles debido a temas bioéticos.

Ejemplo

synthesizer = src.utils.DiagnosticGenerator( # Clase para construir el Generador de diagnósticos.
     markov_matrix_file
leer más

Obtener la Edad de un Individuo desde su RUT

Aplicación web para conocer la edad de una persona y su fecha de nacimiento con su RUT: RUT a Edad y Fecha de Nacimiento

Intuitívamente se sabe que existe una relación entre la edad de una persona y el número correlativo de su RUT, en donde personas que cuentan con una mayor edad, suelen tener un número correlativo de RUT bajo. Para poder probar esta hipótesis se utilizará un método de aprendizaje estadístico básico que nos permitirá inferir la relación existente entre el número correlativo del RUT de la Persona y su edad.

RUT

El Rol Único Nacional, conocido también por el acrónimo RUT, es el número identificatorio único e irrepetible que posee todo chileno, residente o no en Chile, y todo extranjero que permanezca, temporal o definitivamente, con una visa distinta a la visa de turista en dicho país.

El RUT se otorga siguiendo un orden correlativo, por lo tanto es muy posible que una persona con un RUT menor sea de mayor edad, dado que la mayor parte de los RUT proviene de inscripciones de nacimiento.

El RUT consta de dos partes separadas por un guion: el número correlativo y el dígito verificador o DV. El DV consta de un dígito que va del 0 (cero) al 9 (nueve) y la letra K, que se obtiene a partir del correlativo mediante el cómputo de un algoritmo.

Regresión

La Regresión es un conjunto de procesos estadísticos para estimar relaciones entre variables. La regresión nos ayuda a entender cómo cambia una variable en función de otra variable, junto con entender la fuerza de relación entre ellas.

Datos

Se realizaron búsquedas en Google para encontrar documentos que contuvieran los términos edad y rut, estos documentos fueron procesados y se consolidaron todos en un archivo separado por comas.

Método

Se utilizó el lenguaje de programación python bajo los siguientes módulos:

  • Pandas: Biblioteca para el manejo y estructuración de datos.
  • Numpy: Biblioteca para la realización de cálculos vectoriales.
  • Seaborn: Visualización de los resultados.
  • Scipy: Conjunto de pruebas y modelos estadísticos.
  • Math: Módulo de cálculos matemáticos.
  • Datetime: Módulo para interactuar con fechas.
import pandas as pd
import numpy as np
import seaborn as sns
import scipy
import math
import datetime as dt

Se importan los datos y se determinan los tipos de variable.

datos = pd.read_csv("rut.csv",
leer más