Inteligencia Artificial y salud. Un caso práctico

Inteligencia Artificial en Salud

Inteligencia Artificial y salud. Un caso práctico

Con el propósito de entender mejor los temas relativos a algoritmos de decisión ID3 y de La Inteligencia artificial ,  he preparado este documento que hace un repaso global  y  situa al lector en contexto: Inteligencia Artificial y salud. caso práctico.

En la era actual de la información, la evolución del análisis de datos ha experimentado una transformación radical, pasando de la estadística tradicional a enfoques más avanzados como el Big Data, la ciencia de datos y la inteligencia artificial. En este artículo, exploraremos cómo estas disciplinas emergentes han remodelado la forma en que analizamos y procesamos la información, y cómo han influido en la toma de decisiones en diversos campos.

Desde sus inicios, la estadística tradicional ha sido una herramienta fundamental para comprender y extraer conocimientos a partir de datos mediante la aplicación de métodos matemáticos y probabilísticos. Sin embargo, con la explosión de la información digital y la creciente complejidad y volumen de los datos, la estadística por sí sola ya no era suficiente para abordar los desafíos emergentes en el análisis de datos.

El advenimiento del Big Data trajo consigo la necesidad de abordar problemas de escala y velocidad en el análisis de datos, lo que llevó al desarrollo de infraestructuras de almacenamiento y procesamiento distribuido, así como algoritmos paralelos y soluciones de análisis en tiempo real. Esta revolución en la gestión de datos abrió las puertas a la ciencia de datos, una disciplina interdisciplinaria que combina técnicas de estadística, informática y visualización de datos para extraer conocimientos y patrones ocultos en grandes conjuntos de datos.

A medida que la ciencia de datos evolucionó, la inteligencia artificial (IA) y el aprendizaje automático (ML) surgieron como métodos fundamentales para analizar y modelar datos complejos y de alta dimensionalidad. Estas técnicas permiten a las máquinas aprender de los datos y adaptarse a nuevas situaciones, lo que resulta en modelos predictivos y sistemas autónomos que pueden abordar problemas cada vez más sofisticados.

Definiciones:

a.) Inteligencia Artificial:

La inteligencia artificial (IA) es una rama de la informática que busca desarrollar sistemas y algoritmos capaces de simular la inteligencia humana, permitiendo a las máquinas aprender, razonar, percibir, planificar y adaptarse a nuevas situaciones.

Esto se logra a través de técnicas como el aprendizaje automático, el procesamiento del lenguaje natural y la visión por computadora, entre otras, que facilitan la creación de modelos y sistemas capaces de analizar y procesar grandes volúmenes de datos para extraer patrones, realizar predicciones y tomar decisiones de forma autónoma.

En el campo de la salud, la inteligencia artificial se ha convertido en una herramienta valiosa para mejorar la atención médica y acelerar la investigación.

Actualmente, la IA se aplica en una amplia gama de áreas, como el diagnóstico por imagen, donde los algoritmos pueden identificar anomalías en radiografías y resonancias magnéticas con una precisión comparable a la de los expertos humanos; la medicina personalizada, en la que se utilizan modelos predictivos para identificar tratamientos específicos y eficaces para cada paciente basados en su genética y características clínicas; y la detección temprana de enfermedades, mediante el análisis de registros médicos y datos de sensores para identificar signos de afecciones antes de que se vuelvan críticas, mejorando así las tasas de éxito en el tratamiento y la calidad de vida de los pacientes.

b.) El Machine Learning:

El aprendizaje automático o aprendizaje automatizado o aprendizaje de máquinas es el subcampo de las ciencias de la computación y una rama de la inteligencia artificial. Cuyo objetivo es desarrollar técnicas que permitan que las computadoras “aprendan” a través de procesos que se conocen procesos de entrenamiento.

De forma más concreta, se trata de crear programas capaces de generalizar comportamientos a partir de una información suministrada en forma de ejemplos.

Es, por lo tanto, un proceso de inducción del conocimiento. En muchas ocasiones el campo de actuación del aprendizaje automático se solapa con el de la estadística computacional, ya que las dos disciplinas se basan en el análisis de datos. Sin embargo, el aprendizaje automático también se centra en el estudio de la complejidad computacional de los problemas.

