Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler

Maskinlæring (ML) forstyrrer mange bransjer i et enestående tempo. Helse- og biovitenskapsindustrien (HCLS) har gjennomgått en rask utvikling de siste årene og omfatter ML på tvers av en rekke bruksområder for å levere kvalitetspleie og forbedre pasientresultatene.

I en typisk ML-livssyklus bruker dataingeniører og forskere mesteparten av tiden sin på dataforberedelse og funksjonstrinn før de i det hele tatt kommer i gang med prosessen med modellbygging og opplæring. Å ha et verktøy som kan senke adgangsbarrieren for dataforberedelse, og dermed forbedre produktiviteten, er en svært ønskelig forespørsel for disse personasene. Amazon SageMaker Data Wrangler er spesialbygget av AWS for å redusere læringskurven og gjøre det mulig for datautøvere å utføre dataforberedelse, rengjøring og funksjonsingeniøroppgaver med mindre innsats og tid. Den tilbyr et GUI-grensesnitt med mange innebygde funksjoner og integrasjoner med andre AWS-tjenester som f.eks Amazon enkel lagringstjeneste (Amazon S3) og Amazon SageMaker Feature Store, samt partnerdatakilder inkludert Snowflake og Databricks.

I dette innlegget viser vi hvordan du bruker Data Wrangler til å forberede helsetjenester for å trene en modell for å forutsi hjertesvikt, gitt en pasients demografi, tidligere medisinske tilstander og laboratorietestresultathistorie.

Løsningsoversikt

Løsningen består av følgende trinn:

  1. Skaff deg et helsedatasett som input til Data Wrangler.
  2. Bruk Data Wranglers innebygde transformasjonsfunksjoner for å transformere datasettet. Dette inkluderer slippkolonner, fremheve data/tid, slå sammen datasett, imputere manglende verdier, kode kategoriske variabler, skalere numeriske verdier, balansere datasettet og mer.
  3. Bruk Data Wranglers tilpassede transformasjonsfunksjon (Pandas eller PySpark-kode) for å supplere ytterligere transformasjoner som kreves utover de innebygde transformasjonene og demonstrere utvidelsesmuligheten til Data Wrangler. Dette inkluderer filterrader, gruppedata, form nye datarammer basert på betingelser og mer.
  4. Bruk Data Wranglers innebygde visualiseringsfunksjoner for å utføre visuell analyse. Dette inkluderer mållekkasje, funksjonskorrelasjon, hurtigmodell og mer.
  5. Bruk Data Wranglers innebygde eksportalternativer for å eksportere det transformerte datasettet til Amazon S3.
  6. Start en Jupyter-notisbok for å bruke det transformerte datasettet i Amazon S3 som input for å trene en modell.

Generer et datasett

Nå som vi har bestemt oss for ML-problemformuleringen, retter vi først blikket mot å innhente dataene vi trenger. Forskningsstudier som f.eks Forutsigelse av hjertesvikt kan gi data som allerede er i god form. Imidlertid møter vi ofte scenarier der dataene er ganske rotete og krever sammenføyning, rensing og flere andre transformasjoner som er veldig spesifikke for helsedomenet før de kan brukes til ML-trening. Vi ønsker å finne eller generere data som er rotete nok og lede deg gjennom trinnene for å forberede dem ved hjelp av Data Wrangler. Med det i tankene valgte vi Synthea som et verktøy for å generere syntetiske data som passer målet vårt. Synthea er en åpen kildekode syntetisk pasientgenerator som modellerer sykehistorien til syntetiske pasienter. For å generere datasettet ditt, fullfør følgende trinn:

  1. Følg instruksjonene i henhold til kjapp start dokumentasjon for å lage en Amazon SageMaker Studio domene og start Studio.
    Dette er et forutsetningssteg. Det er valgfritt hvis Studio allerede er satt opp på kontoen din.
  2. Etter at Studio er lansert, på Launcher kategorien, velg Systemterminal.
    Dette starter en terminaløkt som gir deg et kommandolinjegrensesnitt å jobbe med.
  3. For å installere Synthea og generere datasettet i CSV-format, kjør følgende kommandoer i den lanserte terminaløkten:
    $ 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 for å generere datasettene med en populasjonsstørrelse på 10,000 XNUMX. Merk at størrelsesparameteren angir antall levende medlemmer av befolkningen. I tillegg genererer Synthea også data for døde medlemmer av befolkningen som kan legge til noen ekstra datapunkter på toppen av den angitte prøvestørrelsen.

