Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Feature engineering i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler

Machine learning (ML) forstyrrer mange industrier i et hidtil uset tempo. Sundheds- og biovidenskabsindustrien (HCLS) har gennemgået en hurtig udvikling i de seneste år og omfatter ML på tværs af et væld af anvendelsesmuligheder til at levere kvalitetspleje og forbedre patientresultater.

I en typisk ML-livscyklus bruger dataingeniører og videnskabsmænd størstedelen af ​​deres tid på dataforberedelse og funktionsingeniørtrin, før de overhovedet går i gang med processen med modelopbygning og træning. At have et værktøj, der kan sænke adgangsbarrieren til dataforberedelse og derved forbedre produktiviteten, er en yderst ønskværdig forespørgsel for disse personas. Amazon SageMaker Data Wrangler er bygget til formålet af AWS for at reducere indlæringskurven og gøre det muligt for datapraktikere at udføre dataforberedelse, rengøring og funktionsingeniøropgaver på mindre indsats og tid. Den tilbyder en GUI-grænseflade med mange indbyggede funktioner og integrationer med andre AWS-tjenester som f.eks Amazon Simple Storage Service (Amazon S3) og Amazon SageMaker Feature Store, samt partnerdatakilder, herunder Snowflake og Databricks.

I dette indlæg viser vi, hvordan man bruger Data Wrangler til at forberede sundhedsdata til træning af en model til at forudsige hjertesvigt, givet en patients demografi, tidligere medicinske tilstande og laboratorietestresultater.

Løsningsoversigt

Løsningen består af følgende trin:

  1. Anskaf et sundhedsdatasæt som input til Data Wrangler.
  2. Brug Data Wranglers indbyggede transformationsfunktioner til at transformere datasættet. Dette inkluderer dropkolonner, fremhæver data/tid, sammenføj datasæt, imputerer manglende værdier, indkoder kategoriske variabler, skalerer numeriske værdier, afbalancerer datasættet og mere.
  3. Brug Data Wranglers brugerdefinerede transformationsfunktion (Pandas eller PySpark-kode) til at supplere yderligere nødvendige transformationer ud over de indbyggede transformationer og demonstrere udvidelsesmulighederne af Data Wrangler. Dette inkluderer filterrækker, gruppedata, form nye datarammer baseret på betingelser og mere.
  4. Brug Data Wranglers indbyggede visualiseringsfunktioner til at udføre visuel analyse. Dette inkluderer mållækage, funktionskorrelation, hurtig model og mere.
  5. Brug Data Wranglers indbyggede eksportmuligheder til at eksportere det transformerede datasæt til Amazon S3.
  6. Start en Jupyter-notesbog for at bruge det transformerede datasæt i Amazon S3 som input til at træne en model.

Generer et datasæt

Nu, hvor vi har slået os fast på ML-problemformuleringen, sætter vi først vores mål på at indhente de data, vi har brug for. Forskningsstudier som f.eks Forudsigelse af hjertesvigt kan give data, der allerede er i god stand. Men vi støder ofte på scenarier, hvor dataene er ret rodede og kræver sammenføjning, rensning og flere andre transformationer, der er meget specifikke for sundhedsdomænet, før de kan bruges til ML-træning. Vi ønsker at finde eller generere data, der er rodet nok, og lede dig gennem trinene til at forberede dem ved hjælp af Data Wrangler. Med det i tankerne valgte vi Synthea som et værktøj til at generere syntetiske data, der passer til vores mål. Synthea er en open source syntetisk patientgenerator, der modellerer syntetiske patienters sygehistorie. Udfør følgende trin for at generere dit datasæt:

  1. Følg instruktionerne i henhold til hurtig start dokumentation for at oprette en Amazon SageMaker Studio domæne og start Studio.
    Dette er et forudsætningstrin. Det er valgfrit, hvis Studio allerede er konfigureret på din konto.
  2. Efter at Studio er lanceret, på Launcher fanebladet, vælg Systemterminal.
    Dette starter en terminalsession, der giver dig en kommandolinjegrænseflade at arbejde med.
  3. For at installere Synthea og generere datasættet i CSV-format skal du køre følgende kommandoer i den lancerede terminalsession:
    $ 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