Muchos problemas son de clase NP-hard, por lo que gran parte de la investigación realizada en aprendizaje automático está enfocada al diseño de soluciones factibles a esos problemas. El aprendizaje automático puede ser visto como un intento de automatizar algunas partes del método científico mediante métodos matemáticos.

c.) El Deep learning

 Aprendizaje profundo (en inglés, deep learning) por su parte es un conjunto de algoritmos de la clase del aprendizaje automático que modela abstracciones de alto nivel en datos usando arquitecturas compuestas de transformaciones no lineales múltiples.

El aprendizaje profundo es parte de un conjunto más amplio de métodos de aprendizaje automático basados en asimilar representaciones de datos. Una observación (por ejemplo, una imagen) puede ser representada en muchas formas (por ejemplo, un vector de pixels), pero algunas representaciones hacen más fácil aprender tareas de interés (por ejemplo, “¿es esta imagen una cara humana?”) sobre la base de ejemplos, y la investigación en esta área intenta definir qué representaciones son mejores y cómo crear modelos para reconocer estas representaciones.

Varias arquitecturas de aprendizaje profundo, como redes neuronales profundas, redes neuronales profundas convolucionales, y redes de creencia profundas, han sido aplicadas a campos como visión por computador, reconocimiento automático del habla, y reconocimiento de señales de audio y música, y han mostrado producir resultados de vanguardia en varias tareas.

machine learning, deep learning, artificial intelligence

Evolución de la Inteligencia Artificial

 

El Big Data

Recientemente con la masificación del uso de computadores y del INTERNET los datos tambien tienen un comportamiento  exponencial.   Los datos se utilizan en las Organizaciones para tomar decisiones, pero por el volumen de los mismos,  cada dia se requieren de mas y mejores herramientas .  Idealmente los datos deberían tambien ayudarnos no sólo a gestionar las Organizaciones sino que tambien a predecir  fenómenos a futuro.   Hablemos entonces de lo  que se conoce como el  “BIG DATA” o macrodatos :

El termino de BIG DATA tiene una serie de características inherentes que han ido evolucionando con el pasar del tiempo,

y que pasaron de ser las 4 “V”  hasta llegar a las 8  “V” en la actualidad.

 

Ahora bien, Nuestros datos deben poder generar información y eventualmente conocimiento según se establece en la conocida pirámide de la  información:  (Datos, información , conocimiento y sabiduría)   Estos datos dentro de las Organizaciones irán siguiendo un proceso que inicialmente podría ser menos automatizado y que sigue un ciclo similar a este :

No hace muchos años que en este marco conceptual de información , conocimiento y sabiduría surge el concepto de Business Intelligence, el cual se define como “El conjunto de estrategias, aplicaciones, datos, productos, tecnologías y arquitectura técnicas, los cuales están enfocados a la administración y creación de conocimiento sobre el medio, a través del análisis de los datos existentes en una organización o empresa.

Pero conforme se han ido desarrollando digitalmente las Organizaciones, el BIG DATA también ha venido evolucionando  y es ahí donde vemos como el BIG DATA para ese procesamiento masivo de información utiliza las técnicas del “machine Learning” para dejar de ser un repositorio de datos históricos sin valor,  para convertirse en una herramienta  poderosa de investigación

Modelo experimental en salud, utilizando machine learning 

iremos presentando paso a paso un modelo que hemos construido a través del tiempo con técnicas de web scraping sobre repositorios públicos y que luego gracias a las herramientas de machine learning hemos construido en un ambiente para predicción en línea.

En realidad es un modelo muy simple que contiene únicamente 7 variables y un total de 2000 casos y que hemos creado para fines puramente didácticos .  Empecemos describiendo el set de datos

dentro de las características demográficas del modelo se incluyen: Sexo, Edad, Presencia de Hipertensión Arterial , Diabetes , Alcoholismo, tabaquismo y Obesidad.  Los pacientes habían sido clasificados de previo por haber sufrido o no cardiopatías (infartos, isquemias, etc.).

