Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Predstavite inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler

Strojno učenje (ML) moti veliko industrij z izjemno hitrostjo. Industrija zdravstvenega varstva in znanosti o življenju (HCLS) je šla v zadnjih letih skozi hitro evolucijo, ki vključuje ML v številnih primerih uporabe za zagotavljanje kakovostne oskrbe in izboljšanje rezultatov bolnikov.

V tipičnem življenjskem ciklu ML podatkovni inženirji in znanstveniki porabijo večino svojega časa za korake priprave podatkov in inženiringa funkcij, preden sploh začnejo s postopkom gradnje modela in usposabljanja. Imeti orodje, ki lahko zmanjša vstopno oviro za pripravo podatkov in s tem izboljša produktivnost, je zelo zaželena zahteva za te osebe. Amazon SageMaker Data Wrangler je namensko izdelal AWS, da skrajša krivuljo učenja in omogoči izvajalcem podatkov, da z manj truda in časa opravijo naloge priprave podatkov, čiščenja in inženiringa funkcij. Ponuja vmesnik GUI s številnimi vgrajenimi funkcijami in integracijo z drugimi storitvami AWS, kot npr Preprosta storitev shranjevanja Amazon (Amazon S3) in Trgovina s funkcijami Amazon SageMaker, pa tudi partnerske vire podatkov, vključno s Snowflake in Databricks.

V tej objavi prikazujemo, kako uporabiti Data Wrangler za pripravo zdravstvenih podatkov za usposabljanje modela za napovedovanje srčnega popuščanja glede na bolnikovo demografijo, predhodna zdravstvena stanja in zgodovino rezultatov laboratorijskih preiskav.

Pregled rešitev

Rešitev je sestavljena iz naslednjih korakov:

  1. Pridobite nabor zdravstvenih podatkov kot vnos v Data Wrangler.
  2. Za preoblikovanje nabora podatkov uporabite vgrajene funkcije preoblikovanja Data Wrangler. To vključuje spuščanje stolpcev, predstavljanje podatkov/časa, združevanje naborov podatkov, pripisovanje manjkajočih vrednosti, kodiranje kategoričnih spremenljivk, skaliranje številskih vrednosti, uravnoteženje nabora podatkov in drugo.
  3. Uporabite funkcijo transformacije po meri Data Wrangler (koda Pandas ali PySpark), da dopolnite dodatne transformacije, ki so potrebne poleg vgrajenih transformacij, in pokažite razširljivost Data Wranglerja. To vključuje filtrirne vrstice, skupinske podatke, oblikovanje novih podatkovnih okvirov na podlagi pogojev in drugo.
  4. Za izvedbo vizualne analize uporabite vgrajene funkcije vizualizacije Data Wrangler. To vključuje ciljno uhajanje, korelacijo funkcij, hitri model in drugo.
  5. Uporabite vgrajene izvozne možnosti Data Wrangler za izvoz preoblikovanega nabora podatkov v Amazon S3.
  6. Zaženite prenosni računalnik Jupyter, da uporabite transformirani nabor podatkov v Amazon S3 kot vhod za usposabljanje modela.

Ustvari nabor podatkov

Zdaj, ko smo se odločili za navedbo problema ML, smo se najprej lotili pridobivanja podatkov, ki jih potrebujemo. Raziskave, kot je npr Napoved srčnega popuščanja lahko zagotovi podatke, ki so že v dobrem stanju. Vendar pogosto naletimo na scenarije, kjer so podatki precej neurejeni in zahtevajo združevanje, čiščenje in številne druge transformacije, ki so zelo specifične za domeno zdravstvene oskrbe, preden jih je mogoče uporabiti za usposabljanje ML. Želimo poiskati ali ustvariti podatke, ki so dovolj neurejeni, in vas voditi skozi korake njihove priprave z uporabo Data Wranglerja. S tem v mislih smo izbrali Synthea kot orodje za ustvarjanje sintetičnih podatkov, ki ustrezajo našemu cilju. Synthea je odprtokodni generator sintetičnih bolnikov, ki modelira zdravstveno zgodovino sintetičnih bolnikov. Če želite ustvariti nabor podatkov, izvedite naslednje korake:

  1. Sledite navodilom v skladu z hiter začetek dokumentacijo za ustvarjanje Amazon SageMaker Studio domeno in zaženite Studio.
    To je predpogojni korak. To ni obvezno, če je Studio že nastavljen v vašem računu.
  2. Ko je Studio zagnan, na Izstrelitev izberite jeziček Sistemski terminal.
    To zažene terminalsko sejo, ki vam nudi vmesnik ukazne vrstice za delo.
  3. Če želite namestiti Synthea in ustvariti nabor podatkov v formatu CSV, zaženite naslednje ukaze v zagnani terminalski seji:
    $ 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