Vent til datagenereringen er fullført. Dette trinnet tar vanligvis rundt en time eller mindre. Synthea genererer flere datasett, inkludert patients, medications, allergies, conditions, og mer. For dette innlegget bruker vi tre av de resulterende datasettene:

  • pasienter.csv – Dette datasettet er på omtrent 3.2 MB og inneholder omtrent 11,000 25 rader med pasientdata (XNUMX kolonner inkludert pasient-ID, fødselsdato, kjønn, adresse og mer)
  • conditions.csv – Dette datasettet er på omtrent 47 MB ​​og inneholder omtrent 370,000 XNUMX rader med medisinsk tilstandsdata (seks kolonner inkludert pasient-ID, tilstandens startdato, tilstandskode og mer)
  • observasjoner.csv – Dette datasettet er på omtrent 830 MB og inneholder omtrent 5 millioner rader med observasjonsdata (åtte kolonner inkludert pasient-ID, observasjonsdato, observasjonskode, verdi og mer)

Det er et en-til-mange forhold mellom patients og conditions datasett. Det er også et en-til-mange forhold mellom patients og observations datasett. For en detaljert dataordbok, se CSV-fildataordbok.

  1. For å laste opp de genererte datasettene til en kildebøtte i Amazon S3, kjør følgende kommandoer i terminaløkten:
    $ cd ./output/csv
    $ aws s3 sync . s3://<source bucket name>/

Start Data Wrangler

Velg SageMaker-ressurser på navigasjonssiden i Studio og på Prosjekter meny, velg Data Wrangler for å lage en Data Wrangler-dataflyt. For detaljerte trinn for hvordan du starter Data Wrangler fra Studio, se Kom i gang med Data Wrangler.

Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Import datoer

For å importere dataene dine, fullfør følgende trinn:

  1. Velg Amazon S3 og finn patient.csv-filen i S3-bøtten.
  2. Detaljer ruten, velg Først K forum sampling.
  3. Enter 1100 forum Prøvestørrelse.
    I forhåndsvisningsruten henter Data Wrangler de første 100 radene fra datasettet og viser dem som en forhåndsvisning.
  4. Velg Import.
    Data Wrangler velger de første 1,100 pasientene fra de totale pasientene (11,000 XNUMX rader) generert av Synthea og importerer dataene. Sampling-tilnærmingen lar Data Wrangler bare behandle prøvedataene. Det gjør oss i stand til å utvikle dataflyten vår med et mindre datasett, noe som resulterer i raskere behandling og en kortere tilbakemeldingssløyfe. Etter at vi har opprettet dataflyten, kan vi sende den utviklede oppskriften til en SageMaker-behandling jobb med å horisontalt skalere ut behandlingen for hele eller større datasett på en distribuert måte.
    Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.
  5. Gjenta denne prosessen for conditions og observations datasett.
    1. For det conditions datasett, skriv inn 37000 forum Prøvestørrelse, som er 1/10 av de totalt 370,000 XNUMX radene som genereres av Synthea.
    2. For det observations datasett, skriv inn 500000 forum Prøvestørrelse, som er 1/10 av de totale observasjonene 5 millioner rader generert av Synthea.

Du bør se tre datasett som vist i følgende skjermbilde.

Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Transformere dataene

Datatransformasjon er prosessen med å endre strukturen, verdien eller formatet til én eller flere kolonner i datasettet. Prosessen er vanligvis utviklet av en dataingeniør og kan være utfordrende for personer med et mindre dataingeniørkompetansesett å dechiffrere logikken som foreslås for transformasjonen. Datatransformasjon er en del av den bredere funksjonsutviklingsprosessen, og riktig sekvens av trinn er et annet viktig kriterium å huske på når du utarbeider slike oppskrifter.

