La funcionalidad IntegratedML de InterSystems IRIS se utiliza para obtener predicciones y probabilidades mediante el uso de la técnica AutoML. AutoML es una tecnología de Machine Learning utilizada para seleccionar el mejor algoritmo/modelo de Machine Learning para predecir el estado, los números y los resultados generales basados en los datos pasados (datos utilizados para entrenar el modelo AutoML). No necesitas un científico de datos, porque AutoML probará los algoritmos de Machine Learning más comunes y seleccionará el mejor algoritmo para ti, basado en las características de los datos analizados.
InterSystems IRIS incorpora un motor AutoML, pero también permite utilizar H2O y DataRobot. En este artículo mostraré los pasos para utilizar el motor AutoML de InterSystems.
Paso 1 - Descargar la aplicación de muestra para hacer los ejercicios
1. Ve a https://openexchange.intersystems.com/package/Health-Dataset
2. Clonar/git pull el repositorio en cualquier directorio local
$ git clone https://github.com/yurimarx/automl-heart.git
3. Abrir un terminal de Docker en este directorio y ejecutar:
$ docker-compose build
4. Ejecutar el contenedor de IRIS:
$ docker-compose up -d
Paso 2 - Comprender el escenario y los datos
El escenario consiste en predecir, a partir de datos previos, las enfermedades cardíacas. Los datos disponibles para hacerlo, son:
SELECT age, bp, chestPainType, cholesterol, ekgResults, exerciseAngina, fbsOver120, heartDisease, maxHr, numberOfVesselsFluro, sex, slopeOfSt, stDepression, thallium FROM dc_data_health.HeartDisease
El diccionario de datos de la tabla HeartDisease es (fuente: https://data.world/informatics-edu/heart-disease-prediction/workspace/data-dictionary
Nombre de la columna | Tipo | Descripción |
age | Número entero | En años |
sex | Número entero | (1 = hombre; 0 = mujer) |
chestPainType | Número entero | Valor 1: Angina típica -- Valor 2: Angina atípica -- Valor 3: Sin dolor de angina -- Valor 4: Asintomático |
bp | Número entero | Presión arterial en reposo (en mm Hg al ingresar en el hospital) |
cholesterol | Número entero | Colesterol sérico en mg/dl |
fbsOver120 | Número entero | (glucosa en sangre en ayunas > 120 mg/dl) (1 = verdadero, 0 = falso) |
ekgResults | Número entero | Resultados del electrocardiograma de reposo -- Valor 0: normal -- Valor 1: con anormalidad en la onda ST-T (inversiones de la onda T y/o elevación o depresión del ST de > 0,05 mV) -- Valor 2: que muestra hipertrofia ventricular izquierda probable o definida |
maxHr | Número entero | Frecuencia cardíaca máxima alcanzada |
exerciseAngina | Número entero | Angina inducida por el ejercicio (1 = sí, 0 = no) |
stDepression | Doble | Descenso del segmento ST inducida por el ejercicio relacionado al reposo |
slopeOfSt | Número entero | La pendiente del segmento ST para el ejercicio máximo -- Valor 1: pendiente ascendente -- Valor 2: plano -- Valor 3: pendiente descendente |
numberOfVesselsFluro | Número entero | Número de vasos mayores (de 0 a 3) coloreados por la fluoroscopia |
thallium | Número entero | 3 = normal, 6 = defecto fijo, 7 = defecto reversible |
heartDisease | Cadena | Valor 0: < 50% de estrechamiento del diámetro -- Valor 1: > 50% de estrechamiento del diámetro |
heartDisease es la propiedad que tenemos que predecir.
Paso 3 - Preparar los datos para el entrenamiento
La tabla HeartDisease tiene 270 filas. Tomaremos 250 para entrenar nuestro modelo de predicción. Para ello, crearemos la siguiente vista dentro del Portal de administración > Explorador de sistemas > SQL:
CREATE VIEW automl.HeartDiseaseTrainData AS SELECT * FROM dc_data_health.HeartDisease WHERE ID < 251
Paso 4 - Preparar los datos para la validación
Tomaremos 20 filas para validar los resultados de la predicción. Para ello, crearemos la siguiente vista dentro del Portal de administración > Explorador de sistemas > SQL:
CREATE VIEW automl.HeartDiseaseTestData AS SELECT * FROM dc_data_health.HeartDisease WHERE ID > 250
Paso 5 - Crear el modelo de AutoML para predecir las enfermedades cardíacas
IntegratedML permite crear un modelo de AutoML para hacer predicciones y probabilidades (más información en
CREATE MODEL HeartDiseaseModel PREDICTING (heartDisease) FROM automl.HeartDiseaseTrainData
El modelo obtendrá los datos del entrenamiento (aprendizaje) de la vista automl.HeartDiseaseTrainData.
Paso 6 - Ejecutar el entrenamiento
Para hacer esto, ejecutaremos la siguiente instrucción de SQL dentro del Portal de administración > Explorador de sistemas > SQL:
TRAIN MODEL HeartDiseaseModel
Paso 7 - Validar el modelo de entrenamiento
Para validar el modelo que acabamos de entrenar, ejecutaremos la siguiente instrucción de SQL dentro del Portal de administración > Explorador de sistemas > SQL:
VALIDATE MODEL HeartDiseaseModel FROM automl.HeartDiseaseTestData
Validamos el HeartDiseaseModel utilizando datos de prueba extraídos de la vista automl.HeartDiseaseTestData.
Paso 8 - Obtener las métricas de validación
Para conocer las métricas de validación del proceso de validación, ejecutaremos la siguiente instrucción SQL dentro del Portal de administración > Explorador de sistemas > SQL:
SELECT * FROM INFORMATION_SCHEMA_ML_VALIDATION_METRICS
Para entender los resultados obtenidos, consulta: [https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls...(https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls...) La documentación de InterSystems IRIS detalla lo siguiente a partir de los resultados de validación:
La salida de VALIDATE MODEL es un conjunto de métricas de validación que se puede ver en la tabla INFORMATION_SCHEMA_ML_VALIDATION_METRICS.
Para los modelos de regresión, se guardan las siguientes métricas:
- Varianza
- R cuadrado
- Error cuadrático medio
- Error cuadrático medio de la raíz
Para los modelos de clasificación, se guardan las siguientes métricas:
- Precision — Se calcula dividiendo el número de positivos verdaderos por el número de positivos predichos (suma de positivos verdaderos y falsos positivos).
- Recall — Se calcula dividiendo el número de positivos verdaderos por el número de positivos reales (suma de positivos verdaderos y falsos negativos).
- F-Measure — Se calcula mediante la siguiente expresión: F = 2 * (precision * recall) / (precision + recall)
- Accuracy — Se calcula dividiendo el número de verdaderos positivos y verdaderos negativos por el número total de filas (suma de verdaderos positivos, falsos positivos, verdaderos negativos y falsos negativos) en todo el conjunto de pruebas.
Paso 9 - Ejecutar las predicciones con el nuevo modelo de AutoML - ¡el último paso!
Para conocer las métricas de validación del proceso de validación, ejecutaremos la siguiente instrucción SQL dentro del Portal de administración > Explorador de sistemas > SQL:
SELECT *, PREDICT(HeartDiseaseModel ) AS heartDiseasePrediction FROM automl.HeartDiseaseTestData
Compara las columnas heartDisease (valor real) y heartDiseasePrediction (el valor de la predicción)
¡Espero que os resulte útil!
Hola Alberto,
he intentado seguir el paso a paso, pero ya en el punto 3 del paso 1 me ha fallado con el siguiente error:
Global buffer setting requires attention. Auto-selected 25% of total memory.
Allocated 726MB shared memory: 495MB global buffers, 80MB routine buffers
This copy of InterSystems IRIS has been licensed for use exclusively by:
Community License expired.
Copyright (c) 1986-2021 by InterSystems Corporation
Any other use is a violation of your license agreement
Error: Invalid Community Edition license, may have exceeded core limit. - Shutting down the system : $zu(56,2)= 0Starting IRIS
An error was detected during InterSystems IRIS startup.
** Startup aborted **
The command '/bin/sh -c iris start IRIS && iris session IRIS < /tmp/iris.script && iris stop IRIS quietly' returned a non-zero code: 1
ERROR: Service 'iris' failed to build : Build failed
Saludos
Hola José Manuel,
Creo que quizá la imagen que tiene el ejemplo tiene una versión de IRIS Community que ya ha caducado.
En el directorio donde lo hayas descargado, modifica el fichero
Dockerfile
(al comienzo) y prueba a utilizar por ejemplo esta versión:ARG IMAGE=intersystemsdc/irishealth-ml-community:2022.2.0.368.0-zpm
Hola Alberto,
He realizado el cambio que indicas y ahora si la imagen se ha levantado de manera correcta, muchas gracias. Pero los siguientes pasos son dentro del portal de administración y el portal me solicita las claves de acceso, he revisado dentro de los archivos pero no he encontrado alguna pista del usuario y password que debo utilizar.
Gracias por tu ayuda
Hola José Manuel,
Prueba con usuario
superuser
y contraseña por defecto del sistemaSYS
Hola Alberto, muchas gracias.
Con esas claves he logrado entrar.