Vi leverer en parameter til at generere datasættene med en befolkningsstørrelse på 10,000. Bemærk størrelsesparameteren angiver antallet af levende medlemmer af befolkningen. Derudover genererer Synthea også data for døde medlemmer af befolkningen, som kan tilføje et par ekstra datapunkter oven i den angivne stikprøvestørrelse.

Vent, indtil datagenereringen er færdig. Dette trin tager normalt omkring en time eller mindre. Synthea genererer flere datasæt, herunder patients, medications, allergies, conditions, og mere. Til dette indlæg bruger vi tre af de resulterende datasæt:

  • patienter.csv – Dette datasæt er omkring 3.2 MB og indeholder cirka 11,000 rækker med patientdata (25 kolonner inklusive patient-id, fødselsdato, køn, adresse og mere)
  • betingelser.csv – Dette datasæt er på omkring 47 MB ​​og indeholder cirka 370,000 rækker af medicinsk tilstandsdata (seks kolonner inklusive patient-id, tilstandens startdato, tilstandskode og mere)
  • observationer.csv – Dette datasæt er på omkring 830 MB og indeholder cirka 5 millioner rækker af observationsdata (otte kolonner inklusive patient-id, observationsdato, observationskode, værdi og mere)

Der er et en-til-mange forhold mellem patients , conditions datasæt. Der er også et en-til-mange forhold mellem patients , observations datasæt. For en detaljeret dataordbog, se CSV-fildataordbog.

  1. For at uploade de genererede datasæt til en kildebøtte i Amazon S3 skal du køre følgende kommandoer i terminalsessionen:
    $ cd ./output/csv
    $ aws s3 sync . s3://<source bucket name>/

Start Data Wrangler

Vælg SageMaker ressourcer på navigationssiden i Studio og på Projekter menu, vælg Data Wrangler at oprette et Data Wrangler-dataflow. For detaljerede trin til, hvordan du starter Data Wrangler fra Studio, se Kom godt i gang med Data Wrangler.

Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Import datoer

For at importere dine data skal du udføre følgende trin:

  1. Vælg Amazon S3 og find patient.csv-filen i S3-bøtten.
  2. I Detaljer vælg Først K forum Sampling.
  3. Indtast 1100 forum Prøvestørrelse.
    I forhåndsvisningsruden trækker Data Wrangler de første 100 rækker fra datasættet og viser dem som et eksempel.
  4. Vælg Importere.
    Data Wrangler udvælger de første 1,100 patienter fra det samlede antal patienter (11,000 rækker), der er genereret af Synthea og importerer dataene. Prøveudtagningsmetoden lader Data Wrangler kun behandle prøvedataene. Det gør os i stand til at udvikle vores dataflow med et mindre datasæt, hvilket resulterer i hurtigere behandling og en kortere feedbackloop. Efter at vi har oprettet dataflowet, kan vi indsende den udviklede opskrift til en SageMaker forarbejdning arbejde med at udskalere behandlingen for hele eller større datasæt på en distribueret måde.
    Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.
  5. Gentag denne proces for conditions , observations datasæt.
    1. For conditions datasæt, indtast 37000 forum Prøvestørrelse, hvilket er 1/10 af de i alt 370,000 rækker genereret af Synthea.
    2. For observations datasæt, indtast 500000 forum Prøvestørrelse, hvilket er 1/10 af de samlede observationer 5 millioner rækker genereret af Synthea.

Du bør se tre datasæt som vist på det følgende skærmbillede.

Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Transformér dataene

Datatransformation er processen med at ændre strukturen, værdien eller formatet af en eller flere kolonner i datasættet. Processen er normalt udviklet af en dataingeniør og kan være udfordrende for personer med et mindre dataingeniørfærdighedssæt til at tyde den logik, der foreslås for transformationen. Datatransformation er en del af den bredere feature engineering-proces, og den korrekte rækkefølge af trin er et andet vigtigt kriterium at huske på, når man udformer sådanne opskrifter.