Es de esperar que entre estos dos grupos de pacientes (  sanos y enfermos ) exista un  desbalance , que de paso es normal en los modelos de datos en salud, pero  resulta perjudicial  porque el algoritmo terminaría aprendiendo de ese sesgo hacia los pacientes sanos o los enfermos .   Nuestro caso muestra un desbalance entre las clases que queremos predecir  de aprox: (1:1.172) , o sea que de los pacientes que tienen cardiopatia y los que no tienen existe una desproporción que tendremos que corregir con algun mètodo. El mas sencillo,  es considerar ese desajuste en los parámetros del algoritmo. Sin embargo existen otras técnicas más sofisticadas para corregir ese desbalance entre las clases y que podemos ver en este artículo escrito  previamente.

El modelo en detalle:

Un modelo de análisis de datos eficiente y efectivo es fundamental para abordar esta tarea. En este contexto, herramientas como Jupyter Notebooks y lenguajes de programación como Python han ganado popularidad debido a su facilidad de uso y capacidad para manejar grandes conjuntos de datos.

Jupyter Notebooks es una aplicación web de código abierto que permite crear y compartir documentos interactivos que contienen código en vivo, ecuaciones, visualizaciones y texto narrativo. Los usuarios pueden ejecutar y modificar el código en tiempo real, lo que facilita la experimentación y la iteración rápida en el análisis de datos. Jupyter Notebooks es compatible con múltiples lenguajes de programación, siendo Python uno de los más populares y ampliamente utilizados en la comunidad de ciencia de datos.

Python es un lenguaje de programación de alto nivel, de propósito general y fácil de aprender, que se ha convertido en una de las principales herramientas en el ámbito de la ciencia de datos. Su sintaxis clara y legible, junto con una amplia gama de bibliotecas y paquetes específicos para el análisis de datos, como NumPy, pandas, matplotlib y scikit-learn, hacen que Python sea una opción poderosa y flexible para realizar análisis de datos complejos.

Al combinar Jupyter Notebooks con Python, los científicos de datos pueden desarrollar y documentar eficientemente sus modelos de análisis de datos, proporcionando un entorno interactivo y colaborativo que facilita la exploración y comunicación de resultados. Este enfoque permite a los profesionales y las organizaciones extraer información valiosa de sus datos, impulsando la innovación y el crecimiento en diversas industrias.

Vamos entonces al ejercicio y vayamos viendo poco a poco los distintos bloques del programa que hemos hecho utilizando precisamente Jupyter Notebooks.   Si quiere instalar Júpiter notebook en su computador puede seguir el siguiente tutorial.

Siguiendo una  secuencia estructurada

Para procesar los modelos de análisis de datos utilizando Jupyter Notebooks y Python, seguimos un conjunto de pasos sistemáticos que garantizan la eficacia y la precisión de los resultados obtenidos. Estos pasos incluyen:

Preparaciòn de los datos:

  1. Instalación de las librerias o bibliotecas: Antes de comenzar, es esencial instalar las bibliotecas de Python necesarias para el análisis de datos, como NumPy, pandas, matplotlib y scikit-learn, entre otras.  Están diferentes librerías tienen propósitos diferentes entre unas y otras y permiten a unas procesar volúmenes de datos a otras graficar los datos a otras interactuar con mapas y hacer análisis espacial así como infinidad de otros procesos.
  2. Adquisición de los datos: El primer paso en el análisis de datos es obtener el conjunto de datos adecuado, que puede provenir de diversas fuentes, como bases de datos, archivos CSV, API, entre otros. Python y sus bibliotecas permiten la importación y el manejo eficiente de estos datos.  También es posible obtener datos de manera sintética a través de diversas técnicas que se describen en el presente artículo.
  3. Transformación de los datos: Una vez adquiridos, los datos deben limpiarse y transformarse en un formato adecuado para el análisis. Esto puede incluir la eliminación de valores atípicos, el manejo de valores faltantes, la normalización de variables y la codificación de variables categóricas.
  4. Descripción inicial de los datos: en este paso haremos una descripción estadística inicial de las diferentes variables y sus categorías generando algunos gráficos que pudiesen ser de interés para entender mejor el set de datos.
  5. División de los datos:  en un subconjunto para entrenamiento y uso conjunto para pruebas.

