Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler

Maskininlärning (ML) stör många branscher i en aldrig tidigare skådad takt. Sjukvårds- och livsvetenskapsindustrin (HCLS) har genomgått en snabb utveckling de senaste åren och omfattar ML i en mängd användningsfall för att leverera kvalitetsvård och förbättra patientresultaten.

I en typisk ML-livscykel spenderar dataingenjörer och forskare större delen av sin tid på dataförberedelser och funktionstekniska steg innan de ens kommer igång med processen med modellbyggande och utbildning. Att ha ett verktyg som kan sänka inträdesbarriären för databeredning och därigenom förbättra produktiviteten är en mycket önskvärd fråga för dessa personas. Amazon SageMaker Data Wrangler är specialbyggd av AWS för att minska inlärningskurvan och göra det möjligt för datapraktiker att utföra dataförberedelser, rengöring och funktionstekniska uppgifter på mindre ansträngning och tid. Den erbjuder ett GUI-gränssnitt med många inbyggda funktioner och integrationer med andra AWS-tjänster som t.ex Amazon enkel lagringstjänst (Amazon S3) och Amazon SageMaker Feature Store, såväl som partnerdatakällor inklusive Snowflake och Databricks.

I det här inlägget visar vi hur man använder Data Wrangler för att förbereda sjukvårdsdata för att träna en modell för att förutsäga hjärtsvikt, med tanke på en patients demografi, tidigare medicinska tillstånd och labbtestresultat.

Lösningsöversikt

Lösningen består av följande steg:

  1. Skaffa en vårddatauppsättning som indata till Data Wrangler.
  2. Använd Data Wranglers inbyggda transformationsfunktioner för att transformera datamängden. Detta inkluderar släpp kolumner, presentera data/tid, sammanfoga datauppsättningar, imputera saknade värden, koda kategoriska variabler, skala numeriska värden, balansera datauppsättningen och mer.
  3. Använd Data Wranglers anpassade transformeringsfunktion (Pandas eller PySpark-kod) för att komplettera ytterligare transformationer som krävs utöver de inbyggda transformationerna och demonstrera utbyggbarheten av Data Wrangler. Detta inkluderar filterrader, gruppdata, bildar nya dataramar baserat på villkor och mer.
  4. Använd Data Wranglers inbyggda visualiseringsfunktioner för att utföra visuell analys. Detta inkluderar målläckage, funktionskorrelation, snabbmodell och mer.
  5. Använd Data Wranglers inbyggda exportalternativ för att exportera den transformerade datamängden till Amazon S3.
  6. Starta en Jupyter-anteckningsbok för att använda den transformerade datamängden i Amazon S3 som indata för att träna en modell.

Skapa en datauppsättning

Nu när vi har bestämt oss för ML-problemformuleringen siktar vi först på att skaffa den data vi behöver. Forskningsstudier som t.ex Förutsägelse av hjärtsvikt kan ge data som redan är i gott skick. Däremot stöter vi ofta på scenarier där data är ganska rörig och kräver sammanfogning, rensning och flera andra transformationer som är mycket specifika för sjukvårdsdomänen innan den kan användas för ML-träning. Vi vill hitta eller generera data som är tillräckligt kladdig och leda dig genom stegen för att förbereda den med Data Wrangler. Med det i åtanke valde vi Synthea som ett verktyg för att generera syntetisk data som passar vårt mål. Synthea är en syntetisk patientgenerator med öppen källkod som modellerar den medicinska historien för syntetiska patienter. Utför följande steg för att generera din datauppsättning:

  1. Följ instruktionerna enligt snabbstart dokumentation för att skapa en Amazon SageMaker Studio domän och starta Studio.
    Detta är ett förutsättningssteg. Det är valfritt om Studio redan är konfigurerat på ditt konto.
  2. Efter att Studio har lanserats, på Launcher fliken, välj Systemterminal.
    Detta startar en terminalsession som ger dig ett kommandoradsgränssnitt att arbeta med.
  3. För att installera Synthea och generera datamängden i CSV-format, kör följande kommandon i den startade terminalsessionen:
    $ 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 tillhandahåller en parameter för att generera datamängder med en populationsstorlek på 10,000 XNUMX. Observera att storleksparametern anger antalet levande medlemmar av befolkningen. Dessutom genererar Synthea också data för döda medlemmar av befolkningen som kan lägga till några extra datapunkter ovanpå den angivna urvalsstorleken.

