Este flujo de trabajo aplica una regresión logística sobre 303 registros reales de pacientes para construir un modelo de predicción de enfermedades cardíacas. Además, analiza cómo se correlacionan los indicadores de las pruebas físicas con este tipo de padecimientos.
Requisitos previos
Creó un espacio de trabajo. Para obtener más información, consulte Create and manage workspaces.
Asoció recursos de MaxCompute a su espacio de trabajo. Para obtener más información, consulte Create and manage workspaces.
Procedimiento de minería de datos
Predicción de enfermedades cardíacas
-
Vaya a la página Machine Learning Designer.
Inicie sesión en la PAI console.
En el panel de navegación izquierdo, haga clic en Workspaces. En la página Workspaces, haga clic en el nombre del espacio de trabajo que desea gestionar.
En el panel de navegación izquierdo, elija .
-
Construya la canalización.
En la página Designer, haga clic en la pestaña Preset Templates.
En la sección Heart Disease Prediction de la lista de plantillas, haga clic en Create.
-
En el cuadro de diálogo Create Pipeline, configure los parámetros. Puede usar la configuración predeterminada.
El parámetro Data Storage especifica la ruta del bucket de OSS donde se almacenan los datos temporales y los modelos generados durante la ejecución de la canalización.
-
Haga clic en Confirm.
La canalización se crea en aproximadamente 10 segundos.
En la lista de canalizaciones, busque la canalización Heart Disease Prediction y haga clic en Open.
-
Designer construye automáticamente la canalización a partir de la plantilla predefinida.
Área
Descripción
①
El preprocesamiento de datos consiste en eliminar el ruido, completar los valores faltantes y transformar los tipos de datos. Dado que cada paciente está sano o padece una enfermedad cardíaca, esta predicción representa un problema de clasificación. Los datos de entrada de esta canalización incluyen 14 columnas de características y una columna objetivo. Para obtener más información sobre los campos, consulte Appendix: Heart disease dataset. Durante el preprocesamiento, los campos de cadena se convierten a tipos numéricos según su significado:
-
Datos binarios: para un campo binario como sex, cuyos valores son female o male, asigne el valor 0 a female y 1 a male.
-
Datos multivalor: para un campo como cp (tipo de dolor torácico), asigne cada tipo a un valor numérico distinto.
A continuación se muestra un ejemplo de script SQL para el preprocesamiento de datos.
select age, (case sex when 'male' then 1 else 0 end) as sex, (case cp when 'angina' then 0 when 'notang' then 1 else 2 end) as cp, trestbps, chol, (case fbs when 'true' then 1 else 0 end) as fbs, (case restecg when 'norm' then 0 when 'abn' then 1 else 2 end) as restecg, thalach, (case exang when 'true' then 1 else 0 end) as exang, oldpeak, (case slop when 'up' then 0 when 'flat' then 1 else 2 end) as slop, ca, (case thal when 'norm' then 0 when 'fix' then 1 else 2 end) as thal, (case status when 'sick' then 1 else 0 end) as ifHealth from ${t1};②
La ingeniería de características incluye derivar nuevas características y escalar las existentes. Esta canalización utiliza primero el componente Type Conversion para convertir las características de entrada al tipo DOUBLE, tal como lo requiere el modelo de regresión logística. Después, el componente Feature Select Runner evalúa el impacto de cada característica en el resultado mediante la entropía de la información y el coeficiente de Gini. Por último, el componente Normalize escala el rango numérico de cada característica al intervalo [0, 1] para eliminar la influencia de las distintas unidades de medida. La fórmula utilizada es
result=(val-min)/(max-min).③
Entrenamiento y predicción del modelo:
-
El componente Split divide el conjunto de datos en un conjunto de entrenamiento y uno de predicción con una proporción de 7:3.
-
El componente Binary Logistic Regression entrena el modelo.
NotaSi necesita exportar el modelo como un archivo PMML, seleccione la casilla Generate PMML en la pestaña Field Settings de este componente. Luego, haga clic en un área vacía del lienzo y configure la ruta de almacenamiento de datos de la canalización en la pestaña Pipeline Attributes.
-
El componente Predicted toma el modelo y el conjunto de predicción como entrada para generar los resultados.
④
Los componentes Confusion Matrix y Evaluate evalúan el modelo.
-
-
Ejecute la canalización y consulte el resultado.
Haga clic en
en la parte superior del lienzo.Una vez que finalice la ejecución de la canalización, haga clic con el botón secundario en el componente Binary Logistic Regression del lienzo y elija para exportar el modelo entrenado.
Haga clic con el botón secundario en el componente Predicted del lienzo y elija para consultar los resultados de la predicción.
-
Consulte el rendimiento del modelo.
Haga clic con el botón secundario en el componente Evaluate del lienzo y haga clic en Visual Analysis.
-
En el cuadro de diálogo Evaluate, haga clic en la pestaña Indicator Data para consultar las métricas de evaluación.
En este ejemplo, las métricas de evaluación y sus valores son los siguientes:
KS: 0.7093
AUC: 0.9270
F1 Score: 0.8409
Negative Samples: 51
Positive Samples: 40
Un valor de AUC superior a 0.9 indica un rendimiento predictivo excelente.
Haga clic con el botón secundario en el componente Confusion Matrix del lienzo y haga clic en Visual Analysis.
En el cuadro de diálogo Confusion Matrix, haga clic en la pestaña Summary para consultar estadísticas como la precisión del modelo.
Apéndice: conjunto de datos de enfermedades cardíacas
Esta canalización utiliza un conjunto de datos de código abierto de UCI que contiene información de pruebas físicas de 303 pacientes de un centro médico en Estados Unidos.
|
Nombre del campo |
Tipo |
Descripción |
|
age |
STRING |
Edad del paciente. |
|
sex |
STRING |
Sexo del paciente. Valores válidos: female o male. |
|
cp |
STRING |
Tipos de dolor torácico ordenados de mayor a menor intensidad: typical, atypical, non-anginal y asymptomatic. |
|
trestbps |
STRING |
Presión arterial en reposo. |
|
chol |
STRING |
Colesterol sérico. |
|
fbs |
STRING |
Glucosa en sangre en ayunas. Si el nivel de glucosa supera los 120 mg/dl, el valor es true; de lo contrario, es false. |
|
restecg |
STRING |
Resultados del electrocardiograma en reposo. El script de preprocesamiento usa valores como norm (normal) y abn (anormal). |
|
thalach |
STRING |
Frecuencia cardíaca máxima alcanzada. |
|
exang |
STRING |
Angina inducida por el ejercicio. El valor true indica presencia y false indica ausencia. |
|
oldpeak |
STRING |
Depresión del segmento ST inducida por el ejercicio en relación con el reposo. |
|
slop |
STRING |
Pendiente del segmento ST del electrocardiograma (ECG), que puede ser down, flat o up. |
|
ca |
STRING |
Número de vasos principales visualizados mediante fluoroscopia. |
|
thal |
STRING |
Tipos de anomalías ordenados por gravedad ascendente: norm, fix y rev. |
|
status |
STRING |
Indica si el paciente está enfermo. El valor buff indica que está sano y sick indica que está enfermo. |
Este conjunto de datos viene integrado en la canalización creada a partir de la plantilla. Para descargarlo u obtener más información, consulte Heart Disease Data Set.
Siguientes pasos
Cuando la canalización genere resultados satisfactorios, despliegue el modelo como un servicio en línea para realizar inference en tiempo real. Para obtener más información, consulte Deploy a model as an online service y PMML-based model deployment.