Minería de datos:

  1. Aplicación de los algoritmos: Después de preparar los datos, se seleccionan y aplican algoritmos de aprendizaje automático o estadísticos para construir modelos predictivos o descriptivos según los objetivos del análisis.
  2. Evaluación de los algoritmos: Para determinar la efectividad de los modelos generados, es fundamental utilizar métricas de evaluación adecuadas y comparar los resultados obtenidos con diferentes enfoques y configuraciones.
  3. Ajuste de hiperparámetros: Mediante técnicas como la validación cruzada, el ajuste de hiperparámetros permite afinar y optimizar los modelos, seleccionando los parámetros que proporcionan el mejor rendimiento en términos de precisión y generalización.
  4. Interpretación y comunicación de resultados: Finalmente, los resultados del análisis de datos deben interpretarse y comunicarse de manera efectiva a las partes interesadas mediante visualizaciones, informes y presentaciones que destaquen los hallazgos clave y las recomendaciones.

Al seguir este conjunto de pasos, se conforma un modelo de análisis de datos sólido y coherente que garantiza la obtención de información valiosa a partir de los datos, lo que permite tomar decisiones informadas y generar impacto en diversos ámbitos.

 

Júpiter notebook importando librerías

Ahora de seguido procedemos a leer nuestro set de datos y a realizar las transformaciones requeridas

Júpiter notebook leyendo los datos de un archivo CSV

Tipos de atributos, transformación, conversion Python Jupyter Notebooks

tipos de variables , ejercicio Python Jupyter Notebooks

Subdivisión de los datos en subconjunto  de prueba y de entrenamiento:

El proceso de entrenamiento de datos es una etapa esencial en el desarrollo de modelos de Minería de datos, donde se utiliza un conjunto de datos para ajustar los parámetros del modelo y mejorar su rendimiento. Este proceso implica la división de los datos en subconjuntos para entrenamiento, prueba y validación, con el fin de garantizar que el modelo generalice bien a datos no vistos previamente y evitar el sobreajuste.

  1. Conjunto de entrenamiento: Es el subconjunto de datos utilizado para entrenar y ajustar los parámetros del modelo. Este conjunto es el más grande de los tres y se utiliza para que el algoritmo de aprendizaje “aprenda” a partir de ejemplos con soluciones conocidas.
  2. Conjunto de validación: Se utiliza para evaluar el rendimiento del modelo durante el proceso de entrenamiento y ajustar hiperparámetros, como la tasa de aprendizaje o la profundidad de un árbol de decisión. La validación permite seleccionar la mejor configuración del modelo y evitar el sobreajuste al no utilizar el conjunto de prueba en esta etapa.
  3. Conjunto de prueba: Es un subconjunto independiente de datos que se utiliza para evaluar el rendimiento del modelo final. Al no haber sido utilizado durante el entrenamiento ni la validación, el conjunto de prueba proporciona una estimación imparcial de cómo el modelo se desempeñará en datos no vistos previamente.

La división de los datos en conjuntos de entrenamiento, validación y prueba es crucial para obtener modelos precisos y confiables. Al separar los datos de esta manera, se garantiza que el modelo se ajuste adecuadamente a los datos de entrenamiento y se evita el sobreajuste, lo que resulta en un modelo que se desempeña bien con datos nuevos y desconocidos.

 

 

Aplicación de los algoritmos:

En esta etapa, se seleccionan y aplican diferentes algoritmos para construir modelos que puedan extraer patrones y relaciones significativas de los datos. El propósito de esta etapa es encontrar el algoritmo que mejor se adapte al problema en cuestión y produzca el mejor rendimiento en términos de precisión, generalización y eficiencia computacional.

Existen varios tipos de algoritmos de aprendizaje automático que se pueden aplicar según la naturaleza del problema y los objetivos del análisis:   yo he realizado una clasificaciòn de orden didactico para favorecer su entendimiento, y es la que se presenta en la parte inicial de este artículo.   y que resume los diferentes tipos de algoritmos en dos grandes categorías los algoritmos tradicionales y los algoritmos modernos

 

dentro de los algoritmos tradicionales tenemos los algoritmos supervisados y los no supervisados.