Data Wrangler er designet for å være et lavkodeverktøy for å redusere adgangsbarrieren for effektiv dataforberedelse. Den kommer med over 300 forhåndskonfigurerte datatransformasjoner som du kan velge mellom uten å skrive en eneste linje med kode. I de følgende delene ser vi hvordan du transformerer de importerte datasettene i Data Wrangler.

Slipp kolonner i pasienter.csv

Vi slipper først noen kolonner fra patients datasett. Å slippe redundante kolonner fjerner ikke-relevant informasjon fra datasettet og hjelper oss med å redusere mengden dataressurser som kreves for å behandle datasettet og trene en modell. I denne delen slipper vi kolonner som SSN eller passnummer basert på sunn fornuft om at disse kolonnene ikke har noen prediktiv verdi. Med andre ord hjelper de ikke vår modell med å forutsi hjertesvikt. Vår studie er heller ikke bekymret for andre spalter som fødested eller helseutgifters innflytelse på en pasients hjertesvikt, så vi dropper dem også. Redundante kolonner kan også identifiseres ved å kjøre de innebygde analysene som mållekkasje, funksjonskorrelasjon, multikollinearitet og mer, som er innebygd i Data Wrangler. For mer informasjon om de støttede analysetypene, se Analyser og visualiser. I tillegg kan du bruke Rapport om datakvalitet og innsikt å utføre automatiserte analyser på datasettene for å komme frem til en liste over overflødige kolonner å eliminere.

  1. Velg plusstegnet ved siden av Datatyper for patients.csv-datasettet og velg Legg til transform.
    Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.
  2. Velg Legg til trinn Og velg Administrer kolonner.
    Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.
  3. Til Transform¸ velg Slipp kolonne.
  4. Til Kolonner å slippe, velg 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. Velg Forhåndsvisning for å se gjennom det transformerte datasettet, og velg deretter Legg til.
    Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.
    Du bør se trinnet Slipp kolonne i listen over transformasjoner.
    Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Vis dato/klokkeslett i pasienter.csv

Nå bruker vi funksjonen Featurize dato/klokkeslett for å generere den nye funksjonen Year fra BIRTHDATE kolonne i patients datasett. Vi bruker den nye funksjonen i et påfølgende trinn for å beregne en pasients alder på tidspunktet for observasjon finner sted.

  1. Transforms ruten din Slipp kolonne side for patients datasett, velg Legg til trinn.
  2. Velg Vis dato/klokkeslett forvandle.
    Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.
  3. Velg Trekk ut kolonner.
  4. Til Inndatakolonner, legg til kolonnen BIRTHDATE.
  5. Plukke ut År og fravelg Måned, dag, time, Minutt, Sekund.
    Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.
  6. Velg Forhåndsvisning, velg deretter Legg til.

Legg til transformasjoner i observations.csv

