Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler

El aprendizaje automático (ML) está revolucionando muchas industrias a un ritmo sin precedentes. La industria de la salud y las ciencias de la vida (HCLS) ha experimentado una rápida evolución en los últimos años y ha adoptado el aprendizaje automático en una multitud de casos de uso para brindar atención de calidad y mejorar los resultados de los pacientes.

En un ciclo de vida típico de ML, los ingenieros de datos y los científicos dedican la mayor parte de su tiempo a los pasos de preparación de datos e ingeniería de características antes incluso de comenzar con el proceso de creación y capacitación de modelos. Tener una herramienta que pueda reducir la barrera de entrada para la preparación de datos, mejorando así la productividad, es una solicitud muy deseable para estas personas. Wrangler de datos de Amazon SageMaker está diseñado específicamente por AWS para reducir la curva de aprendizaje y permitir que los profesionales de datos realicen tareas de preparación, limpieza e ingeniería de características de datos en menos esfuerzo y tiempo. Ofrece una interfaz GUI con muchas funciones integradas e integraciones con otros servicios de AWS, como Servicio de almacenamiento simple de Amazon (Amazon S3) y Tienda de funciones de Amazon SageMaker, así como fuentes de datos de socios, incluidos Snowflake y Databricks.

En esta publicación, demostramos cómo usar Data Wrangler para preparar datos de atención médica para entrenar un modelo para predecir la insuficiencia cardíaca, dada la demografía del paciente, las condiciones médicas previas y el historial de resultados de pruebas de laboratorio.

Resumen de la solución

La solución consta de los siguientes pasos:

  1. Adquiera un conjunto de datos de atención médica como entrada para Data Wrangler.
  2. Utilice las funciones de transformación integradas de Data Wrangler para transformar el conjunto de datos. Esto incluye soltar columnas, caracterizar datos/tiempo, unir conjuntos de datos, imputar valores faltantes, codificar variables categóricas, escalar valores numéricos, equilibrar el conjunto de datos y más.
  3. Utilice la función de transformación personalizada de Data Wrangler (código Pandas o PySpark) para complementar las transformaciones adicionales necesarias más allá de las transformaciones integradas y demostrar la extensibilidad de Data Wrangler. Esto incluye filtrar filas, agrupar datos, formar nuevos marcos de datos basados ​​en condiciones y más.
  4. Utilice las funciones de visualización integradas de Data Wrangler para realizar un análisis visual. Esto incluye fuga de objetivos, correlación de características, modelo rápido y más.
  5. Utilice las opciones de exportación integradas de Data Wrangler para exportar el conjunto de datos transformado a Amazon S3.
  6. Inicie un cuaderno Jupyter para usar el conjunto de datos transformado en Amazon S3 como entrada para entrenar un modelo.

Generar un conjunto de datos

Ahora que nos hemos decidido por la declaración del problema de ML, primero nos fijamos en adquirir los datos que necesitamos. Estudios de investigación como Predicción de insuficiencia cardíaca puede proporcionar datos que ya están en buen estado. Sin embargo, a menudo nos encontramos con escenarios en los que los datos están bastante desordenados y requieren unión, limpieza y varias otras transformaciones que son muy específicas del dominio de la atención médica antes de que puedan usarse para el entrenamiento de ML. Queremos encontrar o generar datos que sean lo suficientemente desordenados y guiarlo a través de los pasos para prepararlos usando Data Wrangler. Con eso en mente, elegimos Synthea como una herramienta para generar datos sintéticos que se ajusten a nuestro objetivo. Sintea es un generador de pacientes sintéticos de código abierto que modela el historial médico de los pacientes sintéticos. Para generar su conjunto de datos, complete los siguientes pasos:

  1. Siga las instrucciones según el guía de inicio rápido documentación para crear un Estudio Amazon SageMaker dominio e inicie Studio.
    Este es un paso previo. Es opcional si Studio ya está configurado en su cuenta.
  2. Después de iniciar Studio, en el lanzador pestaña, elegir terminal del sistema.
    Esto inicia una sesión de terminal que le brinda una interfaz de línea de comando para trabajar.
  3. Para instalar Synthea y generar el conjunto de datos en formato CSV, ejecute los siguientes comandos en la sesión de terminal iniciada:
    $ sudo yum install -y java-1.8.0-openjdk-devel
    $ export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.x86_64
    $ export PATH=$JAVA_HOME/bin:$PATH
    $ git clone https://github.com/synthetichealth/synthea
    $ git checkout v3.0.0
    $ cd synthea
    $ ./run_synthea --exporter.csv.export=true -p 10000

Suministramos un parámetro para generar los conjuntos de datos con un tamaño de población de 10,000. Tenga en cuenta que el parámetro de tamaño indica el número de miembros vivos de la población. Además, Synthea también genera datos para los miembros muertos de la población, lo que podría agregar algunos puntos de datos adicionales además del tamaño de muestra especificado.