Vänta tills datagenereringen är klar. Detta steg tar vanligtvis cirka en timme eller mindre. Synthea genererar flera datamängder, inklusive patients, medications, allergies, conditions, och mer. För det här inlägget använder vi tre av de resulterande datamängderna:

  • patienter.csv – Denna datauppsättning är cirka 3.2 MB och innehåller cirka 11,000 25 rader med patientdata (XNUMX kolumner inklusive patient-ID, födelsedatum, kön, adress och mer)
  • villkor.csv – Denna datauppsättning är cirka 47 MB ​​och innehåller cirka 370,000 XNUMX rader med medicinskt tillståndsdata (sex kolumner inklusive patient-ID, tillståndets startdatum, tillståndskod och mer)
  • observations.csv – Denna datauppsättning är cirka 830 MB och innehåller cirka 5 miljoner rader med observationsdata (åtta kolumner inklusive patient-ID, observationsdatum, observationskod, värde och mer)

Det finns ett en-till-många-förhållande mellan patients och conditions datauppsättningar. Det finns också en en-till-många-relation mellan patients och observations datauppsättningar. För en detaljerad dataordbok, se CSV-fildataordbok.

  1. För att ladda upp de genererade datamängderna till en källbucket i Amazon S3, kör följande kommandon i terminalsessionen:
    $ cd ./output/csv
    $ aws s3 sync . s3://<source bucket name>/

Starta Data Wrangler

Välja SageMaker-resurser på navigeringssidan i Studio och på Projekt meny, välj Data Wrangler för att skapa ett Data Wrangler-dataflöde. För detaljerade steg hur du startar Data Wrangler från Studio, se Kom igång med Data Wrangler.

Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Importera datum

För att importera din data, utför följande steg:

  1. Välja Amazon S3 och leta upp patient.csv-filen i S3-bucket.
  2. I Detaljer välj Först K för provtagning.
  3. ange 1100 för Provstorlek.
    I förhandsgranskningsfönstret hämtar Data Wrangler de första 100 raderna från datamängden och listar dem som en förhandsgranskning.
  4. Välja Importera.
    Data Wrangler väljer ut de första 1,100 11,000 patienterna från det totala antalet patienter (XNUMX XNUMX rader) som genereras av Synthea och importerar data. Samplingsmetoden låter Data Wrangler endast bearbeta exempeldata. Det gör det möjligt för oss att utveckla vårt dataflöde med en mindre datauppsättning, vilket resulterar i snabbare bearbetning och en kortare återkopplingsslinga. Efter att vi skapat dataflödet kan vi skicka in det utvecklade receptet till en SageMaker bearbetning jobb att horisontellt skala ut bearbetningen för hela eller större datauppsättningen på ett distribuerat sätt.
    Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
  5. Upprepa denna process för conditions och observations datauppsättningar.
    1. För conditions dataset, ange 37000 för Provstorlek, vilket är 1/10 av de totalt 370,000 XNUMX raderna som genereras av Synthea.
    2. För observations dataset, ange 500000 för Provstorlek, vilket är 1/10 av de totala observationerna 5 miljoner rader genererade av Synthea.

Du bör se tre datauppsättningar som visas i följande skärmdump.

Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Förvandla data

Datatransformation är processen att ändra strukturen, värdet eller formatet för en eller flera kolumner i datamängden. Processen utvecklas vanligtvis av en dataingenjör och kan vara utmanande för personer med mindre datatekniker att dechiffrera logiken som föreslås för transformationen. Datatransformation är en del av den bredare funktionsutvecklingsprocessen, och den korrekta sekvensen av steg är ett annat viktigt kriterium att tänka på när man utformar sådana recept.