Zagotavljamo parameter za ustvarjanje naborov podatkov z velikostjo populacije 10,000. Upoštevajte, da parameter velikosti označuje število živih članov populacije. Poleg tega Synthea ustvarja tudi podatke za mrtve člane populacije, kar lahko doda nekaj dodatnih podatkovnih točk poleg navedene velikosti vzorca.

Počakajte, da se ustvarjanje podatkov konča. Ta korak običajno traja približno eno uro ali manj. Synthea ustvari več naborov podatkov, vključno z patients, medications, allergies, conditions, in več. Za to objavo uporabljamo tri nastale nize podatkov:

  • bolniki.csv – Ta nabor podatkov je velik približno 3.2 MB in vsebuje približno 11,000 vrstic podatkov o bolnikih (25 stolpcev, vključno z ID-jem bolnika, datumom rojstva, spolom, naslovom in drugim)
  • pogoji.csv – Ta nabor podatkov je velik približno 47 MB ​​in vsebuje približno 370,000 vrstic podatkov o zdravstvenem stanju (šest stolpcev, vključno z ID-jem bolnika, začetnim datumom stanja, kodo stanja in več)
  • opazovanja.csv – Ta nabor podatkov je velik približno 830 MB in vsebuje približno 5 milijonov vrstic podatkov o opazovanju (osem stolpcev, vključno z ID-jem bolnika, datumom opazovanja, kodo opazovanja, vrednostjo in več)

Obstaja razmerje ena proti mnogo med patients in conditions nabori podatkov. Obstaja tudi razmerje ena proti mnogo med patients in observations nabori podatkov. Za podroben slovar podatkov glejte Slovar podatkov datoteke CSV.

  1. Če želite naložiti ustvarjene nize podatkov v izvorno vedro v Amazon S3, zaženite naslednje ukaze v terminalski seji:
    $ cd ./output/csv
    $ aws s3 sync . s3://<source bucket name>/

Zaženite Data Wrangler

Izberite Viri SageMaker na navigacijski strani v Studiu in na projekti izberite meni Data Wrangler za ustvarjanje toka podatkov Data Wrangler. Za podrobne korake, kako zagnati Data Wrangler iz studia, glejte Začnite z Data Wrangler.

Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Uvozi podatke

Za uvoz podatkov izvedite naslednje korake:

  1. Izberite Amazon S3 in poiščite datoteko bolnikov.csv v vedru S3.
  2. v podrobnosti podokno, izberite Najprej K za Vzorčenje.
  3. Vnesite 1100 za Velikost vzorca.
    V podoknu za predogled Data Wrangler potegne prvih 100 vrstic iz nabora podatkov in jih navede kot predogled.
  4. Izberite uvoz.
    Data Wrangler izbere prvih 1,100 pacientov izmed vseh pacientov (11,000 vrstic), ki jih ustvari Synthea, in uvozi podatke. Pristop vzorčenja omogoča Data Wranglerju samo obdelavo vzorčnih podatkov. Omogoča nam razvoj podatkovnega toka z manjšim naborom podatkov, kar ima za posledico hitrejšo obdelavo in krajšo povratno zanko. Ko ustvarimo pretok podatkov, lahko razvit recept oddamo a Obdelava SageMaker nalogo za vodoravno razširitev obdelave za celoten ali večji nabor podatkov na porazdeljen način.
    Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  5. Ta postopek ponovite za conditions in observations nabor podatkov
    1. Za conditions nabor podatkov, vnesite 37000 za Velikost vzorca, kar je 1/10 od skupno 370,000 vrstic, ki jih ustvari Synthea.
    2. Za observations nabor podatkov, vnesite 500000 za Velikost vzorca, kar je 1/10 vseh opazovanj 5 milijonov vrstic, ki jih ustvari Synthea.

Morali bi videti tri nabore podatkov, kot je prikazano na naslednjem posnetku zaslona.

Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Preoblikujte podatke