Data Wrangler er designet til at være et lavkodeværktøj til at reducere adgangsbarrieren for effektiv dataforberedelse. Den leveres med over 300 forudkonfigurerede datatransformationer, som du kan vælge imellem uden at skrive en enkelt linje kode. I de følgende afsnit ser vi, hvordan man transformerer de importerede datasæt i Data Wrangler.

Drop kolonner i patienter.csv

Vi dropper først nogle kolonner fra patients datasæt. Sletning af redundante kolonner fjerner ikke-relevant information fra datasættet og hjælper os med at reducere mængden af ​​computerressourcer, der kræves for at behandle datasættet og træne en model. I dette afsnit dropper vi kolonner såsom SSN eller pasnummer baseret på sund fornuft, at disse kolonner ikke har nogen forudsigelig værdi. Med andre ord hjælper de ikke vores model med at forudsige hjertesvigt. Vores undersøgelse er heller ikke bekymret for andre kolonner såsom fødested eller sundhedsudgifters indflydelse på en patients hjertesvigt, så vi dropper dem også. Redundante kolonner kan også identificeres ved at køre de indbyggede analyser som mållækage, funktionskorrelation, multikollinearitet og mere, som er indbygget i Data Wrangler. For flere detaljer om de understøttede analysetyper, se Analyser og visualiser. Derudover kan du bruge Rapport om datakvalitet og indsigt at udføre automatiserede analyser på datasættene for at nå frem til en liste over overflødige kolonner, der skal elimineres.

  1. Vælg plustegnet ved siden af Datatyper for patients.csv-datasættet og vælg Tilføj transformation.
    Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.
  2. Vælg Tilføj trin Og vælg Administrer kolonner.
    Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.
  3. Til Transform¸ vælg Drop kolonne.
  4. Til Kolonner til at slippe, vælg følgende kolonner:
    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. Vælg Eksempel for at gennemgå det transformerede datasæt, og vælg derefter Tilføj.
    Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.
    Du bør se trinnet Drop kolonne på din liste over transformationer.
    Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Fremhæv dato/klokkeslæt i patients.csv

Nu bruger vi funktionen Featurize dato/tid til at generere den nye funktion Year fra BIRTHDATE kolonne i patients datasæt. Vi bruger den nye funktion i et efterfølgende trin til at beregne en patients alder på tidspunktet for observation finder sted.

  1. I transformationer rude på din Drop kolonne side for patients datasæt, vælg Tilføj trin.
  2. Vælg den Vis dato/tid transformere.
    Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.
  3. Vælg Udtræk kolonner.
  4. Til Input kolonner, tilføj kolonnen BIRTHDATE.
  5. Type År og fravælg Måned, Dag, Time, Minut, Anden.
    Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.
  6. Vælg Eksempel, Og vælg derefter Tilføj.

Tilføj transformationer i observations.csv