Espere hasta que se complete la generación de datos. Este paso suele tardar alrededor de una hora o menos. Synthea genera múltiples conjuntos de datos, incluidos patients, medications, allergies, conditions, y más. Para esta publicación, usamos tres de los conjuntos de datos resultantes:

  • pacientes.csv – Este conjunto de datos tiene aproximadamente 3.2 MB y contiene aproximadamente 11,000 25 filas de datos de pacientes (XNUMX columnas que incluyen ID de paciente, fecha de nacimiento, género, dirección y más)
  • condiciones.csv – Este conjunto de datos tiene aproximadamente 47 MB ​​y contiene aproximadamente 370,000 filas de datos de condiciones médicas (seis columnas que incluyen la ID del paciente, la fecha de inicio de la condición, el código de la condición y más)
  • observaciones.csv – Este conjunto de datos tiene aproximadamente 830 MB y contiene aproximadamente 5 millones de filas de datos de observación (ocho columnas que incluyen la identificación del paciente, la fecha de observación, el código de observación, el valor y más)

Existe una relación de uno a muchos entre el patients y conditions conjuntos de datos También existe una relación de uno a muchos entre el patients y observations conjuntos de datos Para obtener un diccionario de datos detallado, consulte Diccionario de datos del archivo CSV.

  1. Para cargar los conjuntos de datos generados en un depósito de origen en Amazon S3, ejecute los siguientes comandos en la sesión de terminal:
    $ cd ./output/csv
    $ aws s3 sync . s3://<source bucket name>/

Lanzamiento de Data Wrangler

Elige Recursos de SageMaker en la página de navegación en Studio y en la Proyectos menú, seleccione Wrangler de datos para crear un flujo de datos de Data Wrangler. Para conocer los pasos detallados sobre cómo iniciar Data Wrangler desde Studio, consulte Comience con Data Wrangler.

Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Importar fechas

Para importar sus datos, complete los siguientes pasos:

  1. Elige Amazon S3 y ubique el archivopatients.csv en el depósito S3.
  2. En Detalles panel, elija primera k para Muestreo.
  3. Participar 1100 para Tamaño de la muestra.
    En el panel de vista previa, Data Wrangler extrae las primeras 100 filas del conjunto de datos y las muestra como una vista previa.
  4. Elige Importa.
    Data Wrangler selecciona los primeros 1,100 pacientes del total de pacientes (11,000 XNUMX filas) generados por Synthea e importa los datos. El enfoque de muestreo permite que Data Wrangler solo procese los datos de muestra. Nos permite desarrollar nuestro flujo de datos con un conjunto de datos más pequeño, lo que da como resultado un procesamiento más rápido y un ciclo de retroalimentación más corto. Después de crear el flujo de datos, podemos enviar la receta desarrollada a un Procesamiento de SageMaker trabajo para escalar horizontalmente el procesamiento para el conjunto de datos completo o más grande de forma distribuida.
    Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.
  5. Repita este proceso para el conditions y observations conjuntos de datos
    1. Para el conditions conjunto de datos, ingrese 37000 para Tamaño de la muestra, que es 1/10 del total de 370,000 XNUMX filas generadas por Synthea.
    2. Para el observations conjunto de datos, ingrese 500000 para Tamaño de la muestra, que es 1/10 del total de observaciones de 5 millones de filas generadas por Synthea.

Debería ver tres conjuntos de datos como se muestra en la siguiente captura de pantalla.

Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Transforma los datos

La transformación de datos es el proceso de cambiar la estructura, el valor o el formato de una o más columnas en el conjunto de datos. El proceso generalmente lo desarrolla un ingeniero de datos y puede ser un desafío para las personas con un conjunto de habilidades de ingeniería de datos más pequeño para descifrar la lógica propuesta para la transformación. La transformación de datos es parte del proceso de ingeniería de características más amplio, y la secuencia correcta de pasos es otro criterio importante a tener en cuenta al diseñar tales recetas.

Data Wrangler está diseñado para ser una herramienta de código bajo para reducir la barrera de entrada para una preparación de datos efectiva. Viene con más de 300 transformaciones de datos preconfiguradas para que elija sin escribir una sola línea de código. En las siguientes secciones, vemos cómo transformar los conjuntos de datos importados en Data Wrangler.

Soltar columnas enpatients.csv