Dentro de los algoritmos supervisados tenemos:

  1. Algoritmos de clasificación: Estos algoritmos tienen como objetivo predecir una variable categórica o de clase a partir de un conjunto de características. Ejemplos de algoritmos de clasificación incluyen regresión logística, árboles de decisión, máquinas de vectores de soporte (SVM), K-vecinos más cercanos (KNN) y redes neuronales.
  2. Algoritmos de regresión: Estos algoritmos buscan predecir una variable continua en función de un conjunto de características. Algunos ejemplos de algoritmos de regresión son regresión lineal, regresión polinomial, árboles de decisión de regresión y redes neuronales.

 

Y dentro de los algoritmos no supervisados se describen:

  1. Algoritmos de clustering: Estos algoritmos tienen como objetivo agrupar o segmentar los datos en grupos homogéneos basados en características similares. Ejemplos de algoritmos de clustering incluyen K-means, DBSCAN y agrupamiento jerárquico.
  2. Algoritmos de reducción de dimensionalidad: Estos algoritmos se utilizan para reducir la cantidad de características en los datos, eliminando redundancias y ruido, lo que facilita el análisis y la visualización. Ejemplos de algoritmos de reducción de dimensionalidad son el análisis de componentes principales (PCA), t-SNE y autoencoders.
  3. Algoritmos de aprendizaje reforzado: Estos algoritmos permiten a un agente aprender a tomar decisiones basadas en recompensas y penalizaciones a través de interacciones con su entorno. Ejemplos de algoritmos de aprendizaje reforzado incluyen Q-learning, Deep Q-Networks (DQN) y Proximal Policy Optimization (PPO).

Machine Learning Moderno

Redes neuronales:

Las redes neuronales artificiales son modelos de aprendizaje automático inspirados en la estructura y funcionamiento del cerebro humano. Están compuestas por unidades de procesamiento llamadas neuronas, que se organizan en capas. Las neuronas de cada capa están interconectadas con las neuronas de las capas adyacentes mediante enlaces ponderados. A través de un proceso de entrenamiento, los pesos de estos enlaces se ajustan para minimizar el error en las predicciones del modelo. Las redes neuronales son especialmente útiles para abordar problemas complejos y no lineales, como el reconocimiento de imágenes, el procesamiento del lenguaje natural y la predicción de series temporales.

Algoritmos de ensamble:

Los algoritmos de ensamble son técnicas que combinan múltiples modelos de aprendizaje automático para obtener un rendimiento superior al que se lograría con un único modelo. Estos algoritmos pueden mejorar la precisión, la robustez y la generalización de las predicciones. Existen varios métodos de ensamble, como Bagging, Boosting y Stacking. Bagging (Bootstrap Aggregating) implica entrenar varios modelos en paralelo utilizando subconjuntos aleatorios de los datos de entrenamiento y luego combinar sus predicciones mediante votación o promediado. Boosting, como AdaBoost o Gradient Boosting, entrena modelos secuencialmente, ajustando el peso de los datos de entrenamiento en función del error cometido por los modelos anteriores. Stacking entrena varios modelos utilizando diferentes algoritmos y combina sus predicciones a través de un modelo de aprendizaje automático adicional llamado “meta-modelo”.

Aprendizaje profundo:

El aprendizaje profundo es un subcampo del aprendizaje automático que se centra en el uso de redes neuronales con múltiples capas ocultas, conocidas como redes neuronales profundas. Estas redes pueden aprender automáticamente representaciones jerárquicas y de alto nivel de los datos, lo que permite abordar problemas aún más complejos y difíciles. El aprendizaje profundo ha logrado avances significativos en áreas como el reconocimiento de imágenes y voz, la generación de texto y el control autónomo de vehículos. Algunos tipos populares de redes neuronales profundas incluyen las redes neuronales convolucionales (CNN) para el análisis de imágenes, las redes neuronales recurrentes (RNN) para secuencias temporales y el procesamiento del lenguaje natural, y las redes generativas adversarias (GAN) para la generación de imágenes y texto.

 

En nuestro caso aplicaremos inicialmente el algoritmo de regresión logística el cual también es un algoritmo de clasificación y que por tanto puede ser de utilidad dentro del modelo que estamos desarrollando.