Data Wrangler understøtter brugerdefinerede transformationer ved hjælp af Python (brugerdefinerede funktioner), PySpark, Pandas eller PySpark (SQL). Du kan vælge din transformationstype baseret på din fortrolighed med hver mulighed og præference. For de tre sidstnævnte muligheder afslører Data Wrangler variablen df for at du kan få adgang til datarammen og anvende transformationer på den. For en detaljeret forklaring og eksempler henvises til Brugerdefinerede transformationer. I dette afsnit tilføjer vi tre brugerdefinerede transformationer til observations datasæt.

  1. Tilføj en transformation til observations.csv og slip DESCRIPTION kolonne.
    Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.
  2. Vælg Eksempel, Og vælg derefter Tilføj.
  3. I transformationer vælg Tilføj trin Og vælg Brugerdefineret transformation.
  4. Vælg i rullemenuen Python (Pandas).
    Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.
  5. Indtast følgende kode:
    df = df[df["CODE"].isin(['8867-4','8480-6','8462-4','39156-5','777-3'])]

    Dette er LONIC-koder, der svarer til følgende observationer, vi er interesserede i at bruge som funktioner til at forudsige hjertesvigt:

    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. Vælg Eksempel, Og vælg derefter Tilføj.
  7. Tilføj en transformation for at udtrække Year , Quarter fra DATE kolonne.
    Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.
  8. Vælg Eksempel, Og vælg derefter Tilføj.
  9. Vælg Tilføj trin Og vælg Brugerdefineret transformation.
  10. Vælg i rullemenuen Python (PySpark).
    Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.
    De fem typer observationer er muligvis ikke altid registreret på samme dato. For eksempel kan en patient besøge sin familielæge den 21. januar og få målt og registreret sit systoliske blodtryk, diastoliske blodtryk, puls og kropsmasseindeks. En laboratorietest, der inkluderer blodplader, kan dog blive udført på et senere tidspunkt den 2. februar. Derfor er det ikke altid muligt at tilslutte sig dataframes inden observationsdatoen. Her samler vi dataframes på en grov granularitet på kvartalsbasis.
  11. Indtast følgende kode:
    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. Vælg Eksempel, Og vælg derefter Tilføj.
  13. Vælg Tilføj trin, Og vælg derefter Administrer rækker.
  14. Til Transform, vælg Drop dubletter.
    Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.
  15. Vælg Eksempel, Og vælg derefter Tilføj.
  16. Vælg Tilføj trin Og vælg Brugerdefineret transformation.
  17. Vælg i rullemenuen Python (Pandas).
  18. Indtast følgende kode for at tage et gennemsnit af datapunkter, der deler den samme tidsværdi:
    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. Vælg Eksempel, Og vælg derefter Tilføj.
    Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Slut dig til patients.csv og observations.csv

I dette trin viser vi, hvordan man effektivt og nemt udfører komplekse joinforbindelser på datasæt uden at skrive nogen kode via Data Wranglers kraftfulde brugergrænseflade. For at lære mere om de understøttede typer joinforbindelser, se Transform data.

  1. Til højre for Transform: patienter.csv, skal du vælge plustegnet ved siden af Steps Og vælg Bliv Medlem.
    Du kan se den transformerede patients.csv-fil listet under datasæt i venstre rude.
    Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.
  2. Til højre for Transform: observations.csv, klik på Steps for at starte sammenføjningen.
    Den transformerede observations.csv-fil er nu opført under datasæt i venstre rude.
    Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.
  3. Vælg Konfigurer .
  4. Til Deltag Type, vælg Inner.
  5. Til Venstre, vælg Id.
  6. Til Højre, vælg patient.
  7. Vælg Eksempel, Og vælg derefter Tilføj.
    Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Tilføj en brugerdefineret transformation til de samlede datasæt

I dette trin beregner vi en patients alder på observationstidspunktet. Vi dropper også kolonner, der ikke længere er nødvendige.

  1. Vælg plustegnet ved siden af 1. Deltag Og vælg Tilføj transformation.
  2. Tilføj en brugerdefineret transformation i Pandas:
    df['age'] = df['DATE_year'] - df['BIRTHDATE_year']
    df = df.drop(columns=['BIRTHDATE','DEATHDATE','BIRTHDATE_year','patient'])

  3. Vælg Eksempel, Og vælg derefter Tilføj.

Tilføj tilpassede transformationer til conditions.csv

  1. Vælg plustegnet ved siden af Transform: conditions.csv Og vælg Tilføj transformation.
  2. Tilføj en brugerdefineret transformation i Pandas:
    df = df[df["CODE"].isin(['84114007', '88805009', '59621000', '44054006', '53741008', '449868002', '49436004'])]
    df = df.drop(columns=['DESCRIPTION','ENCOUNTER','STOP'])

Bemærk: Som vi demonstrerede tidligere, kan du slippe kolonner enten ved hjælp af brugerdefineret kode eller ved at bruge de indbyggede transformationer leveret af Data Wrangler. Brugerdefinerede transformationer i Data Wrangler giver fleksibiliteten til at bringe din egen transformationslogik i form af kodestykker i de understøttede rammer. Disse uddrag kan senere søges og anvendes, hvis det er nødvendigt.