Primero soltamos algunas columnas del patients conjunto de datos Eliminar las columnas redundantes elimina la información no relevante del conjunto de datos y nos ayuda a reducir la cantidad de recursos informáticos necesarios para procesar el conjunto de datos y entrenar un modelo. En esta sección, eliminamos columnas como SSN o número de pasaporte según el sentido común de que estas columnas no tienen valor predictivo. En otras palabras, no ayudan a nuestro modelo a predecir la insuficiencia cardíaca. Nuestro estudio tampoco se preocupa por otras columnas, como el lugar de nacimiento o la influencia de los gastos de atención médica en la insuficiencia cardíaca de un paciente, por lo que también las eliminamos. Las columnas redundantes también se pueden identificar mediante la ejecución de los análisis integrados, como la fuga de objetivos, la correlación de características, la multicolinealidad y más, que están integrados en Data Wrangler. Para obtener más detalles sobre los tipos de análisis admitidos, consulte Analizar y Visualizar. Además, puede utilizar el Informe de información y calidad de datos para realizar análisis automatizados en los conjuntos de datos para llegar a una lista de columnas redundantes para eliminar.

  1. Elija el signo más junto a Tipos de datos para el conjunto de datos depatients.csv y elija Agregar transformación.
    Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.
  2. Elige Agregar paso y elige Administrar columnas.
    Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.
  3. Transformarescoger Columna de caída.
  4. Columnas para soltar, elija las siguientes columnas:
    1. SSN
    2. DRIVERS
    3. PASSPORT
    4. PREFIX
    5. FIRST
    6. LAST
    7. SUFFIX
    8. MAIDEN
    9. RACE
    10. ETHNICITY
    11. BIRTHPLACE
    12. ADDRESS
    13. CITY
    14. STATE
    15. COUNTY
    16. ZIP
    17. LAT
    18. LON
    19. HEALTHCARE_EXPENSES
    20. HEALTHCARE_COVERAGE
  5. Elige Vista previa para revisar el conjunto de datos transformado, luego elija Añada.
    Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.
    Deberías ver el paso Columna de caída en su lista de transformaciones.
    Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Destacar fecha/hora enpatients.csv

Ahora usamos la función Featurize date/time para generar la nueva característica Year del desplegable BIRTHDATE columna en el patients conjunto de datos Usamos la nueva función en un paso posterior para calcular la edad de un paciente en el momento en que se lleva a cabo la observación.

  1. En Transforma panel de su Columna de caída página para el patients conjunto de datos, elija Agregar paso.
  2. Elija el Destacar fecha/hora transformar.
    Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.
  3. Elige Extraer columnas.
  4. Columnas de entrada, agrega la columna BIRTHDATE.
  5. Seleccione Año y deseleccionar Mes, Día, Hora, Minutos, En segundo lugar.
    Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.
  6. Elige Vista previa, A continuación, elija Añada.

Agregar transformaciones en las observaciones.csv