Regresion Logistica , ejercicio Python Jupyter Notebooks

Como se puede observar el rendimiento de ste algoritmo sobfre nuesto subconjunto der datos es  malo (menos al 80% )  y por tanto estaría descartado de momento.

Algoritmo de arboles decisorios (segunda opción )

Los árboles de decisión serà nuestra segunda opciòn son algoritmos de aprendizaje supervisado que se utilizan tanto para problemas de clasificación como de regresión. Estos algoritmos funcionan mediante la construcción de una estructura de árbol, donde cada nodo interno representa una prueba basada en un atributo, y cada rama del nodo representa un resultado de la prueba. Los nodos hoja del árbol contienen las predicciones finales, que son las clases en problemas de clasificación o valores continuos en problemas de regresión.

  • Uno de los elementos técnicos de  los árboles de decisión es la selección de atributos y la generación de las divisiones en los nodos. Diversas métricas se utilizan para determinar la mejor división en cada nodo, como la entropía, la ganancia de información y el índice Gini. Estas métricas evalúan la homogeneidad de las clases o valores en los subconjuntos resultantes de la división, buscando maximizar la pureza de los nodos hoja.
  • Otro aspecto es la “poda” del árbol. La poda es una técnica de regularización que ayuda a prevenir el sobreajuste en el modelo, eliminando ramas del árbol que no aportan información significativa. La poda puede ser de dos tipos: pre-poda y post-poda. La pre-poda implica detener el crecimiento del árbol cuando se alcanzan ciertos criterios, como una profundidad máxima o un número mínimo de muestras por nodo. La post-poda, por otro lado, implica construir primero un árbol completo y luego eliminar iterativamente las ramas menos informativas, utilizando un conjunto de validación para guiar el proceso.

 

Ajustes complejos

El manejo de características numéricas y categóricas es otro elemento técnico desafiante en los árboles de decisión. Mientras que las características numéricas se pueden dividir fácilmente en umbrales, las características categóricas pueden requerir métodos adicionales para determinar las mejores divisiones, como la conversión en variables binarias (one-hot encoding) o la búsqueda exhaustiva de todas las combinaciones posibles de categorías.

En resumen, los árboles de decisión son algoritmos versátiles y fácilmente interpretables que, aunque presentan elementos técnicos altamente complejos como la selección de atributos, la poda y el manejo de características, siguen siendo una herramienta valiosa en la ciencia de datos y el aprendizaje automático.

La sintaxis que utilizaremos en este caso para la elaboración del modelo con árboles decisorios es la que sigue:

 

 

Tome nota de los 3 parámetros (hiperparametros)  que serà necesario “ajustar”

min_samples _split:  Es el número de muestras antes de dividirse el árbol en una nueva rama

min_samples _leaf:  Es el número de muestras minino que debe tener cada hoja al final = 5 par este caso tratandose de que son muy pocos casos

max_depth:  Es el número de niveles que tendrá nuestro  el árbol = 2 par este caso, tratándose de que son muy pocos casos

class_weight:   se refiere al desbalance que hubiese que corregir por desbalance entre las clases en nuestro caso 1:1.72 ( como se había observado antes)

Resultado inicial

Si hemos hecho todo bien,  el resultado que tendremos será similar a este:

 

Algoritmo de árboles decisorios aplicado a la salud

Veamos como el primer punto de división lo constituye la edad (a la izquierda irían los jóvenes y a la derecha los mayores) recordemos que hemos re-codificado la variable edad por eso vemos valortes enteros que van de 1 a 4

Las métricas de evaluación:

Las métricas de evaluación son herramientas cuantitativas utilizadas para medir el rendimiento y la precisión de los algoritmos de aprendizaje automático, tanto en problemas de clasificación como de regresión. Estas métricas son esenciales para evaluar la efectividad de un modelo y ajustar sus parámetros para mejorar su rendimiento.