Koderne i den foregående transformation er SNOMED-CT-koder, der svarer til følgende betingelser. Det heart failure or chronic congestive heart failure tilstand bliver etiketten. Vi bruger de resterende forhold som funktioner til at forudsige hjertesvigt. Vi dropper også et par kolonner, der ikke længere er nødvendige.

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

  1. Lad os derefter tilføje en brugerdefineret transformation i 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))
    )

    Vi udfører en venstre ydre sammenføjning for at beholde alle indtastninger i hjertesvigtsdatarammen. En ny kolonne has_xxx beregnes for hver anden tilstand end hjertesvigt ud fra tilstandens startdato. Vi er kun interesserede i medicinske tilstande, der blev registreret før hjertesvigt, og bruger dem som funktioner til at forudsige hjertesvigt.

  2. Tilføj en indbygget Administrer kolonner transformer for at slippe de redundante kolonner, der ikke længere er nødvendige:
    1. hypertension
    2. diabetes
    3. coronary
    4. smoke
    5. atrial
  3. Uddrag Year ,  Quarter fra heartfailure kolonne.
    Dette matcher den granularitet, vi brugte tidligere i transformationen af observations datasæt.
  4. Vi skulle have i alt 6 trin til conditions.csv.
    Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Tilslut conditions.csv til det samlede datasæt

Vi udfører nu en ny sammenføjning for at sammenføje vilkårsdatasættet til det sammenføjede patients , observations datasæt.

  1. Vælg Transform: 1. Join.
  2. Vælg plustegnet og vælg Bliv Medlem.
  3. Vælg Steps siden Transform: conditions.csv.
    Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.
  4. Vælg Konfigurer .
  5. Til Deltag Type, vælg Venstre ydre.
  6. Til Venstre, vælg Id.
  7. Til Højre, vælg patient.
  8. Vælg Eksempel, Og vælg derefter Tilføj.
    Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Tilføj transformationer til de samlede datasæt

Nu hvor vi har samlet alle tre datasæt, lad os anvende nogle yderligere transformationer.

  1. Tilføj følgende brugerdefinerede transformation i PySpark så has_heartfailure bliver vores etiketkolonne:
    from pyspark.sql.functions import col, when
    df = (
        df.withColumn("has_heartfailure", when(col("heartfailure").isNotNull(), 1).otherwise(0))
    )

  2. Tilføj følgende tilpassede transformation i 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")))))
        )
    )

    Vi er kun interesserede i observationer, der er registreret før, når hjertesvigtstilstanden er diagnosticeret, og bruger dem som funktioner til at forudsige hjertesvigt. Observationer taget efter at hjertesvigt er diagnosticeret kan være påvirket af den medicin, en patient tager, så vi ønsker at udelukke dem.

  3. Slet de overflødige kolonner, der ikke længere er nødvendige:
    1. Id
    2. DATE_year
    3. DATE_quarter
    4. patient
    5. heartfailure
    6. heartfailure_year
    7. heartfailure_quarter
  4. Analyse fane, for Analyse type¸ vælg Tabel oversigt.
    En hurtig scanning gennem resuméet viser, at MARITAL kolonne mangler data.
    Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.
  5. Vælg den data fanen og tilføje et trin.
  6. Vælg Håndtag mangler.
  7. Til Transform, vælg Fyld mangler.
  8. Til Input kolonner, vælg ÆGTELIGT.
  9. Til Udfyld værdi, gå ind S.
    Vores strategi her er at antage, at patienten er single, hvis civilstanden mangler værdi. Du kan have en anden strategi.
    Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.
  10. Vælg Eksempel, Og vælg derefter Tilføj.
  11. Udfyld den manglende værdi som 0 for has_hypertension, has_diabetes, has_coronary, has_smoke, has_atrial.

Marital , Gender er kategorivariable. Data Wrangler har en indbygget funktion til at kode kategorivariabler.

  1. Tilføj et trin og vælg Indkode kategori.
  2. Til Transform, vælg One-hot encode.
  3. Til Input kolonner, vælg ÆGTELIGT.
  4. Til Output stil, vælg Kolonne.
    Denne outputstil producerer kodede værdier i separate kolonner.
    Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.
  5. Vælg Eksempel, Og vælg derefter Tilføj.
  6. Gentag disse trin for Køn kolonne.