Data Wrangler støtter tilpassede transformasjoner ved hjelp av Python (brukerdefinerte funksjoner), PySpark, Pandas eller PySpark (SQL). Du kan velge transformasjonstype basert på din kjennskap til hvert alternativ og preferanse. For de tre sistnevnte alternativene avslører Data Wrangler variabelen df for at du skal få tilgang til datarammen og bruke transformasjoner på den. For en detaljert forklaring og eksempler, se Egendefinerte transformasjoner. I denne delen legger vi til tre tilpassede transformasjoner til observations datasett.

  1. Legg til en transformasjon til observations.csv og slipp DESCRIPTION kolonne.
    Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.
  2. Velg Forhåndsvisning, velg deretter Legg til.
  3. Transforms ruten, velg Legg til trinn Og velg Tilpasset transformasjon.
  4. Velg på rullegardinmenyen Python (Pandaer).
    Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.
  5. Skriv inn følgende kode:
    df = df[df["CODE"].isin(['8867-4','8480-6','8462-4','39156-5','777-3'])]

    Dette er LONIC-koder som tilsvarer følgende observasjoner vi er interessert i å bruke som funksjoner for å forutsi hjertesvikt:

    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. Velg Forhåndsvisning, velg deretter Legg til.
  7. Legg til en transformasjon for å trekke ut Year og Quarter fra DATE kolonne.
    Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.
  8. Velg Forhåndsvisning, velg deretter Legg til.
  9. Velg Legg til trinn Og velg Tilpasset transformasjon.
  10. Velg på rullegardinmenyen Python (PySpark).
    Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.
    De fem typene observasjoner er kanskje ikke alltid registrert på samme dato. For eksempel kan en pasient besøke fastlegen sin 21. januar og få målt og registrert sitt systoliske blodtrykk, diastoliske blodtrykk, hjertefrekvens og kroppsmasseindeks. Imidlertid kan en laboratorietest som inkluderer blodplater gjøres på et senere tidspunkt den 2. februar. Derfor er det ikke alltid mulig å koble til datarammer innen observasjonsdatoen. Her slår vi sammen datarammer på en grov granularitet på kvartalsbasis.
  11. Skriv inn 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. Velg Forhåndsvisning, velg deretter Legg til.
  13. Velg Legg til trinn, velg deretter Administrer rader.
  14. Til Transform, velg Slipp duplikater.
    Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.
  15. Velg Forhåndsvisning, velg deretter Legg til.
  16. Velg Legg til trinn Og velg Tilpasset transformasjon.
  17. Velg på rullegardinmenyen Python (Pandaer).
  18. Skriv inn følgende kode for å ta et gjennomsnitt av datapunkter som deler samme tidsverdi:
    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. Velg Forhåndsvisning, velg deretter Legg til.
    Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Bli med patients.csv og observations.csv

I dette trinnet viser vi frem hvordan du effektivt og enkelt utfører komplekse sammenføyninger på datasett uten å skrive noen kode via Data Wranglers kraftige brukergrensesnitt. For å lære mer om de støttede typene sammenføyninger, se Transformer data.

  1. Til høyre for Transform: pasienter.csv, velg plusstegnet ved siden av Steps Og velg Bli med.
    Du kan se den transformerte patients.csv-filen oppført under datasett i venstre rute.
    Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.
  2. Til høyre for Transform: observations.csv, Klikk på Steps for å starte sammenføyningsoperasjonen.
    Den transformerte observations.csv-filen er nå oppført under datasett i venstre rute.
    Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.
  3. Velg Konfigurer.
  4. Til Bli med Type, velg Indre.
  5. Til Venstre, velg Id.
  6. Til Ikke sant, velg pasient.
  7. Velg Forhåndsvisning, velg deretter Legg til.
    Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Legg til en tilpasset transformasjon til de sammenføyde datasettene

I dette trinnet beregner vi en pasients alder på observasjonstidspunktet. Vi dropper også kolonner som ikke lenger er nødvendige.

  1. Velg plusstegnet ved siden av 1. Bli med Og velg Legg til transform.
  2. Legg til en tilpasset transformasjon i Pandas:
    df['age'] = df['DATE_year'] - df['BIRTHDATE_year']
    df = df.drop(columns=['BIRTHDATE','DEATHDATE','BIRTHDATE_year','patient'])

  3. Velg Forhåndsvisning, velg deretter Legg til.

Legg til egendefinerte transformasjoner i conditions.csv

  1. Velg plusstegnet ved siden av Transform: conditions.csv Og velg Legg til transform.
  2. Legg til en tilpasset transformasjon i Pandas:
    df = df[df["CODE"].isin(['84114007', '88805009', '59621000', '44054006', '53741008', '449868002', '49436004'])]
    df = df.drop(columns=['DESCRIPTION','ENCOUNTER','STOP'])

OBS: Som vi demonstrerte tidligere, kan du slippe kolonner enten ved å bruke tilpasset kode eller ved å bruke de innebygde transformasjonene fra Data Wrangler. Tilpassede transformasjoner i Data Wrangler gir fleksibiliteten til å ta med din egen transformasjonslogikk i form av kodebiter i de støttede rammeverkene. Disse utdragene kan senere søkes og brukes om nødvendig.