En problemas de clasificación, algunas métricas comunes incluyen:

  1. Jaccard: Es una medida que compara la similitud entre dos conjuntos, calculada como la intersección dividida por la unión de los conjuntos. Se utiliza para evaluar la precisión de un clasificador.
  2. Matriz de confusión: Una tabla que muestra el número de predicciones correctas e incorrectas para cada clase, permitiendo evaluar la precisión, sensibilidad y especificidad del modelo.  Para más información sobre la matriz de confusión (en este enlace hay bastante información sobre este tema) .
  3. Otras métricas de clasificación: Precisión, recall, F1-score y área bajo la curva ROC (AUC-ROC) son otras métricas populares para evaluar modelos de clasificación.

Tecnicas de regresiòn

En problemas de regresión, las métricas más comunes incluyen:

  1. Error cuadrático medio (MSE): Mide la diferencia promedio entre los valores predichos y reales, elevando al cuadrado las diferencias individuales.
  2. Raíz del error cuadrático medio (RMSE): Es la raíz cuadrada del MSE, que proporciona una medida de error en las mismas unidades que la variable objetivo.
  3. Coeficiente de determinación (R²): Indica qué porcentaje de la variabilidad en la variable dependiente es explicado por el modelo.

En resumen : en machine learning es indispensable el utilizar métricas que nos permitan evaluar el rendimiento de los distintos algoritmos que hemos empleado.  Si no utilizamos ninguna métrica posiblemente estaremos cometiendo errores o no le estaremos sacando el máximo provecho a los distintos modelos. Tal vez lo más relevante es que las métricas nos proporcionan una manera objetiva de comparar diferentes modelos y algoritmos lo cual resulta esencial para tomar decisiones informadas sobre el enfoque más adecuado para un problema específico .

 

Con el propósito de profundizar en las técnicas para la evaluación de los algoritmos presentamos a continuación como es que se manipulan los datos en las subcategorías de entrenamiento y prueba a través del uso de la librería scikit learn con el propósito de aplicar posteriormente las técnicas de evaluación y conocer finalmente la precisión del algoritmo sobre nuestros datos

 

 

 

Veamos de forma práctica cómo incorporamos estas métricas de evaluación dentro de nuestra Jupyter Notebook

Ajuste de hiperparámetros

La etapa de ajuste de hiperparámetros permite encontrar la configuración óptima que mejora el rendimiento del modelo y evita el sobreajuste. En el caso de un árbol de decisión, los hiperparámetros son parámetros que no se aprenden directamente durante el entrenamiento, pero afectan el proceso de construcción del árbol y su estructura. Algunos ejemplos de hiperparámetros en un árbol de decisión incluyen la profundidad máxima del árbol, el número mínimo de muestras requeridas para dividir un nodo y el número mínimo de muestras en un nodo hoja.

Cross validation

Hay otros métodos que utilizamos para mejorar la precisión de los algoritmos y no tanto para evaluarlos una de ellas es la La validación cruzada:

La validación cruzada (cross-validation)  es una técnica utilizada para evaluar el rendimiento de un modelo de aprendizaje automático en diferentes subconjuntos de datos de entrenamiento y validación. Esto permite obtener una estimación más precisa y robusta del rendimiento del modelo en datos no vistos. El método más común de validación cruzada es el k-fold cross-validation, donde los datos se dividen en k subconjuntos (folds) y el modelo se entrena y evalúa k veces, utilizando cada fold como conjunto de validación en una iteración y el resto como conjunto de entrenamiento., una técnica que usa  la división del conjunto de datos en subconjuntos de entrenamiento  en varios subconjuntos. Otra técnica  de cross validation incluyen es  el rid Search: Que es un método de búsqueda exhaustiva que evalúa múltiples combinaciones de parámetros para encontrar la mejor configuración de hiper parámetros para el modelo

Optimizando el modelo

 

Aa partir de estos cambios podemos generar un nuevo árbol optimizado con un valor de precisión muchísimo más alto que el obtenido originalmente  sin ajustar.

Modelo final ajustado