Den ene-hot-kodning opdeler ægteskabsspalten i Marital_M (gift) og Marital_S (enkelt), og opdeler kolonnen Køn i Gender_M (han) og Gender_F (kvinde). Fordi Marital_M , Marital_S udelukker hinanden (som de er Gender_M , Gender_F), kan vi droppe én kolonne for at undgå overflødige funktioner.

  1. Drop Marital_S , Gender_F.

Numeriske funktioner såsom systolisk, hjertefrekvens og alder har forskellige enhedsstandarder. For en lineær regressionsbaseret model skal vi først normalisere disse numeriske funktioner. Ellers kan nogle funktioner med højere absolutte værdier have en uberettiget fordel i forhold til andre funktioner med lavere absolutte værdier og resultere i dårlig modelydelse. Data Wrangler har den indbyggede transformation Min-max scaler til at normalisere dataene. For en beslutningstræ-baseret klassificeringsmodel er normalisering ikke påkrævet. Vores undersøgelse er et klassifikationsproblem, så vi behøver ikke at anvende normalisering. Ubalancerede klasser er et almindeligt problem i klassificering. Ubalance opstår, når træningsdatasættet indeholder stærkt skæv klassefordeling. For eksempel, når vores datasæt indeholder uforholdsmæssigt flere patienter uden hjertesvigt end patienter med hjertesvigt, kan det forårsage, at modellen er forudindtaget i forhold til at forudsige ingen hjertesvigt og yder dårligt. Data Wrangler har en indbygget funktion til at tackle problemet.

  1. Tilføj en brugerdefineret transformation i Pandas for at konvertere datatype af kolonner fra "objekt" type til numerisk type:
    import pandas as pd
    df=df.apply(pd.to_numeric)

  2. Vælg den Analyse fane.
  3. Til Analyse type¸ vælg Histogram.
  4. Til X-aksen, vælg har_hjertesvigt.
  5. Vælg Eksempel.
    Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.
    Det er indlysende, at vi har en ubalanceret klasse (flere datapunkter mærket som ingen hjertesvigt end datapunkter mærket som hjertesvigt).
  6. Gå tilbage til data fanen. Vælge Tilføj trin Og vælg Balance data.
  7. Til Målkolonne, vælg har_hjertesvigt.
  8. Til Ønsket forhold, gå ind 1.
  9. Til Transform, vælg SMOTE.
    Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.
    SMOTE står for Synthetic Minority Over-sampling Technique. Det er en teknik til at skabe nye minoritetsforekomster og tilføje til datasættet for at nå klassebalance. For detaljerede oplysninger, se SMOTE: Synthetic Minority Over-sampling Teknik.
  10. Vælg Eksempel, Og vælg derefter Tilføj.
  11. Gentag histogramanalysen i trin 20-23. Resultatet er en afbalanceret klasse.
    Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Visualiser mållækage og funktionskorrelation

Dernæst skal vi udføre et par visuelle analyser ved hjælp af Data Wranglers rige værktøjssæt af avancerede ML-understøttede analysetyper. Først ser vi på mållækage. Mållækage opstår, når data i træningsdatasættet er stærkt korreleret med måletiketten, men ikke er tilgængelige i virkelige data på inferenstidspunktet.

  1. Fanen Analyse, For Analyse type¸ vælg Mållækage.
  2. Til Problemtype, vælg klassificering.
  3. Til mål, vælg har_hjertesvigt.
  4. Vælg Eksempel.
    Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.
    På baggrund af analysen, hr er en mållækage. Vi dropper det i et efterfølgende trin. age er markeret som en mållækage. Det er rimeligt at sige, at en patients alder vil være tilgængelig under inferenstiden, så vi beholder alder som en funktion. Systolic , diastolic er også markeret som sandsynlig mållækage. Vi forventer at have de to målinger i inferenstiden, så vi beholder dem som funktioner.
  5. Vælg Tilføj at tilføje analysen.