Kodene i den foregående transformasjonen er SNOMED-CT-koder som tilsvarer følgende forhold. De heart failure or chronic congestive heart failure tilstand blir etiketten. Vi bruker de resterende forholdene som funksjoner for å forutsi hjertesvikt. Vi slipper også noen kolonner som ikke lenger 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. La oss deretter legge til en tilpasset transformasjon 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 utfører en venstre ytre sammenføyning for å beholde alle oppføringer i hjertesviktdatarammen. En ny kolonne has_xxx beregnes for hver annen tilstand enn hjertesvikt basert på tilstandens startdato. Vi er kun interessert i medisinske tilstander som ble registrert før hjertesvikten og bruker dem som funksjoner for å forutsi hjertesvikt.

  2. Legg til en innebygd Administrer kolonner transformer for å slippe de overflødige kolonnene som ikke lenger er nødvendige:
    1. hypertension
    2. diabetes
    3. coronary
    4. smoke
    5. atrial
  3. Pakk Year og  Quarter fra heartfailure kolonne.
    Dette samsvarer med granulariteten vi brukte tidligere i transformasjonen av observations datasett.
  4. Vi bør ha totalt 6 trinn for conditions.csv.
    Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Koble til conditions.csv til det sammenføyde datasettet

Vi utfører nå en ny sammenføyning for å koble vilkårsdatasettet til det sammenføyde patients og observations datasett.

  1. Velg Transform: 1. Join.
  2. Velg plusstegnet og velg Bli med.
  3. Velg Steps ved siden av Transform: conditions.csv.
    Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.
  4. Velg Konfigurer.
  5. Til Bli med Type, velg Venstre ytre.
  6. Til Venstre, velg Id.
  7. Til Ikke sant, velg pasient.
  8. Velg Forhåndsvisning, velg deretter Legg til.
    Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Legg til transformasjoner til de sammenføyde datasettene

Nå som vi har alle tre datasettene sammen, la oss bruke noen ekstra transformasjoner.

  1. Legg til følgende tilpassede transformasjon i PySpark så has_heartfailure blir etikettkolonnen vår:
    from pyspark.sql.functions import col, when
    df = (
        df.withColumn("has_heartfailure", when(col("heartfailure").isNotNull(), 1).otherwise(0))
    )

  2. Legg til følgende tilpassede transformasjon 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 interessert i observasjoner registrert før hjertesvikttilstanden er diagnostisert og bruker dem som funksjoner for å forutsi hjertesvikt. Observasjoner tatt etter at hjertesvikt er diagnostisert kan være påvirket av medisinen en pasient tar, så vi ønsker å utelukke disse.

  3. Slipp de overflødige kolonnene som ikke lenger er nødvendige:
    1. Id
    2. DATE_year
    3. DATE_quarter
    4. patient
    5. heartfailure
    6. heartfailure_year
    7. heartfailure_quarter
  4. Analyse fanen, for Analysetype¸ velg Tabellsammendrag.
    En rask skanning gjennom sammendraget viser at MARITAL kolonnen mangler data.
    Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.
  5. Velg Data fanen og legg til et trinn.
  6. Velg Håndtak mangler.
  7. Til Transform, velg Fyll mangler.
  8. Til Inndatakolonner, velg EKTESKAP.
  9. Til Fyll verdi, Tast inn S.
    Vår strategi her er å anta at pasienten er singel dersom sivilstatusen har manglende verdi. Du kan ha en annen strategi.
    Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.
  10. Velg Forhåndsvisning, velg deretter Legg til.
  11. Fyll den manglende verdien som 0 for has_hypertension, has_diabetes, has_coronary, has_smoke, has_atrial.

Marital og Gender er kategorivariabler. Data Wrangler har en innebygd funksjon for å kode kategorivariabler.

  1. Legg til et trinn og velg Kode kategori.
  2. Til Transform, velg En-varm koding.
  3. Til Inndatakolonner, velg EKTESKAP.
  4. Til Utgangsstil, velg Kolonne.
    Denne utdatastilen produserer kodede verdier i separate kolonner.
    Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.
  5. Velg Forhåndsvisning, velg deretter Legg til.
  6. Gjenta disse trinnene for Kjønn kolonne.