Preoblikovanje podatkov je postopek spreminjanja strukture, vrednosti ali oblike enega ali več stolpcev v naboru podatkov. Postopek običajno razvije podatkovni inženir in je lahko izziv za ljudi z manjšim naborom spretnosti podatkovnega inženiringa, da dešifrirajo logiko, predlagano za transformacijo. Preoblikovanje podatkov je del širšega procesa inženiringa funkcij in pravilno zaporedje korakov je še en pomemben kriterij, ki ga je treba upoštevati pri snovanju takšnih receptov.

Data Wrangler je zasnovan kot orodje z nizko kodo za zmanjšanje vstopnih ovir za učinkovito pripravo podatkov. Na voljo je z več kot 300 vnaprej konfiguriranimi transformacijami podatkov, med katerimi lahko izbirate, ne da bi napisali eno vrstico kode. V naslednjih razdelkih vidimo, kako preoblikovati uvožene nabore podatkov v Data Wrangler.

Spusti stolpce v pacientih.csv

Najprej izpustimo nekaj stolpcev iz patients nabor podatkov. Spuščanje odvečnih stolpcev odstrani nepomembne informacije iz nabora podatkov in nam pomaga zmanjšati količino računalniških virov, potrebnih za obdelavo nabora podatkov in usposabljanje modela. V tem razdelku izpustimo stolpce, kot je SSN ali številka potnega lista, na podlagi zdrave pameti, da ti stolpci nimajo napovedne vrednosti. Z drugimi besedami, našemu modelu ne pomagajo napovedati srčnega popuščanja. Naša študija se prav tako ne ukvarja z drugimi stolpci, kot je rojstni kraj ali vpliv stroškov zdravstvenega varstva na bolnikovo srčno popuščanje, zato jih tudi opuščamo. Odvečne stolpce je mogoče identificirati tudi z izvajanjem vgrajenih analiz, kot so ciljno uhajanje, korelacija funkcij, multikolinearnost in druge, ki so vgrajene v Data Wrangler. Za več podrobnosti o podprtih vrstah analiz glejte Analizirajte in vizualizirajte. Poleg tega lahko uporabite Poročilo o kakovosti podatkov in vpogledih za izvajanje avtomatiziranih analiz podatkovnih nizov, da pridete do seznama odvečnih stolpcev, ki jih je treba odstraniti.

  1. Izberite znak plus poleg Vrste podatkov za nabor podatkov bolnikov.csv in izberite Dodaj preoblikovanje.
    Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  2. Izberite Dodaj korak In izberite Upravljanje stolpcev.
    Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  3. za Transform¸ izberite Spustite stolpec.
  4. za Stolpci za spuščanje, izberite naslednje stolpce:
    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. Izberite predogled za pregled preoblikovanega nabora podatkov, nato izberite Dodaj.
    Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
    Moral bi videti korak Spustite stolpec na vašem seznamu transformacij.
    Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Predstavite datum/čas v pacientih.csv

Zdaj uporabljamo funkcijo Datum/čas Featurize za ustvarjanje nove funkcije Year Iz BIRTHDATE stolpec v patients nabor podatkov. Novo funkcijo uporabimo v naslednjem koraku za izračun pacientove starosti v času opazovanja.

  1. v Preoblikuje vaše podokno Spustite stolpec stran za patients nabor podatkov, izberite Dodaj korak.
  2. Izberite Predstavite datum/čas preoblikovati.
    Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  3. Izberite Izvleček stolpcev.
  4. za Vnosni stolpci, dodajte stolpec BIRTHDATE.
  5. Izberite Leto in prekliči izbiro mesec, Dan, ura, Minute, Drugi.
    Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  6. Izberite predogled, nato izberite Dodaj.

Dodajte transformacije v observations.csv