Derefter ser vi på funktionskorrelation. Vi ønsker at vælge funktioner, der er korreleret med målet, men som er ukorrelerede indbyrdes.

  1. Fanen Analyse, For Analyse type¸ vælg Funktionskorrelation.
  2. Til Korrelationstype¸ vælg lineær.
  3. Vælg Eksempel.
    Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Koefficientscorerne indikerer stærke korrelationer mellem følgende par:

  • systolic , diastolic
  • bmi , age
  • has_hypertension , has_heartfailure (etiket)

For funktioner, der er stærkt korrelerede, er matricer beregningsmæssigt vanskelige at invertere, hvilket kan føre til numerisk ustabile estimater. For at afbøde sammenhængen kan vi blot fjerne en fra parret. Vi dropper diastolic , bmi og hold systolic , age i et efterfølgende trin.

Drop diastoliske og bmi kolonner

Tilføj yderligere transformationstrin for at slippe hr, diastolic , bmi kolonner ved hjælp af den indbyggede transformation.

Generer rapporten Datakvalitet og indsigt

AWS for nylig annoncerede den nye datakvalitets- og indsigtsrapportfunktion i Data Wrangler. Denne rapport verificerer automatisk datakvaliteten og registrerer abnormiteter i dine data. Dataforskere og dataingeniører kan bruge dette værktøj til effektivt og hurtigt at anvende domæneviden til at behandle datasæt til ML-modeltræning. Dette trin er valgfrit. For at generere denne rapport på vores datasæt skal du udføre følgende trin:

  1. Analyse fane, for Analyse type, vælg Rapport om datakvalitet og indsigt.
  2. Til Målkolonne, vælg har_hjertesvigt.
  3. Til Problektype, Vælg Klassifikation.
  4. Vælg Opret.
    Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

På få minutter genererer den en rapport med et resumé, billeder og anbefalinger.

Generer en hurtig modelanalyse

Vi har afsluttet vores dataforberedelse, rengøring og funktionsudvikling. Data Wrangler har en indbygget funktion, der giver et groft estimat af den forventede forudsagte kvalitet og forudsigelseskraften af ​​funktioner i vores datasæt.

  1. Analyse fane, for Analyse type¸ vælg Hurtig model.
  2. Til etiket, vælg har_hjertesvigt.
  3. Vælg Eksempel.
    Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

I henhold til vores Quick Model-analyse kan vi se funktionen has_hypertension har den højeste funktions betydningsscore blandt alle funktioner.

Eksporter data og træne modellen

Lad os nu eksportere de transformerede ML-klare funktioner til en destinations-S3-bucket og skalere hele den feature engineering-pipeline, vi har oprettet indtil nu ved at bruge prøverne til hele datasættet på en distribueret måde.

  1. Vælg plustegnet ud for den sidste boks i dataflowet, og vælg Tilføj destination.
  2. Vælg Amazon S3.
    Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.
  3. Indtast en Datasætnavn. Forum Amazon S3 placering, vælg en S3-spand, og vælg derefter Tilføj destination.
  4. Vælg Skab job at starte et distribueret PySpark-behandlingsjob for at udføre transformationen og udlæse dataene til destinations S3-bøtten.
    Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.
    Afhængigt af størrelsen af ​​datasættene lader denne mulighed os nemt konfigurere klyngen og horisontalt skalere uden kode. Vi behøver ikke bekymre os om at partitionere datasættene eller administrere klyngen og Spark internals. Alt dette sørger Data Wrangler automatisk for.
  5. Vælg i venstre rude Næste, 2. Konfigurer job.
    Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.
  6. Vælg derefter Kør.
    Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Alternativt kan vi også eksportere det transformerede output til S3 via en Jupyter Notebook. Med denne tilgang genererer Data Wrangler automatisk en Jupyter-notesbog med al den nødvendige kode for at starte et behandlingsjob for at anvende dataflow-trinene (oprettet ved hjælp af en prøve) på det større fulde datasæt og bruge det transformerede datasæt som funktioner til at kick- fra et træningsjob senere. Notebook-koden kan nemt køres med eller uden ændringer. Lad os nu gennemgå trinene til, hvordan du får dette gjort via Data Wranglers brugergrænseflade.

  1. Vælg plustegnet ud for det sidste trin i dataflowet, og vælg Eksporter til.
  2. Vælg Amazon S3 (via Jupyter Notebook).
    Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.
  3. Den åbner automatisk en ny fane med en Jupyter notesbog.
  4. Find cellen i Jupyter-notesbogen (Valgfrit) Næste trin afsnit og ændring run_optional_steps fra False til True.
    De aktiverede valgfrie trin i notesbogen udfører følgende:
    • Træn en model ved hjælp af XGBoost
      Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.
  5. Gå tilbage til toppen af ​​notesbogen og på Kør menu, vælg Kør alle celler.