Data Wrangler admite transformaciones personalizadas mediante Python (funciones definidas por el usuario), PySpark, Pandas o PySpark (SQL). Puede elegir su tipo de transformación en función de su familiaridad con cada opción y preferencia. Para las últimas tres opciones, Data Wrangler expone la variable df para que pueda acceder al marco de datos y aplicar transformaciones en él. Para obtener una explicación detallada y ejemplos, consulte Transformaciones personalizadas. En esta sección, agregamos tres transformaciones personalizadas al observations conjunto de datos

  1. Agregue una transformación a las observaciones.csv y suelte el DESCRIPTION columna.
    Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.
  2. Elige Vista previa, A continuación, elija Añada.
  3. En Transforma panel, elija Agregar paso y elige Transformación personalizada.
  4. En el menú desplegable, elija Python (pandas).
    Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.
  5. Ingrese el siguiente código:
    df = df[df["CODE"].isin(['8867-4','8480-6','8462-4','39156-5','777-3'])]

    Estos son códigos LONIC que corresponden a las siguientes observaciones que nos interesa utilizar como características para predecir la insuficiencia cardíaca:

    heart rate: 8867-4
    systolic blood pressure: 8480-6
    diastolic blood pressure: 8462-4
    body mass index (BMI): 39156-5
    platelets [#/volume] in Blood: 777-3

  6. Elige Vista previa, A continuación, elija Añada.
  7. Agregar una transformación para extraer Year y Quarter del desplegable DATE columna.
    Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.
  8. Elige Vista previa, A continuación, elija Añada.
  9. Elige Agregar paso y elige Transformación personalizada.
  10. En el menú desplegable, elija Pitón (PySpark).
    Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.
    Es posible que los cinco tipos de observaciones no siempre se registren en la misma fecha. Por ejemplo, un paciente puede visitar a su médico de familia el 21 de enero y medir y registrar su presión arterial sistólica, presión arterial diastólica, frecuencia cardíaca e índice de masa corporal. Sin embargo, es posible que se realice una prueba de laboratorio que incluya plaquetas en una fecha posterior, el 2 de febrero. Por lo tanto, no siempre es posible unir marcos de datos antes de la fecha de observación. Aquí unimos marcos de datos en una granularidad gruesa por trimestre.
  11. Ingrese el siguiente código:
    from pyspark.sql.functions import col
    
    systolic_df = (
        df.select("patient", "DATE_year", "DATE_quarter", "value")
                       .withColumnRenamed("value", "systolic")
                       .filter((col("code") == "8480-6"))
      )
    
    diastolic_df = (
        df.select("patient", "DATE_year", "DATE_quarter", "value")
                       .withColumnRenamed('value', 'diastolic')
                       .filter((col("code") == "8462-4"))
        )
    
    hr_df = (
        df.select("patient", "DATE_year", "DATE_quarter", "value")
                       .withColumnRenamed('value', 'hr')
                       .filter((col("code") == "8867-4"))
        )
    
    bmi_df = (
        df.select("patient", "DATE_year", "DATE_quarter", "value")
                       .withColumnRenamed('value', 'bmi')
                       .filter((col("code") == "39156-5"))
        )
    
    platelets_df = (
        df.select("patient", "DATE_year", "DATE_quarter", "value")
                       .withColumnRenamed('value', 'platelets')
                       .filter((col("code") == "777-3"))
        )
    
    df = (
        systolic_df.join(diastolic_df, ["patient", "DATE_year", "DATE_quarter"])
                                .join(hr_df, ["patient", "DATE_year", "DATE_quarter"])
                                .join(bmi_df, ["patient", "DATE_year", "DATE_quarter"])
                                .join(platelets_df, ["patient", "DATE_year", "DATE_quarter"])
    )

  12. Elige Vista previa, A continuación, elija Añada.
  13. Elige Agregar paso, A continuación, elija Administrar filas.
  14. Transformar, escoger Soltar duplicados.
    Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.
  15. Elige Vista previa, A continuación, elija Añada.
  16. Elige Agregar paso y elige Transformación personalizada.
  17. En el menú desplegable, elija Python (pandas).
  18. Ingrese el siguiente código para tomar un promedio de los puntos de datos que comparten el mismo valor de tiempo:
    import pandas as pd
    df.loc[:, df.columns != 'patient']=df.loc[:, df.columns != 'patient'].apply(pd.to_numeric)
    df = df.groupby(['patient','DATE_year','DATE_quarter']).mean().round(0).reset_index()

  19. Elige Vista previa, A continuación, elija Añada.
    Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Únase apatients.csv y observaciones.csv

En este paso, mostramos cómo realizar uniones complejas en conjuntos de datos de manera fácil y efectiva sin escribir ningún código a través de la poderosa interfaz de usuario de Data Wrangler. Para obtener más información sobre los tipos de combinaciones admitidos, consulte Transformar datos.

  1. A la derecha de Transformar: pacientes.csv, elija el signo más junto a pasos y elige Únete.
    Puede ver el archivopatients.csv transformado que aparece en Conjuntos de datos en el panel izquierdo.
    Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.
  2. A la derecha de Transformar: observaciones.csv, Haga clic en el pasos para iniciar la operación de unión.
    El archivo "observaciones.csv" transformado ahora aparece en Conjuntos de datos en el panel izquierdo.
    Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.
  3. Elige Configurar.
  4. Tipo de unión, escoger Interior.
  5. Unidades, escoger Id.
  6. Derecha, escoger paciente.
  7. Elige Vista previa, A continuación, elija Añada.
    Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Agregar una transformación personalizada a los conjuntos de datos unidos

En este paso, calculamos la edad del paciente en el momento de la observación. También soltamos columnas que ya no son necesarias.

  1. Elija el signo más junto a 1.er ingreso y elige Agregar transformación.
  2. Agregue una transformación personalizada en Pandas:
    df['age'] = df['DATE_year'] - df['BIRTHDATE_year']
    df = df.drop(columns=['BIRTHDATE','DEATHDATE','BIRTHDATE_year','patient'])

  3. Elige Vista previa, A continuación, elija Añada.

Agregar transformaciones personalizadas a conditions.csv

  1. Elija el signo más junto a Transformar: condiciones.csv y elige Agregar transformación.
  2. Agregue una transformación personalizada en Pandas:
    df = df[df["CODE"].isin(['84114007', '88805009', '59621000', '44054006', '53741008', '449868002', '49436004'])]
    df = df.drop(columns=['DESCRIPTION','ENCOUNTER','STOP'])

Nota: Como demostramos anteriormente, puede soltar columnas usando código personalizado o usando las transformaciones integradas proporcionadas por Data Wrangler. Las transformaciones personalizadas dentro de Data Wrangler brindan la flexibilidad de traer su propia lógica de transformación en forma de fragmentos de código en los marcos compatibles. Estos fragmentos se pueden buscar y aplicar más tarde si es necesario.

Los códigos de la transformación anterior son códigos SNOMED-CT que corresponden a las siguientes condiciones. los heart failure or chronic congestive heart failure condición se convierte en la etiqueta. Usamos las condiciones restantes como características para predecir la insuficiencia cardíaca. También soltamos algunas columnas que ya no son necesarias.

Heart failure: 84114007
Chronic congestive heart failure: 88805009
Hypertension: 59621000
Diabetes: 44054006
Coronary Heart Disease: 53741008
Smokes tobacco daily: 449868002
Atrial Fibrillation: 49436004

  1. A continuación, agreguemos una transformación personalizada en PySpark:
    from pyspark.sql.functions import col, when
    
    heartfailure_df = (
        df.select("patient", "start")
                          .withColumnRenamed("start", "heartfailure")
                       .filter((col("code") == "84114007") | (col("code") == "88805009"))
      )
    
    hypertension_df = (
        df.select("patient", "start")
                       .withColumnRenamed("start", "hypertension")
                       .filter((col("code") == "59621000"))
      )
    
    diabetes_df = (
        df.select("patient", "start")
                       .withColumnRenamed("start", "diabetes")
                       .filter((col("code") == "44054006"))
      )
    
    coronary_df = (
        df.select("patient", "start")
                       .withColumnRenamed("start", "coronary")
                       .filter((col("code") == "53741008"))
      )
    
    smoke_df = (
        df.select("patient", "start")
                       .withColumnRenamed("start", "smoke")
                       .filter((col("code") == "449868002"))
      )
    
    atrial_df = (
        df.select("patient", "start")
                       .withColumnRenamed("start", "atrial")
                       .filter((col("code") == "49436004"))
      )
    
    df = (
        heartfailure_df.join(hypertension_df, ["patient"], "leftouter").withColumn("has_hypertension", when(col("hypertension") < col("heartfailure"), 1).otherwise(0))
        .join(diabetes_df, ["patient"], "leftouter").withColumn("has_diabetes", when(col("diabetes") < col("heartfailure"), 1).otherwise(0))
        .join(coronary_df, ["patient"], "leftouter").withColumn("has_coronary", when(col("coronary") < col("heartfailure"), 1).otherwise(0))
        .join(smoke_df, ["patient"], "leftouter").withColumn("has_smoke", when(col("smoke") < col("heartfailure"), 1).otherwise(0))
        .join(atrial_df, ["patient"], "leftouter").withColumn("has_atrial", when(col("atrial") < col("heartfailure"), 1).otherwise(0))
    )

    Realizamos una combinación externa izquierda para mantener todas las entradas en el marco de datos de insuficiencia cardíaca. Una nueva columna has_xxx se calcula para cada afección que no sea insuficiencia cardíaca en función de la fecha de inicio de la afección. Solo nos interesan las condiciones médicas que se registraron antes de la insuficiencia cardíaca y las usamos como características para predecir la insuficiencia cardíaca.

  2. Agregar un incorporado Administrar columnas transform para eliminar las columnas redundantes que ya no son necesarias:
    1. hypertension
    2. diabetes
    3. coronary
    4. smoke
    5. atrial
  3. Extraer Year y  Quarter del desplegable heartfailure columna.
    Esto coincide con la granularidad que usamos anteriormente en la transformación del observations conjunto de datos
  4. Deberíamos tener un total de 6 pasos para conditions.csv.
    Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Unir condiciones.csv al conjunto de datos unido

Ahora realizamos una nueva unión para unir el conjunto de datos de condiciones al unido patients y observations conjunto de datos

  1. Elige Transformar: 1.er ingreso.
  2. Elija el signo más y elija Únete.
  3. Elige pasos al lado de Transformar: condiciones.csv.
    Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.
  4. Elige Configurar.
  5. Tipo de unión, escoger Exterior izquierdo.
  6. Unidades, escoger Id.
  7. Derecha, escoger paciente.
  8. Elige Vista previa, A continuación, elija Añada.
    Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Agregar transformaciones a los conjuntos de datos unidos

Ahora que tenemos los tres conjuntos de datos unidos, apliquemos algunas transformaciones adicionales.

  1. Agregue la siguiente transformación personalizada en PySpark para que has_heartfailure se convierte en nuestra columna de etiqueta:
    from pyspark.sql.functions import col, when
    df = (
        df.withColumn("has_heartfailure", when(col("heartfailure").isNotNull(), 1).otherwise(0))
    )

  2. Agregue la siguiente transformación personalizada en PySpark:
    from pyspark.sql.functions import col
    
    df = (
        df.filter(
          (col("has_heartfailure") == 0) | 
          ((col("has_heartfailure") == 1) & ((col("date_year") <= col("heartfailure_year")) | ((col("date_year") == col("heartfailure_year")) & (col("date_quarter") <= col("heartfailure_quarter")))))
        )
    )

    Solo nos interesan las observaciones registradas antes de que se diagnostique la insuficiencia cardíaca y las usamos como características para predecir la insuficiencia cardíaca. Las observaciones tomadas después de que se diagnostica la insuficiencia cardíaca pueden verse afectadas por la medicación que toma un paciente, por lo que queremos excluirlas.

  3. Suelte las columnas redundantes que ya no son necesarias:
    1. Id
    2. DATE_year
    3. DATE_quarter
    4. patient
    5. heartfailure
    6. heartfailure_year
    7. heartfailure_quarter
  4. En ECONOMÉTRICOS pestaña, para Tipo de análisisescoger Resumen de la tabla.
    Una exploración rápida a través del resumen muestra que el MARITAL la columna tiene datos faltantes.
    Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.
  5. Elija el Datos pestaña y agregue un paso.
  6. Elige Falta el mango.
  7. Transformar, escoger Relleno faltante.
  8. Columnas de entrada, escoger MARITAL.
  9. Valor de relleno, introduzca S.
    Nuestra estrategia aquí es asumir que el paciente es soltero si el estado civil tiene valor perdido. Puedes tener una estrategia diferente.
    Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.
  10. Elige Vista previa, A continuación, elija Añada.
  11. Rellene el valor que falta como 0 para has_hypertension, has_diabetes, has_coronary, has_smoke, has_atrial.

Marital y Gender son variables categóricas. Data Wrangler tiene una función integrada para codificar variables categóricas.

  1. Añade un paso y elige Codificar categórico.
  2. Transformar, escoger Codificación one-hot.
  3. Columnas de entrada, escoger MARITAL.
  4. Estilo de salida, escoger Columna.
    Este estilo de salida produce valores codificados en columnas separadas.
    Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.
  5. Elige Vista previa, A continuación, elija Añada.
  6. Repita estos pasos para Género columna.

La codificación one-hot divide la columna Marital en Marital_M (casado) y Marital_S (único) y divide la columna Sexo en Gender_M (hombre) y Gender_F (femenino). Porque Marital_M y Marital_S son mutuamente excluyentes (al igual que Gender_M y Gender_F), podemos eliminar una columna para evitar funciones redundantes.

  1. Soltar Marital_S y Gender_F.

Las funciones numéricas, como la presión arterial sistólica, la frecuencia cardíaca y la edad, tienen diferentes estándares de unidades. Para un modelo basado en regresión lineal, primero debemos normalizar estas características numéricas. De lo contrario, algunas funciones con valores absolutos más altos pueden tener una ventaja injustificada sobre otras funciones con valores absolutos más bajos y dar como resultado un rendimiento deficiente del modelo. Data Wrangler tiene el escalador min-max de transformación incorporado para normalizar los datos. Para un modelo de clasificación basado en árboles de decisión, no se requiere normalización. Nuestro estudio es un problema de clasificación por lo que no necesitamos aplicar la normalización. Las clases desequilibradas son un problema común en la clasificación. El desequilibrio ocurre cuando el conjunto de datos de entrenamiento contiene una distribución de clases severamente sesgada. Por ejemplo, cuando nuestro conjunto de datos contiene desproporcionadamente más pacientes sin insuficiencia cardíaca que pacientes con insuficiencia cardíaca, puede causar que el modelo esté sesgado hacia la predicción de ausencia de insuficiencia cardíaca y un rendimiento deficiente. Data Wrangler tiene una función integrada para abordar el problema.

  1. Agregue una transformación personalizada en Pandas para convertir el tipo de datos de las columnas del tipo "objeto" al tipo numérico:
    import pandas as pd
    df=df.apply(pd.to_numeric)

  2. Elija el ECONOMÉTRICOS .
  3. Tipo de análisisescoger Histograma.
  4. eje X, escoger tiene_fallo cardíaco.
  5. Elige Vista previa.
    Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.
    Es obvio que tenemos una clase desequilibrada (más puntos de datos etiquetados como ausencia de insuficiencia cardíaca que puntos de datos etiquetados como insuficiencia cardíaca).
  6. Volver a la Datos lengüeta. Escoger Agregar paso y elige Saldo de datos.
  7. columna de destino, escoger tiene_fallo cardíaco.
  8. Relación deseada, introduzca 1.
  9. Transformar, escoger HERIDO.
    Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.
    SMOTE significa Técnica de sobremuestreo de minorías sintéticas. Es una técnica para crear nuevas instancias minoritarias y agregarlas al conjunto de datos para alcanzar el equilibrio de clase. Para obtener información detallada, consulte SMOTE: Técnica de sobremuestreo de minorías sintéticas.
  10. Elige Vista previa, A continuación, elija Añada.
  11. Repita el análisis del histograma en el paso 20-23. El resultado es una clase equilibrada.
    Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Visualice la fuga de objetivos y la correlación de características

A continuación, vamos a realizar algunos análisis visuales utilizando el rico conjunto de herramientas de Data Wrangler de tipos de análisis avanzados compatibles con ML. Primero, observamos la fuga objetivo. La fuga de destino ocurre cuando los datos en el conjunto de datos de entrenamiento están fuertemente correlacionados con la etiqueta de destino, pero no están disponibles en los datos del mundo real en el momento de la inferencia.

  1. En Pestaña de análisis, Para Tipo de análisisescoger Fuga objetivo.
  2. Tipo de problema, escoger clasificación.
  3. Target, escoger tiene_fallo cardíaco.
  4. Elige Vista previa.
    Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.
    Con base en el análisis, hr es una fuga objetivo. Lo soltaremos en un paso posterior. age está marcado como una fuga objetivo. Es razonable decir que la edad de un paciente estará disponible durante el tiempo de inferencia, por lo que mantenemos la edad como una característica. Systolic y diastolic también se marcan como posibles fugas de destino. Esperamos tener las dos medidas durante el tiempo de inferencia, por lo que las mantenemos como características.
  5. Elige Añada para agregar el análisis.

Luego, observamos la correlación de características. Queremos seleccionar características que estén correlacionadas con el objetivo pero que no estén correlacionadas entre sí.

  1. En Pestaña de análisis, Para Tipo de análisisescoger Correlación de características.
  2. Tipo de correlaciónescoger lineal.
  3. Elige Vista previa.
    Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Las puntuaciones de los coeficientes indican fuertes correlaciones entre los siguientes pares:

  • systolic y diastolic
  • bmi y age
  • has_hypertension y has_heartfailure (etiqueta)

Para características que están fuertemente correlacionadas, las matrices son computacionalmente difíciles de invertir, lo que puede conducir a estimaciones numéricamente inestables. Para mitigar la correlación, simplemente podemos eliminar uno del par. caemos diastolic y bmi y mantener systolic y age en un paso posterior.

Caída de las columnas de diastólica e índice de masa corporal

Agregue pasos de transformación adicionales para eliminar el hr, diastolic y bmi columnas usando la transformación incorporada.

Generar el informe de información y calidad de los datos

AWS recientemente anunció la nueva función Informe de calidad de datos y perspectivas en Data Wrangler. Este informe verifica automáticamente la calidad de los datos y detecta anomalías en sus datos. Los científicos de datos y los ingenieros de datos pueden usar esta herramienta para aplicar de manera eficiente y rápida el conocimiento del dominio para procesar conjuntos de datos para el entrenamiento del modelo ML. Este paso es opcional. Para generar este informe sobre nuestros conjuntos de datos, complete los siguientes pasos:

  1. En ECONOMÉTRICOS pestaña, para Tipo de análisis, escoger Informe de información y calidad de datos.
  2. columna de destino, escoger tiene_fallo cardíaco.
  3. Tipo de problema, seleccione Clasificación.
  4. Elige Crear.
    Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

En unos minutos, genera un informe con un resumen, imágenes y recomendaciones.

Generar un análisis de modelo rápido

Hemos completado nuestra preparación de datos, limpieza e ingeniería de características. Data Wrangler tiene una función integrada que proporciona una estimación aproximada de la calidad prevista esperada y el poder predictivo de las funciones en nuestro conjunto de datos.

  1. En ECONOMÉTRICOS pestaña, para Tipo de análisisescoger Modelo rápido.
  2. Label, escoger tiene_fallo cardíaco.
  3. Elige Vista previa.
    Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Según nuestro análisis de modelo rápido, podemos ver la característica has_hypertension tiene la puntuación de importancia de característica más alta entre todas las características.

Exportar los datos y entrenar el modelo

Ahora, exportemos las características preparadas para ML transformadas a un depósito de S3 de destino y escalemos toda la canalización de ingeniería de características que hemos creado hasta ahora utilizando las muestras en todo el conjunto de datos de forma distribuida.

  1. Elija el signo más junto al último cuadro en el flujo de datos y elija Añadir destino.
  2. Elige Amazon S3.
    Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.
  3. Ingrese un Nombre del conjunto de datos. For Ubicación de Amazon S3, elija un depósito de S3 y, a continuación, elija Añadir destino.
  4. Elige Crear trabajo para iniciar un trabajo de procesamiento de PySpark distribuido para realizar la transformación y enviar los datos al depósito S3 de destino.
    Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.
    Según el tamaño de los conjuntos de datos, esta opción nos permite configurar fácilmente el clúster y escalar horizontalmente sin código. No tenemos que preocuparnos por particionar los conjuntos de datos o administrar el clúster y los componentes internos de Spark. Data Wrangler se ocupa automáticamente de todo esto.
  5. En el panel izquierdo, elija A continuación, 2. Configurar trabajo.
    Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.
  6. Entonces escoge Ejecutar.
    Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Alternativamente, también podemos exportar la salida transformada a S3 a través de un Jupyter Notebook. Con este enfoque, Data Wrangler genera automáticamente un cuaderno Jupyter con todo el código necesario para iniciar un trabajo de procesamiento para aplicar los pasos del flujo de datos (creados con una muestra) en el conjunto de datos completo más grande y usar el conjunto de datos transformado como funciones para iniciar. de un trabajo de entrenamiento más tarde. El código del cuaderno se puede ejecutar fácilmente con o sin hacer cambios. Ahora repasemos los pasos sobre cómo hacer esto a través de la interfaz de usuario de Data Wrangler.

  1. Elija el signo más junto al último paso en el flujo de datos y elija Exportar a.
  2. Elige Amazon S3 (a través de Jupyter Notebook).
    Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.
  3. Abre automáticamente una nueva pestaña con un cuaderno Jupyter.
  4. En el cuaderno de Jupyter, localice la celda en el (Opcional) Próximos pasos sección y cambio run_optional_steps en False a True.
    Los pasos opcionales habilitados en el cuaderno realizan lo siguiente:
    • Entrena un modelo usando XGBoost
      Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.
  5. Regrese a la parte superior del cuaderno y en el Ejecutar menú, seleccione Ejecutar todas las celdas.

Si usa el cuaderno generado tal como está, inicia un trabajo de procesamiento de SageMaker que escala el procesamiento en dos instancias m5.4xlarge para procesar el conjunto de datos completo en el depósito S3. Puede ajustar la cantidad de instancias y los tipos de instancias según el tamaño del conjunto de datos y el tiempo que necesita para completar el trabajo.

Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Espere hasta que se complete el trabajo de entrenamiento de la última celda. Genera un modelo en el depósito S3 predeterminado de SageMaker.

Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

El modelo entrenado está listo para implementarse para la inferencia en tiempo real o la transformación por lotes. Tenga en cuenta que usamos datos sintéticos para demostrar funcionalidades en Data Wrangler y usamos datos procesados ​​para el modelo de entrenamiento. Dado que los datos que usamos son sintéticos, el resultado de la inferencia del modelo entrenado no está destinado al diagnóstico de condiciones médicas del mundo real ni a la sustitución del juicio de los médicos.

También puede exportar directamente su conjunto de datos transformados a Amazon S3 eligiendo Exportar en la parte superior de la página de vista previa de transformación. La opción de exportación directa solo exporta la muestra transformada si se habilitó el muestreo durante la importación. Esta opción es más adecuada si se trata de conjuntos de datos más pequeños. Los datos transformados también se pueden ingerir directamente en un almacén de funciones. Para obtener más información, consulte Tienda de funciones de Amazon SageMaker. El flujo de datos también se puede exportar como una canalización de SageMaker que se puede orquestar y programar según sus requisitos. Para más información, ver Canalizaciones de Amazon SageMaker.

Conclusión

En esta publicación, mostramos cómo usar Data Wrangler para procesar datos de atención médica y realizar ingeniería de características escalables en una forma de código bajo impulsada por herramientas. Aprendimos a aplicar las transformaciones y análisis incorporados de manera adecuada donde sea necesario, combinándolos con transformaciones personalizadas para agregar aún más flexibilidad a nuestro flujo de trabajo de preparación de datos. También analizamos las diferentes opciones para escalar la receta de flujo de datos a través de trabajos de procesamiento distribuido. También aprendimos cómo los datos transformados se pueden usar fácilmente para entrenar un modelo para predecir la insuficiencia cardíaca.

Hay muchas otras características en Data Wrangler que no hemos cubierto en esta publicación. Explora lo que es posible en Prepare datos de AA con Amazon SageMaker Data Wrangler y aprenda a aprovechar Data Wrangler para su próximo proyecto de ciencia de datos o aprendizaje automático.


Acerca de los autores

Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.Forrest sol es arquitecto sénior de soluciones en el equipo del sector público de AWS en Toronto, Canadá. Ha trabajado en las industrias de salud y finanzas durante las últimas dos décadas. Fuera del trabajo, disfruta acampar con su familia.

Ingeniería de funciones a escala para el cuidado de la salud y las ciencias de la vida con Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.Arunprasath Shankar es un arquitecto de soluciones especializado en inteligencia artificial y aprendizaje automático (AI / ML) en AWS, que ayuda a los clientes globales a escalar sus soluciones de inteligencia artificial de manera efectiva y eficiente en la nube. En su tiempo libre, a Arun le gusta ver películas de ciencia ficción y escuchar música clásica.

Sello de tiempo:

Mas de Aprendizaje automático de AWS