Data Wrangler är designat för att vara ett lågkodsverktyg för att minska inträdesbarriären för effektiv dataförberedelse. Den kommer med över 300 förkonfigurerade datatransformationer som du kan välja mellan utan att behöva skriva en enda rad kod. I följande avsnitt ser vi hur man transformerar de importerade datamängderna i Data Wrangler.

Släpp kolumner i patients.csv

Vi släpper först några kolumner från patients dataset. Att ta bort redundanta kolumner tar bort icke-relevant information från datasetet och hjälper oss att minska mängden datorresurser som krävs för att bearbeta datamängden och träna en modell. I det här avsnittet släpper vi kolumner som SSN eller passnummer baserat på sunt förnuft att dessa kolumner inte har något prediktivt värde. Med andra ord hjälper de inte vår modell att förutsäga hjärtsvikt. Vår studie är inte heller bekymrad över andra kolumner som födelseort eller sjukvårdskostnaders påverkan på en patients hjärtsvikt, så vi släpper dem också. Redundanta kolumner kan också identifieras genom att köra de inbyggda analyserna som målläckage, funktionskorrelation, multikollinearitet och mer, som är inbyggda i Data Wrangler. För mer information om de analystyper som stöds, se Analysera och visualisera. Dessutom kan du använda Rapport för datakvalitet och insikter att utföra automatiserade analyser på datamängderna för att komma fram till en lista med redundanta kolumner att eliminera.

  1. Välj plustecknet bredvid Datatyper för datasetet patients.csv och välj Lägg till transform.
    Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
  2. Välja Lägg till steg Och välj Hantera kolumner.
    Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
  3. För Förvandla¸ välja Släpp kolumn.
  4. För Kolumner att släppa, välj följande kolumner:
    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älja Förhandsvisning för att granska den transformerade datamängden och välj sedan Lägg till.
    Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
    Du borde se steget Släpp kolumn i din lista över transformationer.
    Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Visa datum/tid i patients.csv

Nu använder vi funktionen Featurize datum/tid för att generera den nya funktionen Year från BIRTHDATE kolumn i patients dataset. Vi använder den nya funktionen i ett efterföljande steg för att beräkna en patients ålder vid tidpunkten för observation äger rum.

  1. I Trans rutan i din Släpp kolumn sida för patients dataset, välj Lägg till steg.
  2. Välj Ange datum/tid omvandla.
    Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
  3. Välja Extrahera kolumner.
  4. För Inmatningskolumner, lägg till kolumnen BIRTHDATE.
  5. Välja År och avmarkera Månad, Dag, timme, Minut, Sekund.
    Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
  6. Välja FörhandsvisningOch välj sedan Lägg till.

Lägg till transformationer i observations.csv