Den ene-hot-kodingen deler ekteskapsspalten inn i Marital_M (gift) og Marital_S (enkelt), og deler Kjønn-kolonnen inn i Gender_M (hann) og Gender_F (hunn). Fordi Marital_M og Marital_S er gjensidig utelukkende (som er Gender_M og Gender_F), kan vi slippe én kolonne for å unngå overflødige funksjoner.

  1. Drop Marital_S og Gender_F.

Numeriske funksjoner som systolisk, hjertefrekvens og alder har forskjellige enhetsstandarder. For en lineær regresjonsbasert modell må vi først normalisere disse numeriske funksjonene. Ellers kan noen funksjoner med høyere absolutte verdier ha en uberettiget fordel fremfor andre funksjoner med lavere absolutte verdier og resultere i dårlig modellytelse. Data Wrangler har den innebygde transformatoren Min-max scaler for å normalisere dataene. For en beslutningstrebasert klassifiseringsmodell er det ikke nødvendig med normalisering. Studien vår er et klassifiseringsproblem, så vi trenger ikke å bruke normalisering. Ubalanserte klasser er et vanlig problem i klassifisering. Ubalanse oppstår når opplæringsdatasettet inneholder alvorlig skjev klassefordeling. For eksempel, når datasettet vårt inneholder uforholdsmessig flere pasienter uten hjertesvikt enn pasienter med hjertesvikt, kan det føre til at modellen blir partisk mot å forutsi hjertesvikt og gir dårlige resultater. Data Wrangler har en innebygd funksjon for å takle problemet.

  1. Legg til en tilpasset transformasjon i Pandas for å konvertere datatype av kolonner fra "objekt"-type til numerisk type:
    import pandas as pd
    df=df.apply(pd.to_numeric)

  2. Velg Analyse fanen.
  3. Til Analysetype¸ velg histogram.
  4. Til X-aksen, velg har_hjertesvikt.
  5. Velg Forhåndsvisning.
    Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.
    Det er åpenbart at vi har en ubalansert klasse (flere datapunkter merket som ingen hjertesvikt enn datapunkter merket som hjertesvikt).
  6. Gå tilbake til Data kategorien. Velge Legg til trinn Og velg Balansedata.
  7. Til Målkolonne, velg har_hjertesvikt.
  8. Til Ønsket forhold, Tast inn 1.
  9. Til Transform, velg SMOTE.
    Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.
    SMOTE står for Synthetic Minority Over-sampling Technique. Det er en teknikk for å lage nye minoritetsforekomster og legge til datasettet for å oppnå klassebalanse. For detaljert informasjon, se SMOTE: Synthetic Minority Over-sampling Technique.
  10. Velg Forhåndsvisning, velg deretter Legg til.
  11. Gjenta histogramanalysen i trinn 20-23. Resultatet er en balansert klasse.
    Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Visualiser mållekkasje og funksjonskorrelasjon

Deretter skal vi utføre noen få visuelle analyser ved hjelp av Data Wranglers rike verktøysett med avanserte ML-støttede analysetyper. Først ser vi på mållekkasje. Mållekkasje oppstår når data i treningsdatasettet er sterkt korrelert med måletiketten, men ikke er tilgjengelig i virkelige data på slutningstidspunktet.

  1. Analyse-fanenFor Analysetype¸ velg Mållekkasje.
  2. Til Problemtype, velg klassifisering.
  3. Til Target, velg har_hjertesvikt.
  4. Velg Forhåndsvisning.
    Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.
    Basert på analysen, hr er en mållekkasje. Vi slipper det i et påfølgende trinn. age er merket som en mållekkasje. Det er rimelig å si at en pasients alder vil være tilgjengelig under slutningstid, så vi beholder alder som en funksjon. Systolic og diastolic er også merket som sannsynlig mållekkasje. Vi forventer å ha de to målingene i løpet av inferenstiden, så vi beholder dem som funksjoner.
  5. Velg Legg til for å legge til analysen.