Data Wrangler podpira transformacije po meri z uporabo Pythona (uporabniško definirane funkcije), PySpark, Pandas ali PySpark (SQL). Izberete lahko svojo vrsto transformacije glede na to, kako poznate posamezno možnost in želje. Za zadnje tri možnosti Data Wrangler izpostavi spremenljivko df za dostop do podatkovnega okvira in uporabo transformacij na njem. Za podrobno razlago in primere glejte Preoblikovanje po meri. V tem razdelku dodamo tri transformacije po meri v observations nabor podatkov.

  1. Dodajte transformacijo v observations.csv in spustite DESCRIPTION stolpec.
    Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  2. Izberite predogled, nato izberite Dodaj.
  3. v Preoblikuje podokno, izberite Dodaj korak In izberite Preoblikovanje po meri.
  4. V spustnem meniju izberite Python (pande).
    Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  5. Vnesite to kodo:
    df = df[df["CODE"].isin(['8867-4','8480-6','8462-4','39156-5','777-3'])]

    To so kode LONIC, ki ustrezajo naslednjim opažanjem, ki jih želimo uporabiti kot funkcije za napovedovanje srčnega popuščanja:

    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. Izberite predogled, nato izberite Dodaj.
  7. Dodajte transformacijo za ekstrahiranje Year in Quarter Iz DATE stolpec.
    Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  8. Izberite predogled, nato izberite Dodaj.
  9. Izberite Dodaj korak In izberite Preoblikovanje po meri.
  10. V spustnem meniju izberite Python (PySpark).
    Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
    Pet vrst opazovanj morda ne bo vedno zabeleženih na isti datum. Pacient lahko na primer obišče svojega družinskega zdravnika 21. januarja in mu izmeri in zabeleži sistolični krvni tlak, diastolični krvni tlak, srčni utrip in indeks telesne mase. Vendar se lahko laboratorijski test, ki vključuje trombocite, opravi pozneje, 2. februarja. Zato ni vedno mogoče združiti podatkovnih okvirov do datuma opazovanja. Tukaj združujemo podatkovne okvire z grobo razdrobljenostjo na četrtletni osnovi.
  11. Vnesite to kodo:
    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. Izberite predogled, nato izberite Dodaj.
  13. Izberite Dodaj korak, nato izberite Upravljanje vrstic.
  14. za Transform, izberite Izpusti dvojnike.
    Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  15. Izberite predogled, nato izberite Dodaj.
  16. Izberite Dodaj korak In izberite Preoblikovanje po meri.
  17. V spustnem meniju izberite Python (pande).
  18. Vnesite naslednjo kodo, da izračunate povprečje podatkovnih točk, ki imajo enako časovno vrednost:
    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. Izberite predogled, nato izberite Dodaj.
    Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Pridruži paciente.csv in observations.csv

V tem koraku prikazujemo, kako učinkovito in enostavno izvajati zapletene spoje na naborih podatkov brez pisanja kode prek zmogljivega uporabniškega vmesnika Data Wrangler. Če želite izvedeti več o podprtih vrstah združevanj, glejte Pretvori podatke.

  1. Desno od Transformacija: pacienti.csv, izberite znak plus zraven Koraki In izberite pridruži se.
    Spodaj si lahko ogledate transformirano datoteko pacijenata.csv Podatkovni nizi v levem podoknu.
    Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  2. Desno od Transformacija: observations.csv, kliknite na Koraki za začetek operacije pridružitve.
    Preoblikovana datoteka observations.csv je zdaj navedena pod Podatkovni nizi v levem podoknu.
    Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  3. Izberite Konfiguracija.
  4. za Vrsta pridružitve, izberite Notranja.
  5. za levo, izberite Id.
  6. za Prav, izberite Bolnik.
  7. Izberite predogled, nato izberite Dodaj.
    Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Dodajte transformacijo po meri združenim naborom podatkov

V tem koraku izračunamo bolnikovo starost v času opazovanja. Izločimo tudi stolpce, ki jih ne potrebujemo več.

  1. Izberite znak plus poleg 1. Pridružite se In izberite Dodaj preoblikovanje.
  2. Dodajte transformacijo po meri v Pandas:
    df['age'] = df['DATE_year'] - df['BIRTHDATE_year']
    df = df.drop(columns=['BIRTHDATE','DEATHDATE','BIRTHDATE_year','patient'])

  3. Izberite predogled, nato izberite Dodaj.

Dodajte transformacije po meri v conditions.csv

  1. Izberite znak plus poleg Pretvorba: pogoji.csv In izberite Dodaj preoblikovanje.
  2. Dodajte transformacijo po meri v Pandas:
    df = df[df["CODE"].isin(['84114007', '88805009', '59621000', '44054006', '53741008', '449868002', '49436004'])]
    df = df.drop(columns=['DESCRIPTION','ENCOUNTER','STOP'])

Opomba: Kot smo že pokazali, lahko stolpce spustite s kodo po meri ali z vgrajenimi transformacijami, ki jih ponuja Data Wrangler. Transformacije po meri v Data Wranglerju zagotavljajo prilagodljivost za vnos lastne logike transformacije v obliki izrezkov kode v podprta ogrodja. Te izrezke je mogoče kasneje poiskati in po potrebi uporabiti.