Data Wrangler stöder anpassade transformationer med Python (användardefinierade funktioner), PySpark, Pandas eller PySpark (SQL). Du kan välja din transformationstyp baserat på din förtrogenhet med varje alternativ och preferens. För de tre sistnämnda alternativen exponerar Data Wrangler variabeln df så att du kan komma åt dataramen och tillämpa transformationer på den. För en detaljerad förklaring och exempel, se Anpassade transformationer. I det här avsnittet lägger vi till tre anpassade transformeringar till observations datasätt.

  1. Lägg till en transformation till observations.csv och släpp DESCRIPTION kolonn.
    Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
  2. Välja FörhandsvisningOch välj sedan Lägg till.
  3. I Trans välj Lägg till steg Och välj Anpassad transformation.
  4. Välj på rullgardinsmenyn Python (Pandor).
    Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
  5. Ange följande kod:
    df = df[df["CODE"].isin(['8867-4','8480-6','8462-4','39156-5','777-3'])]

    Det här är LONIC-koder som motsvarar följande observationer som vi är intresserade av att använda som funktioner för att förutsäga hjärtsvikt:

    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älja FörhandsvisningOch välj sedan Lägg till.
  7. Lägg till en transformation för att extrahera Year och Quarter från DATE kolonn.
    Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
  8. Välja FörhandsvisningOch välj sedan Lägg till.
  9. Välja Lägg till steg Och välj Anpassad transformation.
  10. Välj på rullgardinsmenyn Python (PySpark).
    Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
    De fem typerna av observationer kanske inte alltid registreras på samma datum. En patient kan till exempel besöka sin husläkare den 21 januari och få sitt systoliska blodtryck, diastoliskt blodtryck, hjärtfrekvens och kroppsmassaindex mätt och registrerat. Ett labbtest som inkluderar blodplättar kan dock göras vid ett senare tillfälle den 2 februari. Därför är det inte alltid möjligt att ansluta dataramar före observationsdatumet. Här sammanfogar vi dataramar på en grov granularitet på kvartalsbasis.
  11. Ange följande kod:
    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älja FörhandsvisningOch välj sedan Lägg till.
  13. Välja Lägg till stegOch välj sedan Hantera rader.
  14. För Förvandlaväljer Släpp dubbletter.
    Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
  15. Välja FörhandsvisningOch välj sedan Lägg till.
  16. Välja Lägg till steg Och välj Anpassad transformation.
  17. Välj på rullgardinsmenyn Python (Pandor).
  18. Ange följande kod för att ta ett genomsnitt av datapunkter som delar samma tidsvärde:
    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älja FörhandsvisningOch välj sedan Lägg till.
    Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Gå med patient.csv och observations.csv

I det här steget visar vi hur man effektivt och enkelt utför komplexa kopplingar på datamängder utan att skriva någon kod via Data Wranglers kraftfulla användargränssnitt. För att lära dig mer om de typer av anslutningar som stöds, se Transformera data.

  1. Till höger om Transform: patients.csv, välj plustecknet bredvid Steg Och välj Ansluta sig.
    Du kan se filen transformed patients.csv listad under dataset i den vänstra rutan.
    Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
  2. Till höger om Transform: observations.csv, Klicka på Steg för att initiera sammanfogningen.
    Den transformerade observations.csv-filen listas nu under dataset i den vänstra rutan.
    Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
  3. Välja Inställd.
  4. För Gå med Typväljer Inre.
  5. För Vänsterväljer Id.
  6. För Högerväljer Patienten.
  7. Välja FörhandsvisningOch välj sedan Lägg till.
    Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Lägg till en anpassad transformation till de sammanfogade datamängderna

I detta steg beräknar vi en patients ålder vid observationstillfället. Vi släpper även kolumner som inte längre behövs.

  1. Välj plustecknet bredvid 1:a Gå med Och välj Lägg till transform.
  2. Lägg till en anpassad transformation i Pandas:
    df['age'] = df['DATE_year'] - df['BIRTHDATE_year']
    df = df.drop(columns=['BIRTHDATE','DEATHDATE','BIRTHDATE_year','patient'])

  3. Välja FörhandsvisningOch välj sedan Lägg till.

Lägg till anpassade omvandlingar till conditions.csv

  1. Välj plustecknet bredvid Transform: conditions.csv Och välj Lägg till transform.
  2. Lägg till en anpassad transformation i Pandas:
    df = df[df["CODE"].isin(['84114007', '88805009', '59621000', '44054006', '53741008', '449868002', '49436004'])]
    df = df.drop(columns=['DESCRIPTION','ENCOUNTER','STOP'])

Notera: Som vi visade tidigare kan du släppa kolumner antingen med anpassad kod eller med de inbyggda transformationerna som tillhandahålls av Data Wrangler. Anpassade transformationer inom Data Wrangler ger flexibiliteten att ta med din egen transformationslogik i form av kodavsnitt i de ramverk som stöds. Dessa utdrag kan senare sökas och tillämpas vid behov.