Una vez finalizado el análisis del modelo, incluyendo la selección de atributos, el entrenamiento, y la validación cruzada , con el ajuste de hiperparámetros, es importante evaluar el rendimiento del modelo final utilizando el conjunto de prueba. Para ello, se emplean métricas de evaluación como la matriz de confusión, el reporte de clasificación y la precisión final

  1. Matriz de confusión: La matriz de confusión es una tabla que muestra la distribución de las predicciones del modelo en comparación con las verdaderas etiquetas de clase. Los elementos diagonales de la matriz representan las predicciones correctas, mientras que los elementos fuera de la diagonal indican errores de clasificación. La matriz de confusión permite calcular métricas adicionales como la precisión, el recall, la tasa de verdaderos positivos (sensibilidad) y la tasa de verdaderos negativos (especificidad).
  2. Reporte de clasificación: El reporte de clasificación es un resumen de las métricas de evaluación del modelo para cada clase, incluyendo precisión, recall, F1-score y soporte. La precisión mide la proporción de predicciones correctas para una clase específica, el recall evalúa la proporción de casos verdaderos de esa clase identificados correctamente, y el F1-score es una medida armónica que combina precisión y recall. El soporte indica el número de casos verdaderos de cada clase en el conjunto de prueba. El reporte de clasificación ayuda a identificar las clases en las que el modelo tiene un rendimiento superior o inferior y a detectar posibles desequilibrios de clase.

Etapa de Predicción:

La etapa de predicción es la fase final en el proceso de análisis de datos, en la cual se aplica el modelo entrenado y optimizado con los algoritmos a un conjunto de datos nuevos e independientes. Durante esta etapa, el modelo utiliza el conocimiento adquirido durante el entrenamiento para generar predicciones o estimaciones de las etiquetas o valores objetivo desconocidos. La predicción es esencial para poner en práctica los resultados del análisis, permitiendo tomar decisiones basadas en los patrones y relaciones aprendidas por el algoritmo, y así abordar aplicar el conocimiento adquirido a nuevos pacientes.  Veamos ahora cómo se realizó este último proceso

 

Predicciòn en línea:

Utilizando una arquitectura de sistema en línea y una herramienta de desarrollo web avanzada como Flask, es factible desplegar un modelo de aprendizaje automático previamente entrenado y optimizado en un entorno de producción. Esta configuración permite la interacción en tiempo real con el modelo a través de una interfaz de usuario basada en formularios, en la que los usuarios pueden proporcionar valores de entrada para las distintas características del conjunto de datos.

Mediante la implementación de un sistema de inferencia en línea y la integración de una API (Application Programming Interface) que interactúa con el modelo subyacente, se puede facilitar la ingestión de datos en tiempo real desde el formulario web el cual se puede acceder en:  https://cardiopatia.juanbarrios.com y , procesarlos aplicando el modelo para generar predicciones personalizadas. Estas predicciones pueden luego ser devueltas a la interfaz de usuario, proporcionando información valiosa y adaptada a las necesidades específicas del usuario en función de los datos ingresados.

Este enfoque sofisticado de implementación en línea permite una mayor adaptabilidad y escalabilidad del modelo de aprendizaje automático, al tiempo que optimiza la experiencia del usuario al interactuar con el sistema. Además, al adoptar una arquitectura orientada a microservicios y técnicas de monitoreo y actualización en tiempo real, es posible garantizar un rendimiento óptimo, confiabilidad y mantenimiento eficiente del sistema en el entorno de producción.

 

El formulario en linea luce como este:

 

 

El resultado final totalmente integrado es este:

El código del modelo – modelo experimental para la predicción de cardiopatía

El presente artìculo sobre:  Inteligencia Artificial y salud. Caso práctico . Fue escrito por el Dr. Juan Ignacio Barrios A.  El doctor Barrios Arce es médico y cirujano especialista en informática médica tiene un máster en Business Intelligence y es experto en Big Data y ciencia de datos, cursa estudios en Barcelona sobre inteligencia artificial y  colabora como profesor invitado de la cátedra de ingeniería biomédica de la Facultad de física en la Universidad de Barcelona y es también faculty member de la Universidad de Rochester en los Estados Unidos de Norteamérica

 

 

 

 

 

 

 

 

 

 

4 Responses

  1. carlos willian rincon dice:

    Hola, muy buen articulo. Puedo tener acceso a los datos del ejercicio ficticio?

  2. Alejandro Silva dice:

    El caso está muy bien explicado, podrías publicar el enlace para acceder a los datos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

HTML Snippets Powered By : XYZScripts.com