Kode v prejšnji transformaciji so kode SNOMED-CT, ki ustrezajo naslednjim pogojem. The heart failure or chronic congestive heart failure stanje postane oznaka. Preostala stanja uporabljamo kot značilnosti za napovedovanje srčnega popuščanja. Izpustimo tudi nekaj stolpcev, ki jih ne potrebujemo več.

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

  1. Nato dodamo transformacijo po meri v 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))
    )

    Izvedemo levo zunanje združevanje, da ohranimo vse vnose v podatkovnem okviru srčnega popuščanja. Nova kolumna has_xxx se izračuna za vsako stanje razen srčnega popuščanja na podlagi datuma začetka stanja. Zanimajo nas le zdravstvena stanja, ki so bila zabeležena pred srčnim popuščanjem in jih uporabljamo kot značilnosti za napovedovanje srčnega popuščanja.

  2. Dodajte vgrajeno Upravljanje stolpcev transformirajte, da izpustite odvečne stolpce, ki niso več potrebni:
    1. hypertension
    2. diabetes
    3. coronary
    4. smoke
    5. atrial
  3. Izvleček Year in  Quarter Iz heartfailure stolpec.
    To se ujema z razdrobljenostjo, ki smo jo prej uporabili pri preoblikovanju observations nabor podatkov.
  4. Imeti bi morali skupno 6 korakov za conditions.csv.
    Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Pridruži pogoji.csv združenemu naboru podatkov

Zdaj izvedemo novo združevanje, da nabor podatkov o pogojih pridružimo združenemu patients in observations nabor podatkov.

  1. Izberite Preoblikovanje: 1. pridružitev.
  2. Izberite znak plus in izberite pridruži se.
  3. Izberite Koraki poleg Pretvorba: pogoji.csv.
    Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  4. Izberite Konfiguracija.
  5. za Vrsta pridružitve, izberite Levi zunanji.
  6. za levo, izberite Id.
  7. za Prav, izberite Bolnik.
  8. Izberite predogled, nato izberite Dodaj.
    Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Dodajte transformacije v združene nize podatkov

Zdaj, ko smo združili vse tri nabore podatkov, uporabimo nekaj dodatnih transformacij.

  1. Dodajte naslednjo pretvorbo po meri v PySpark tako has_heartfailure postane naš stolpec z oznakami:
    from pyspark.sql.functions import col, when
    df = (
        df.withColumn("has_heartfailure", when(col("heartfailure").isNotNull(), 1).otherwise(0))
    )

  2. Dodajte naslednjo transformacijo po meri v 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")))))
        )
    )

    Zanimajo nas le opažanja, zabeležena pred diagnosticiranjem srčnega popuščanja, in jih uporabljamo kot funkcije za napovedovanje srčnega popuščanja. Na opazovanja, opravljena po diagnozi srčnega popuščanja, lahko vplivajo zdravila, ki jih bolnik jemlje, zato jih želimo izključiti.

  3. Spustite odvečne stolpce, ki niso več potrebni:
    1. Id
    2. DATE_year
    3. DATE_quarter
    4. patient
    5. heartfailure
    6. heartfailure_year
    7. heartfailure_quarter
  4. o Analiza zavihek, za Vrsta analize¸ izberite Povzetek tabele.
    Hiter pregled povzetka pokaže, da je MARITAL v stolpcu manjkajo podatki.
    Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  5. Izberite datum in dodajte korak.
  6. Izberite Ročaj manjka.
  7. za Transform, izberite Manjka polnjenje.
  8. za Vnosni stolpci, izberite ZAKONSKI.
  9. za Vrednost polnjenja, vnesite S.
    Naša strategija je domnevati, da je bolnik samski, če zakonski stan nima vrednosti. Lahko imate drugačno strategijo.
    Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  10. Izberite predogled, nato izberite Dodaj.
  11. Izpolnite manjkajočo vrednost kot 0 za has_hypertension, has_diabetes, has_coronary, has_smoke, has_atrial.

Marital in Gender so kategorialne spremenljivke. Data Wrangler ima vgrajeno funkcijo za kodiranje kategorialnih spremenljivk.

  1. Dodajte korak in izberite Kodiraj kategorialno.
  2. za Transform, izberite Enkratno kodiranje.
  3. za Vnosni stolpci, izberite ZAKONSKI.
  4. za Izhodni slog, izberite Stolpec.
    Ta izhodni slog ustvari kodirane vrednosti v ločenih stolpcih.
    Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  5. Izberite predogled, nato izberite Dodaj.
  6. Ponovite te korake za Spol stolpec.