Koderna i den föregående transformationen är SNOMED-CT-koder som motsvarar följande villkor. De heart failure or chronic congestive heart failure skick blir etiketten. Vi använder de återstående tillstånden som funktioner för att förutsäga hjärtsvikt. Vi släpper också några kolumner som inte längre behövs.

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

  1. Låt oss sedan lägga till en anpassad 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 utför en vänster yttre sammanfogning för att behålla alla poster i hjärtsviktsdataramen. En ny kolumn has_xxx beräknas för varje tillstånd förutom hjärtsvikt baserat på tillståndets startdatum. Vi är bara intresserade av medicinska tillstånd som registrerades före hjärtsvikten och använder dem som funktioner för att förutsäga hjärtsvikt.

  2. Lägg till en inbyggd Hantera kolumner transformera för att ta bort de redundanta kolumner som inte längre behövs:
    1. hypertension
    2. diabetes
    3. coronary
    4. smoke
    5. atrial
  3. Utdrag Year och  Quarter från heartfailure kolonn.
    Detta matchar granulariteten vi använde tidigare i transformationen av observations datasätt.
  4. Vi bör ha totalt 6 steg för conditions.csv.
    Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Anslut conditions.csv till den sammanfogade datamängden

Vi utför nu en ny sammanfogning för att sammanfoga villkorsdataset till det sammanfogade patients och observations datasätt.

  1. Välja Transform: 1:a gå med.
  2. Välj plustecknet och välj Ansluta sig.
  3. Välja Steg bredvid Transform: conditions.csv.
    Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
  4. Välja Inställd.
  5. För Gå med Typväljer Vänster yttre.
  6. För Vänsterväljer Id.
  7. För Högerväljer Patienten.
  8. Välja FörhandsvisningOch välj sedan Lägg till.
    Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Lägg till omvandlingar till de sammanfogade datamängderna

Nu när vi har alla tre datamängder sammanfogade, låt oss tillämpa några ytterligare transformationer.

  1. Lägg till följande anpassade transformation i PySpark så has_heartfailure blir vår etikettkolumn:
    from pyspark.sql.functions import col, when
    df = (
        df.withColumn("has_heartfailure", when(col("heartfailure").isNotNull(), 1).otherwise(0))
    )

  2. Lägg till följande anpassade 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 är bara intresserade av observationer som registrerats innan hjärtsviktstillståndet diagnostiseras och använder dem som funktioner för att förutsäga hjärtsvikt. Observationer som tas efter att hjärtsvikt har diagnostiserats kan påverkas av den medicin som en patient tar, så vi vill utesluta dessa.

  3. Släpp de redundanta kolumner som inte längre behövs:
    1. Id
    2. DATE_year
    3. DATE_quarter
    4. patient
    5. heartfailure
    6. heartfailure_year
    7. heartfailure_quarter
  4. Analys flik, för Analystyp¸ välja Tabellöversikt.
    En snabb genomsökning av sammanfattningen visar att MARITAL kolumnen saknar data.
    Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
  5. Välj Data fliken och lägg till ett steg.
  6. Välja Handtag saknas.
  7. För Förvandlaväljer Fyllning saknas.
  8. För Inmatningskolumnerväljer ÄKTENSKAPLIG.
  9. För Fyll värde, stiga på S.
    Vår strategi här är att anta att patienten är singel om civilståndet saknar värde. Du kan ha en annan strategi.
    Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
  10. Välja FörhandsvisningOch välj sedan Lägg till.
  11. Fyll i det saknade värdet som 0 för has_hypertension, has_diabetes, has_coronary, has_smoke, has_atrial.

Marital och Gender är kategorivariabler. Data Wrangler har en inbyggd funktion för att koda kategorivariabler.

  1. Lägg till ett steg och välj Koda kategori.
  2. För Förvandlaväljer En het kodning.
  3. För Inmatningskolumnerväljer ÄKTENSKAPLIG.
  4. För Outputstilväljer Kolumn.
    Denna utdatastil producerar kodade värden i separata kolumner.
    Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
  5. Välja FörhandsvisningOch välj sedan Lägg till.
  6. Upprepa dessa steg för Kön kolonn.