Hvis du bruger den genererede notesbog, som den er, lancerer den et SageMaker-behandlingsjob, der skalerer behandlingen ud på tværs af to m5.4xlarge forekomster for at behandle det fulde datasæt på S3-bøtten. Du kan justere antallet af forekomster og forekomsttyper baseret på den datasætstørrelse og tid, du har brug for for at fuldføre jobbet.

Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Vent, indtil træningsjobbet fra den sidste celle er fuldført. Det genererer en model i SageMakers standard S3-spand.

Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Den trænede model er klar til implementering til enten realtidsslutning eller batchtransformation. Bemærk, at vi brugte syntetiske data til at demonstrere funktionaliteter i Data Wrangler og brugte behandlede data til træningsmodel. I betragtning af, at de data, vi brugte, er syntetiske, er slutningsresultatet fra den trænede model ikke beregnet til diagnosticering af en medicinsk tilstand i den virkelige verden eller erstatning af bedømmelse fra læger.

Du kan også eksportere dit transformerede datasæt direkte til Amazon S3 ved at vælge eksport øverst på transformationseksempelsiden. Indstillingen for direkte eksport eksporterer kun den transformerede prøve, hvis prøveudtagning blev aktiveret under importen. Denne mulighed er bedst egnet, hvis du har at gøre med mindre datasæt. De transformerede data kan også indlæses direkte i en feature store. For mere information, se Amazon SageMaker Feature Store. Datastrømmen kan også eksporteres som en SageMaker-pipeline, der kan orkestreres og planlægges efter dine krav. For mere information, se Amazon SageMaker Pipelines.

Konklusion

I dette indlæg viste vi, hvordan man bruger Data Wrangler til at behandle sundhedsdata og udføre skalerbar funktionsteknik på en værktøjsdrevet, lav-kode måde. Vi lærte, hvordan man anvender de indbyggede transformationer og analyser passende, hvor det er nødvendigt, og kombinerer det med tilpassede transformationer for at tilføje endnu mere fleksibilitet til vores dataforberedelsesarbejdsgang. Vi gennemgik også de forskellige muligheder for at udskalere dataflowopskriften via distribuerede behandlingsjob. Vi lærte også, hvordan de transformerede data nemt kan bruges til at træne en model til at forudsige hjertesvigt.

Der er mange andre funktioner i Data Wrangler, vi ikke har dækket i dette indlæg. Udforsk, hvad der er muligt i Forbered ML Data med Amazon SageMaker Data Wrangler og lær, hvordan du kan udnytte Data Wrangler til dit næste datavidenskab eller maskinlæringsprojekt.


Om forfatterne

Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Forrest Sun er Senior Solution Architect hos AWS Public Sector-teamet i Toronto, Canada. Han har arbejdet i sundheds- og finansindustrien i de sidste to årtier. Uden for arbejdet holder han af at campere med sin familie.

Funktionsteknik i stor skala til sundhedspleje og biovidenskab med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Arunprasath Shankar er en specialist i kunstig intelligens og maskinlæring (AI/ML) med AWS, der hjælper globale kunder med at skalere deres AI-løsninger effektivt og effektivt i skyen. I sin fritid nyder Arun at se sci-fi-film og lytte til klassisk musik.

Tidsstempel:

Mere fra AWS maskinindlæring