Enkratno kodiranje razdeli zakonski stolpec na Marital_M (poročen) in Marital_S (enojni) in razdeli stolpec Spol na Gender_M (moški) in Gender_F (ženska). Ker Marital_M in Marital_S se med seboj izključujejo (kot so Gender_M in Gender_F), lahko izpustimo en stolpec, da se izognemo odvečnim funkcijam.

  1. Drop Marital_S in Gender_F.

Numerične značilnosti, kot so sistolični, srčni utrip in starost, imajo različne standarde enot. Za model, ki temelji na linearni regresiji, moramo te numerične lastnosti najprej normalizirati. V nasprotnem primeru imajo lahko nekatere funkcije z višjimi absolutnimi vrednostmi neupravičeno prednost pred drugimi značilnostmi z nižjimi absolutnimi vrednostmi in povzročijo slabo delovanje modela. Data Wrangler ima vgrajen transformator Min-max skaler za normalizacijo podatkov. Za klasifikacijski model, ki temelji na drevesu odločitev, normalizacija ni potrebna. Naša študija je problem klasifikacije, zato nam ni treba uporabiti normalizacije. Neuravnoteženi razredi so pogosta težava pri razvrščanju. Neravnovesje se zgodi, ko nabor podatkov o usposabljanju vsebuje močno izkrivljeno porazdelitev razredov. Če na primer naš nabor podatkov vsebuje nesorazmerno več bolnikov brez srčnega popuščanja kot bolnikov s srčnim popuščanjem, lahko to povzroči, da je model pristranski v smeri napovedovanja srčnega popuščanja in slabo delovanje. Data Wrangler ima vgrajeno funkcijo za reševanje težave.

  1. Dodajte transformacijo po meri v Pandas za pretvorbo vrste podatkov stolpcev iz vrste »objekt« v številsko vrsto:
    import pandas as pd
    df=df.apply(pd.to_numeric)

  2. Izberite Analiza tab.
  3. za Vrsta analize¸ izberite Histogram.
  4. za X os, izberite ima_srčno popuščanje.
  5. Izberite predogled.
    Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
    Očitno je, da imamo neuravnotežen razred (več podatkovnih točk, označenih kot brez srčnega popuščanja, kot podatkovnih točk, označenih kot srčno popuščanje).
  6. Pojdi nazaj na datum zavihek. Izberite Dodaj korak In izberite Podatki o bilanci.
  7. za Ciljni stolpec, izberite ima_srčno popuščanje.
  8. za Želeno razmerje, vnesite 1.
  9. za Transform, izberite SMETE.
    Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
    SMOTE je kratica za Synthetic Minority Over-sampling Technique. To je tehnika za ustvarjanje novih manjšinskih primerkov in dodajanje naboru podatkov, da se doseže ravnovesje razreda. Za podrobne informacije glejte SMOTE: Tehnika pretiranega vzorčenja sintetičnih manjšin.
  10. Izberite predogled, nato izberite Dodaj.
  11. Ponovite analizo histograma v korakih 20-23. Rezultat je uravnotežen razred.
    Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Vizualizirajte ciljno uhajanje in korelacijo funkcij

Nato bomo izvedli nekaj vizualnih analiz z uporabo bogatega nabora orodij Data Wrangler za napredne vrste analiz, ki jih podpira ML. Najprej pogledamo ciljno uhajanje. Do uhajanja cilja pride, ko so podatki v naboru podatkov za usposabljanje močno povezani s ciljno oznako, vendar v času sklepanja niso na voljo v podatkih iz resničnega sveta.

  1. o Zavihek AnalizaZa Vrsta analize¸ izberite Ciljno puščanje.
  2. za Vrsta težave, izberite Razvrstitev.
  3. za ciljna, izberite ima_srčno popuščanje.
  4. Izberite predogled.
    Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
    Na podlagi analize je hr je ciljno uhajanje. V naslednjem koraku ga bomo izpustili. age je označeno kot ciljno uhajanje. Razumno je reči, da bo pacientova starost na voljo v času sklepanja, zato ohranjamo starost kot značilnost. Systolic in diastolic so tudi označeni kot verjetno ciljno uhajanje. Pričakujemo, da bomo imeli dve meritvi v času sklepanja, zato ju hranimo kot lastnosti.
  5. Izberite Dodaj da dodate analizo.