Den enastående kodningen delar upp kolumnen Äktenskapliga Marital_M (gift) och Marital_S (enkel), och delar upp kolumnen Kön i Gender_M (hane) och Gender_F (kvinna). Därför att Marital_M och Marital_S utesluter varandra (som är Gender_M och Gender_F), kan vi släppa en kolumn för att undvika överflödiga funktioner.

  1. Drop Marital_S och Gender_F.

Numeriska funktioner som systolisk, hjärtfrekvens och ålder har olika enhetsstandarder. För en linjär regressionsbaserad modell måste vi först normalisera dessa numeriska egenskaper. Annars kan vissa funktioner med högre absolutvärden ha en obefogad fördel jämfört med andra funktioner med lägre absolutvärden och resultera i dålig modellprestanda. Data Wrangler har den inbyggda transformatorn Min-max scaler för att normalisera data. För en beslutsträdbaserad klassificeringsmodell krävs ingen normalisering. Vår studie är ett klassificeringsproblem så vi behöver inte tillämpa normalisering. Obalanserade klasser är ett vanligt problem vid klassificering. Obalans uppstår när träningsdataset innehåller kraftigt skev klassfördelning. Till exempel, när vår datauppsättning innehåller oproportionerligt fler patienter utan hjärtsvikt än patienter med hjärtsvikt, kan det göra att modellen är partisk mot att förutsäga ingen hjärtsvikt och presterar dåligt. Data Wrangler har en inbyggd funktion för att ta itu med problemet.

  1. Lägg till en anpassad transformation i Pandas för att konvertera datatyp av kolumner från "objekt"-typ till numerisk typ:
    import pandas as pd
    df=df.apply(pd.to_numeric)

  2. Välj Analys fliken.
  3. För Analystyp¸ välja Histogram.
  4. För X-axelväljer har_hjärtsvikt.
  5. Välja Förhandsvisning.
    Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
    Det är uppenbart att vi har en obalanserad klass (fler datapunkter märkta som ingen hjärtsvikt än datapunkter märkta som hjärtsvikt).
  6. Gå tillbaka till Data flik. Välja Lägg till steg Och välj Balansdata.
  7. För Målkolumnväljer har_hjärtsvikt.
  8. För Önskat förhållande, stiga på 1.
  9. För Förvandlaväljer slog.
    Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
    SMOTE står för Synthetic Minority Over-sampling Technique. Det är en teknik för att skapa nya minoritetsinstanser och lägga till datauppsättningen för att nå klassbalans. För detaljerad information, se SMOTE: Synthetic Minority Oversampling Technique.
  10. Välja FörhandsvisningOch välj sedan Lägg till.
  11. Upprepa histogramanalysen i steg 20-23. Resultatet är en balanserad klass.
    Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Visualisera målläckage och funktionskorrelation

Därefter kommer vi att utföra några visuella analyser med Data Wranglers rika verktygsuppsättning av avancerade ML-stödda analystyper. Först tittar vi på målläckage. Målläckage uppstår när data i träningsdatauppsättningen är starkt korrelerad med måletiketten, men inte är tillgänglig i verkliga data vid slutledningstidpunkten.

  1. Fliken Analys, För Analystyp¸ välja Målläckage.
  2. För Problemtypväljer klassificering.
  3. För Måletväljer har_hjärtsvikt.
  4. Välja Förhandsvisning.
    Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
    Baserat på analysen, hr är ett målläckage. Vi släpper det i ett efterföljande steg. age flaggas som ett målläckage. Det är rimligt att säga att en patients ålder kommer att vara tillgänglig under slutledningstid, så vi behåller ålder som en funktion. Systolic och diastolic flaggas också som troligt målläckage. Vi förväntar oss att ha de två mätningarna under inferenstiden, så vi behåller dem som funktioner.
  5. Välja Lägg till för att lägga till analysen.