Deretter ser vi på funksjonskorrelasjon. Vi ønsker å velge funksjoner som er korrelert med målet, men som er ukorrelerte seg imellom.

  1. Analyse-fanenFor Analysetype¸ velg Funksjonskorrelasjon.
  2. Til Korrelasjonstype¸ velg lineær.
  3. Velg Forhåndsvisning.
    Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Koeffisientskårene indikerer sterke korrelasjoner mellom følgende par:

  • systolic og diastolic
  • bmi og age
  • has_hypertension og has_heartfailure (merkelapp)

For funksjoner som er sterkt korrelert, er matriser beregningsmessig vanskelig å invertere, noe som kan føre til numerisk ustabile estimater. For å redusere korrelasjonen kan vi ganske enkelt fjerne en fra paret. Vi slipper diastolic og bmi og hold systolic og age i et påfølgende trinn.

Slipp diastoliske og bmi kolonner

Legg til flere transformeringstrinn for å slippe hr, diastolic og bmi kolonner ved hjelp av den innebygde transformasjonen.

Generer rapporten om datakvalitet og -innsikt

AWS nylig annonsert den nye datakvalitets- og innsiktsrapportfunksjonen i Data Wrangler. Denne rapporten verifiserer automatisk datakvaliteten og oppdager avvik i dataene dine. Dataforskere og dataingeniører kan bruke dette verktøyet til å effektivt og raskt bruke domenekunnskap til å behandle datasett for opplæring i ML-modeller. Dette trinnet er valgfritt. For å generere denne rapporten på datasettene våre, fullfør følgende trinn:

  1. Analyse fanen, for Analysetype, velg Rapport om datakvalitet og innsikt.
  2. Til Målkolonne, velg har_hjertesvikt.
  3. Til Problemtype, plukke ut Klassifisering.
  4. Velg Opprett.
    Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

På noen få minutter genererer den en rapport med et sammendrag, bilder og anbefalinger.

Generer en rask modellanalyse

Vi har fullført vår dataforberedelse, rengjøring og funksjonsutvikling. Data Wrangler har en innebygd funksjon som gir et grovt estimat av forventet predikert kvalitet og prediksjonskraften til funksjonene i datasettet vårt.

  1. Analyse fanen, for Analysetype¸ velg Rask modell.
  2. Til Etiketten, velg har_hjertesvikt.
  3. Velg Forhåndsvisning.
    Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

I henhold til vår Quick Model-analyse kan vi se funksjonen has_hypertension har den høyeste funksjonens betydningsscore blant alle funksjoner.

Eksporter dataene og tren modellen

La oss nå eksportere de transformerte ML-klare funksjonene til en S3-destinasjonsbøtte og skalere hele funksjonsteknikk-pipelinen vi har laget så langt ved å bruke prøvene inn i hele datasettet på en distribuert måte.

  1. Velg plusstegnet ved siden av den siste boksen i dataflyten og velg Legg til destinasjon.
  2. Velg Amazon S3.
    Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.
  3. Skriv inn et Datasettnavn. For Amazon S3 plassering, velg en S3-bøtte, og velg deretter Legg til destinasjon.
  4. Velg Lag jobb for å starte en distribuert PySpark-behandlingsjobb for å utføre transformasjonen og sende ut dataene til S3-destinasjonsbøtten.
    Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.
    Avhengig av størrelsen på datasettene, lar dette alternativet oss enkelt konfigurere klyngen og horisontalt skalere uten kode. Vi trenger ikke å bekymre oss for å partisjonere datasettene eller administrere klyngen og Spark-internene. Alt dette blir automatisk tatt hånd om for oss av Data Wrangler.
  5. Velg i venstre rute Neste, 2. Konfigurer jobb.
    Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.
  6. Velg deretter Kjør.
    Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Alternativt kan vi også eksportere den transformerte utgangen til S3 via en Jupyter Notebook. Med denne tilnærmingen genererer Data Wrangler automatisk en Jupyter-notisbok med all koden som trengs for å starte en behandlingsjobb for å bruke dataflyttrinnene (opprettet ved hjelp av en prøve) på det større fullstendige datasettet og bruke det transformerte datasettet som funksjoner for å kick- fra en treningsjobb senere. Den bærbare koden kan enkelt kjøres med eller uten å gjøre endringer. La oss nå gå gjennom trinnene for hvordan du får dette gjort via Data Wranglers brukergrensesnitt.

  1. Velg plusstegnet ved siden av det siste trinnet i dataflyten og velg Eksport til.
  2. Velg Amazon S3 (via Jupyter Notebook).
    Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.
  3. Den åpner automatisk en ny fane med en Jupyter-notisbok.
  4. I Jupyter-notisboken, finn cellen i (Valgfritt) Neste trinn seksjon og endring run_optional_steps fra False til True.
    De aktiverte valgfrie trinnene i den bærbare datamaskinen utfører følgende:
    • Tren en modell ved hjelp av XGBoost
      Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.
  5. Gå tilbake til toppen av notatboken og på Kjør meny, velg Kjør alle celler.