Nato pogledamo korelacijo funkcij. Želimo izbrati funkcije, ki so povezane s ciljem, vendar med seboj niso povezane.

  1. o Zavihek AnalizaZa Vrsta analize¸ izberite Korelacija značilnosti.
  2. za Vrsta korelacije¸ izberite linearna.
  3. Izberite predogled.
    Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Ocene koeficientov kažejo močne korelacije med naslednjimi pari:

  • systolic in diastolic
  • bmi in age
  • has_hypertension in has_heartfailure (oznaka)

Za funkcije, ki so močno korelirane, je matrike računsko težko obrniti, kar lahko privede do numerično nestabilnih ocen. Da ublažimo korelacijo, lahko eno preprosto odstranimo iz para. Spustimo se diastolic in bmi in obdrži systolic in age v naslednjem koraku.

Spustite diastolični in bmi stolpec

Dodajte dodatne korake transformacije, da izpustite hr, diastolic in bmi stolpce z vgrajeno transformacijo.

Ustvarite poročilo o kakovosti podatkov in vpogledih

AWS nedavno razglasitve novo funkcijo Data Quality and Insights Report v Data Wranglerju. To poročilo samodejno preveri kakovost podatkov in zazna nepravilnosti v vaših podatkih. Podatkovni znanstveniki in podatkovni inženirji lahko to orodje uporabljajo za učinkovito in hitro uporabo znanja domene za obdelavo naborov podatkov za usposabljanje modelov ML. Ta korak ni obvezen. Če želite ustvariti to poročilo o naših zbirkah podatkov, izvedite naslednje korake:

  1. o Analiza zavihek, za Vrsta analize, izberite Poročilo o kakovosti podatkov in vpogledih.
  2. za Ciljni stolpec, izberite ima_srčno popuščanje.
  3. za Vrsta težavetako, da izberete Razvrstitev.
  4. Izberite ustvarjanje.
    Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

V nekaj minutah ustvari poročilo s povzetkom, vizualnimi elementi in priporočili.

Ustvarite hitro analizo modela

Zaključili smo pripravo podatkov, čiščenje in inženiring funkcij. Data Wrangler ima vgrajeno funkcijo, ki zagotavlja grobo oceno pričakovane predvidene kakovosti in napovedne moči funkcij v našem naboru podatkov.

  1. o Analiza zavihek, za Vrsta analize¸ izberite Hitri model.
  2. za label, izberite ima_srčno popuščanje.
  3. Izberite predogled.
    Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Po naši analizi hitrega modela lahko vidimo funkcijo has_hypertension ima najvišjo oceno pomembnosti značilnosti med vsemi funkcijami.

Izvozite podatke in usposobite model

Zdaj pa izvozimo preoblikovane funkcije, pripravljene za ML, v ciljno vedro S3 in razširimo celoten cevovod inženiringa funkcij, ki smo ga do zdaj ustvarili z uporabo vzorcev, v celoten nabor podatkov na porazdeljen način.

  1. Izberite znak plus poleg zadnjega polja v toku podatkov in izberite Dodaj cilj.
  2. Izberite Amazon S3.
    Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  3. Vpišite Ime nabora podatkov. Forum Lokacija Amazon S3, izberite vedro S3 in nato izberite Dodaj cilj.
  4. Izberite Ustvari službo za zagon porazdeljenega opravila obdelave PySpark za izvedbo transformacije in izhod podatkov v ciljno vedro S3.
    Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
    Odvisno od velikosti naborov podatkov nam ta možnost omogoča preprosto konfiguriranje gruče in vodoravno skaliranje na način brez kodiranja. Ni nam treba skrbeti za particioniranje naborov podatkov ali upravljanje gruče in notranjosti Spark. Za vse to samodejno poskrbi Data Wrangler.
  5. V levem podoknu izberite Nato 2. Konfigurirajte opravilo.
    Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  6. Potem izberite Run.
    Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Druga možnost je, da lahko izvozimo pretvorjen izhod v S3 prek Jupyter Notebook. S tem pristopom Data Wrangler samodejno ustvari prenosni računalnik Jupyter z vso kodo, potrebno za začetek opravila obdelave za uporabo korakov pretoka podatkov (ustvarjenih z uporabo vzorca) na večjem celotnem naboru podatkov in uporabo preoblikovanega nabora podatkov kot funkcije za začetek kasneje opustil usposabljanje. Kodo prenosnega računalnika je mogoče zlahka zagnati s spremembami ali brez njih. Oglejmo si korake, kako to narediti prek uporabniškega vmesnika Data Wrangler.

  1. Izberite znak plus poleg zadnjega koraka v toku podatkov in izberite Izvozi v.
  2. Izberite Amazon S3 (prek Jupyter Notebook).
    Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  3. Samodejno odpre nov zavihek z zvezkom Jupyter.
  4. V zvezku Jupyter poiščite celico v (Izbirno) Naslednji koraki razdelek in spremembo run_optional_steps iz False do True.
    Omogočeni neobvezni koraki v zvezku izvajajo naslednje:
    • Usposobite model z uporabo XGBoost
      Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  5. Vrnite se na vrh zvezka in na Run izberite meni Zaženi vse celice.