Sedan tittar vi på egenskapskorrelation. Vi vill välja funktioner som är korrelerade med målet men som är okorrelerade sinsemellan.

  1. Fliken Analys, För Analystyp¸ välja Funktionskorrelation.
  2. För Korrelationstyp¸ välja linjär.
  3. Välja Förhandsvisning.
    Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Koefficientpoängen indikerar starka korrelationer mellan följande par:

  • systolic och diastolic
  • bmi och age
  • has_hypertension och has_heartfailure (märka)

För egenskaper som är starkt korrelerade är matriser beräkningsmässigt svåra att invertera, vilket kan leda till numeriskt instabila uppskattningar. För att mildra korrelationen kan vi helt enkelt ta bort en från paret. Vi släpper diastolic och bmi och behåll systolic och age i ett efterföljande steg.

Släpp diastoliska och bmi kolumner

Lägg till ytterligare transformeringssteg för att släppa hr, diastolic och bmi kolumner med den inbyggda transformationen.

Skapa rapporten Datakvalitet och insikter

AWS nyligen meddelade den nya datakvalitets- och insiktsrapportfunktionen i Data Wrangler. Den här rapporten verifierar automatiskt datakvaliteten och upptäcker avvikelser i din data. Dataforskare och dataingenjörer kan använda detta verktyg för att effektivt och snabbt tillämpa domänkunskap för att bearbeta datamängder för ML-modellutbildning. Detta steg är valfritt. Utför följande steg för att generera den här rapporten på våra datauppsättningar:

  1. Analys flik, för Analystypväljer Rapport för datakvalitet och insikter.
  2. För Målkolumnväljer har_hjärtsvikt.
  3. För Problemtyp, Välj Klassificering.
  4. Välja Skapa.
    Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

På några minuter genererar den en rapport med en sammanfattning, bilder och rekommendationer.

Skapa en snabbmodellanalys

Vi har slutfört vår dataförberedelse, rengöring och funktionsteknik. Data Wrangler har en inbyggd funktion som ger en grov uppskattning av den förväntade predikterade kvaliteten och prediktionskraften hos funktioner i vår datauppsättning.

  1. Analys flik, för Analystyp¸ välja Snabb modell.
  2. För etikettväljer har_hjärtsvikt.
  3. Välja Förhandsvisning.
    Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Enligt vår snabbmodellanalys kan vi se funktionen has_hypertension har den högsta poängen för funktionsviktighet bland alla funktioner.

Exportera data och träna modellen

Låt oss nu exportera de transformerade ML-förberedda funktionerna till en destination S3-bucket och skala hela funktionsteknikpipelinen som vi har skapat hittills med hjälp av proverna till hela datasetet på ett distribuerat sätt.

  1. Välj plustecknet bredvid den sista rutan i dataflödet och välj Lägg till destination.
  2. Välja Amazon S3.
    Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
  3. Ange ett Datasetnamn. För Amazon S3 plats, välj en S3-skopa och välj sedan Lägg till destination.
  4. Välja Skapa jobb för att starta ett distribuerat PySpark-bearbetningsjobb för att utföra transformationen och mata ut data till destinations S3-bucket.
    Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
    Beroende på storleken på datamängderna låter det här alternativet oss enkelt konfigurera klustret och skala horisontellt utan kod. Vi behöver inte oroa oss för att partitionera datamängderna eller hantera klustret och Spark-internerna. Allt detta sköts automatiskt för oss av Data Wrangler.
  5. Välj i den vänstra rutan Nästa, 2. Konfigurera jobb.
    Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
  6. Sedan Välj Körning.
    Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Alternativt kan vi också exportera den transformerade utgången till S3 via en Jupyter Notebook. Med detta tillvägagångssätt genererar Data Wrangler automatiskt en Jupyter-anteckningsbok med all kod som behövs för att starta ett bearbetningsjobb för att tillämpa dataflödesstegen (skapade med hjälp av ett exempel) på den större fullständiga datamängden och använda den transformerade datamängden som funktioner för att kick- sluta ett träningsjobb senare. Den bärbara koden kan enkelt köras med eller utan att göra ändringar. Låt oss nu gå igenom stegen för hur man får detta gjort via Data Wranglers användargränssnitt.

  1. Välj plustecknet bredvid det sista steget i dataflödet och välj Exportera till.
  2. Välja Amazon S3 (via Jupyter Notebook).
    Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
  3. Den öppnar automatiskt en ny flik med en Jupyter-anteckningsbok.
  4. I Jupyter-anteckningsboken, lokalisera cellen i (Valfritt) Nästa steg avsnitt och ändra run_optional_steps från False till True.
    De aktiverade valfria stegen i notebook-datorn utför följande:
    • Träna en modell med XGBoost
      Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
  5. Gå tillbaka till toppen av anteckningsboken och på Körning meny, välj Kör alla celler.