Hvis du bruker den genererte notatboken som den er, starter den en SageMaker-behandlingsjobb som skalerer ut behandlingen over to m5.4xlarge forekomster for å behandle hele datasettet på S3-bøtten. Du kan justere antall forekomster og forekomsttyper basert på datasettstørrelsen og tiden du trenger for å fullføre jobben.

Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Vent til treningsjobben fra den siste cellen er fullført. Den genererer en modell i SageMaker standard S3-bøtte.

Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Den trente modellen er klar for distribusjon for enten sanntidsslutning eller batchtransformasjon. Merk at vi brukte syntetiske data for å demonstrere funksjonaliteter i Data Wrangler og brukte behandlede data for treningsmodell. Gitt at dataene vi brukte er syntetiske, er ikke konklusjonsresultatet fra den trente modellen ment for medisinsk tilstandsdiagnose i den virkelige verden eller erstatning av skjønn fra leger.

Du kan også eksportere det transformerte datasettet direkte til Amazon S3 ved å velge Eksport øverst på forhåndsvisningssiden for transformering. Alternativet for direkte eksport eksporterer bare den transformerte prøven hvis sampling ble aktivert under importen. Dette alternativet er best egnet hvis du har å gjøre med mindre datasett. De transformerte dataene kan også tas inn direkte i en funksjonsbutikk. For mer informasjon, se Amazon SageMaker Feature Store. Dataflyten kan også eksporteres som en SageMaker-pipeline som kan orkestreres og planlegges i henhold til dine krav. For mer informasjon, se Amazon SageMaker-rørledninger.

konklusjonen

I dette innlegget viste vi hvordan du bruker Data Wrangler til å behandle helsedata og utføre skalerbar funksjonsutvikling på en verktøydrevet, lavkodemåte. Vi lærte hvordan vi bruker de innebygde transformasjonene og analysene på en passende måte der det er nødvendig, og kombinerer det med tilpassede transformasjoner for å legge til enda mer fleksibilitet til arbeidsflyten vår for dataforberedelse. Vi gikk også gjennom de forskjellige alternativene for å skalere ut dataflytoppskriften via distribuerte behandlingsjobber. Vi lærte også hvordan de transformerte dataene enkelt kan brukes til å trene en modell for å forutsi hjertesvikt.

Det er mange andre funksjoner i Data Wrangler vi ikke har dekket i dette innlegget. Utforsk hva som er mulig i Forbered ML-data med Amazon SageMaker Data Wrangler og lær hvordan du kan utnytte Data Wrangler for ditt neste datavitenskap eller maskinlæringsprosjekt.


Om forfatterne

Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Forrest Sun er senior løsningsarkitekt med AWS Public Sector-teamet i Toronto, Canada. Han har jobbet i helse- og finansbransjen de siste to tiårene. Utenom jobben liker han å campe med familien.

Funksjonsteknikk i stor skala for helsevesen og biovitenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Arunprasath Shankar er en kunstig intelligens og maskinlæring (AI / ML) spesialistløsningsarkitekt med AWS, som hjelper globale kunder å skalere sine AI-løsninger effektivt og effektivt i skyen. På fritiden liker Arun å se sci-fi-filmer og lytte til klassisk musikk.

Tidstempel:

Mer fra AWS maskinlæring