Če uporabite ustvarjen prenosni računalnik tak, kot je, zažene opravilo obdelave SageMaker, ki razširi obdelavo na dva primerka m5.4xlarge za obdelavo celotnega nabora podatkov v vedru S3. Število primerkov in vrste primerkov lahko prilagodite glede na velikost nabora podatkov in čas, ki ga potrebujete za dokončanje opravila.

Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Počakajte, da se usposabljanje iz zadnje celice zaključi. Ustvari model v privzetem vedru S3 SageMaker.

Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Usposobljeni model je pripravljen za uporabo za sklepanje v realnem času ali paketno transformacijo. Upoštevajte, da smo uporabili sintetične podatke za predstavitev funkcionalnosti v Data Wranglerju in uporabili obdelane podatke za model usposabljanja. Glede na to, da so podatki, ki smo jih uporabili, sintetični, rezultat sklepanja iz usposobljenega modela ni namenjen diagnozi zdravstvenega stanja v resničnem svetu ali nadomestitvi presoje zdravnikov.

Svoj transformirani nabor podatkov lahko tudi neposredno izvozite v Amazon S3 tako, da izberete izvoz na vrhu strani za predogled transformacije. Možnost neposrednega izvoza izvozi transformirani vzorec samo, če je bilo med uvozom omogočeno vzorčenje. Ta možnost je najprimernejša, če imate opravka z manjšimi nabori podatkov. Preoblikovane podatke je mogoče zaužiti tudi neposredno v shrambo funkcij. Za več informacij glejte Trgovina s funkcijami Amazon SageMaker. Pretok podatkov je mogoče izvoziti tudi kot cevovod SageMaker, ki ga je mogoče orkestrirati in načrtovati glede na vaše zahteve. Za več informacij glejte Amazonski cevovodi SageMaker.

zaključek

V tej objavi smo pokazali, kako uporabiti Data Wrangler za obdelavo zdravstvenih podatkov in izvajanje razširljivega inženiringa funkcij na način z nizko kodo, ki temelji na orodjih. Naučili smo se, kako ustrezno uporabiti vgrajene transformacije in analize, kjer koli je to potrebno, in jih združiti s transformacijami po meri, da dodamo še večjo prilagodljivost našemu delovnemu toku priprave podatkov. Sprehodili smo se tudi skozi različne možnosti za skaliranje recepta za pretok podatkov prek opravil porazdeljene obdelave. Naučili smo se tudi, kako lahko transformirane podatke enostavno uporabimo za usposabljanje modela za napovedovanje srčnega popuščanja.

V Data Wranglerju je veliko drugih funkcij, ki jih v tej objavi nismo obravnavali. Raziščite, kaj je mogoče v Pripravite podatke ML z Amazon SageMaker Data Wrangler in se naučite, kako izkoristiti Data Wrangler za svoj naslednji projekt podatkovne znanosti ali strojnega učenja.


O avtorjih

Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Forrest Sun je višji arhitekt rešitev pri ekipi AWS Public Sector v Torontu v Kanadi. Zadnji dve desetletji je delal v zdravstveni in finančni industriji. Izven službe z družino rad kampira.

Inženiring funkcij v velikem obsegu za zdravstvo in znanosti o življenju z Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Arunprasath Shankar je arhitekt za umetno inteligenco in strojno učenje (AI / ML) Specialist Solutions Architect z AWS, ki svetovnim strankam pomaga, da svoje rešitve AI učinkovito in uspešno lestvijo v oblaku. V prostem času Arun rad gleda znanstvenofantastične filme in posluša klasično glasbo.

Časovni žig:

Več od Strojno učenje AWS