Om du använder den genererade anteckningsboken som den är, startar den ett SageMaker-bearbetningsjobb som skalar ut bearbetningen över två m5.4xlarge instanser för att bearbeta hela datasetet på S3-skopan. Du kan justera antalet instanser och instanstyper baserat på datauppsättningsstorleken och den tid du behöver för att slutföra jobbet.

Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Vänta tills träningsjobbet från den sista cellen är klart. Den genererar en modell i SageMakers standard S3-hink.

Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Den tränade modellen är redo för distribution för antingen realtidsslutning eller batchtransformation. Observera att vi använde syntetisk data för att demonstrera funktioner i Data Wrangler och använde bearbetad data för träningsmodell. Med tanke på att data vi använde är syntetiska, är slutledningsresultatet från den tränade modellen inte avsett för diagnos av medicinska tillstånd i verkligheten eller ersättning av bedömningar från läkare.

Du kan också exportera din transformerade datauppsättning direkt till Amazon S3 genom att välja Exportera överst på förhandsgranskningssidan för transform. Alternativet för direktexport exporterar endast det transformerade provet om sampling aktiverades under importen. Det här alternativet passar bäst om du har att göra med mindre datauppsättningar. Den transformerade datan kan också matas in direkt i en funktionsbutik. För mer information, se Amazon SageMaker Feature Store. Dataflödet kan också exporteras som en SageMaker-pipeline som kan orkestreras och schemaläggas enligt dina krav. För mer information, se Amazon SageMaker-rörledningar.

Slutsats

I det här inlägget visade vi hur man använder Data Wrangler för att bearbeta sjukvårdsdata och utföra skalbar funktionsteknik på ett verktygsdrivet sätt med låg kod. Vi lärde oss hur man tillämpar de inbyggda transformationerna och analyserna på lämpligt sätt där det behövs, och kombinerar det med anpassade transformationer för att lägga till ännu mer flexibilitet till vårt arbetsflöde för dataförberedelse. Vi gick också igenom de olika alternativen för att skala ut dataflödesreceptet via distribuerade bearbetningsjobb. Vi lärde oss också hur de transformerade data enkelt kan användas för att träna en modell för att förutsäga hjärtsvikt.

Det finns många andra funktioner i Data Wrangler som vi inte har behandlat i det här inlägget. Utforska vad som är möjligt i Förbered ML-data med Amazon SageMaker Data Wrangler och lär dig hur du använder Data Wrangler för ditt nästa datavetenskaps- eller maskininlärningsprojekt.


Om författarna

Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Forrest Sun är Senior Solution Architect med AWS Public Sector-teamet i Toronto, Kanada. Han har arbetat inom vård- och finansbranschen de senaste två decennierna. Utanför jobbet tycker han om att campa med familjen.

Funktionsteknik i stor skala för hälsovård och biovetenskap med Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Arunprasath Shankar är en artificiell intelligens och maskininlärning (AI / ML) specialistlösningsarkitekt med AWS, som hjälper globala kunder att skala sina AI-lösningar effektivt och effektivt i molnet. På fritiden tycker Arun om att titta på sci-fi-filmer och lyssna på klassisk musik.

Tidsstämpel:

Mer från AWS maskininlärning