Dela via


Mosaic AutoML-dataförberedelse och bearbetning

Den här artikeln beskriver hur Mosaic AutoML förbereder data för maskininlärningsträning och beskriver konfigurerbara datainställningar. Du kan justera de här alternativen under experimentkonfigurationen i AutoML-användargränssnittet. Information om hur du konfigurerar dessa inställningar med autoML-API:et finns i Referens för AutoML Python API.

Datafunktionstyper som stöds

Funktionstyper som inte visas nedan stöds inte. Bilder stöds till exempel inte.

Följande funktionstyper stöds:

  • Numeriska (ByteType, ShortType, IntegerType, LongType, FloatTypeoch DoubleType)
  • Booleskt
  • Sträng (kategorisk eller engelsk text)
  • Tidsstämplar (TimestampType, DateType)
  • ArrayType[Numerisk] (Databricks Runtime 10.4 LTS ML och senare)
  • DecimalType (Databricks Runtime 11.3 LTS ML och senare)

Kolumnmarkering

Kommentar

Den här funktionen är endast tillgänglig för klassificerings- och regressionsproblem

I Databricks Runtime 10.3 ML och senare kan du ange vilka kolumner AutoML ska använda för träning. Om du vill exkludera en kolumn i användargränssnittet avmarkerar du den i kolumnen Inkludera . Använd parametern i API:et exclude_cols . Mer information finns i Mosaic AutoML Python API-referens.

Du kan inte släppa den valda kolumnen som förutsägelsemål eller som tidskolumn för att dela upp data.

Som standard ingår alla kolumner.

Impute saknade värden

I Databricks Runtime 10.4 LTS ML och senare kan du ange hur null-värden ska imputeras. I användargränssnittet väljer du en metod i listrutan i kolumnen Impute with i tabellschemat. Använd parametern i API:et imputers . Mer information finns i Mosaic AutoML Python API-referens.

Som standard väljer AutoML en imputationsmetod baserat på kolumntyp och innehåll.

Kommentar

Om du anger en imputationsmetod som inte är standard utför AutoML inte semantisk typidentifiering.

Dela upp data i tränings-, validerings- och testuppsättningar

AutoML delar upp dina data i tre delar för träning, validering och testning. Beroende på typen av ML-problem har du olika alternativ för att dela upp data.

Dela upp data för regression och klassificering

Använd följande metoder för att dela in data i tränings-, validerings- och testuppsättningar för regressions- och klassificeringsuppgifter:

(Standard) Slumpmässig delning: Om en strategi för datadelning inte har angetts delas datamängden slumpmässigt upp i 60 % träningsdelning, 20 % verifierar delning och 20 % testdelning. För klassificering säkerställer en stratifierad slumpmässig uppdelning att varje klass är tillräckligt representerad i tränings-, validerings- och testuppsättningarna.

Kronologisk delning: I Databricks Runtime 10.4 LTS ML och senare kan du välja en tidskolumn för att skapa kronologiska tränings-, verifierings- och testdelningar. Kronologiska delningar använder de tidigaste datapunkterna för träning, den näst tidigaste för validering och de senaste testpunkterna. Tidskolumnen kan vara en tidsstämpel, heltal eller strängkolumn.

Manuell delning: I Databricks Runtime 15.3 ML och senare kan du använda API:et för att konfigurera en manuell delning. Ange en delad kolumn och använd värdena train, validateeller test för att identifiera rader som du vill använda för träning, validering och testning av datauppsättningar. Alla rader med andra delade kolumnvärden än train, testeller validate ignoreras och en motsvarande avisering genereras.

Dela upp data för prognostisering

För prognostiseringsaktiviteter använder AutoML tidsserier för korsvalidering. Den här metoden utökar inkrementellt träningsdatauppsättningen kronologiskt och utför validering på efterföljande tidpunkter. Korsvalidering ger en robust utvärdering av en modells prestanda över olika tidssegment. Det säkerställer att prognosmodellen testas noggrant mot osynliga framtida data, vilket bibehåller relevansen och noggrannheten för förutsägelser.

Antalet korsvalideringsveckningar beror på indatatabellens egenskaper, till exempel antalet tidsserier, förekomsten av samvariat och tidsserielängden.

Sampling av stora datamängder

Kommentar

Sampling tillämpas inte på prognosproblem.

Även om AutoML distribuerar hyperparameterjusteringsförsök över arbetsnoderna i ett kluster tränas varje modell på en enda arbetsnod.

AutoML uppskattar automatiskt det minne som krävs för att läsa in och träna datauppsättningen och tar datamängden exempel vid behov.

I Databricks Runtime 9.1 LTS ML via Databricks Runtime 10.4 LTS ML beror samplingsfraktionen inte på klustrets nodtyp eller mängden minne på varje nod.

I Databricks Runtime 11.x ML:

  • Samplingsfraktionen ökar för arbetsnoder som har mer minne per kärna. Du kan öka exempelstorleken genom att välja en minnesoptimerad instanstyp.
  • Du kan öka exempelstorleken ytterligare genom att välja ett större värde för spark.task.cpus i Spark-konfigurationen för klustret. Standardinställningen är 1. det maximala värdet är antalet processorer på arbetsnoden. När du ökar det här värdet är exempelstorleken större, men färre utvärderingsversioner körs parallellt. I en dator med fyra kärnor och 64 GB totalt RAM-minne kör standardinställningen spark.task.cpus=1 fyra utvärderingsversioner per arbetare, där varje utvärderingsversion är begränsad till 16 GB RAM-minne. Om du anger spark.task.cpus=4kör varje arbetare bara en utvärderingsversion, men den utvärderingsversionen kan använda 64 GB RAM-minne.

I Databricks Runtime 12.2 LTS ML och senare kan AutoML träna på större datamängder genom att allokera fler CPU-kärnor per träningsuppgift. Du kan öka exempelstorleken genom att välja en instansstorlek med mer totalt minne.

I Databricks Runtime 11.3 LTS ML och senare visas samplingsfraktionen på fliken Översikt i användargränssnittet om AutoML samplade datamängden.

För klassificeringsproblem använder AutoML PySpark-metoden sampleBy för stratifierad sampling för att bevara måletikettfördelningen.

För regressionsproblem använder AutoML PySpark-metoden sample .

Stöd för obalanserad datamängd för klassificeringsproblem

I Databricks Runtime 11.3 LTS ML och senare, om AutoML upptäcker att en datauppsättning är obalanserad, försöker den minska obalansen i träningsdatauppsättningen genom att fördela de större klasserna och lägga till klassvikter. AutoML balanserar endast träningsdatauppsättningen och balanserar inte test- och valideringsdatauppsättningarna. Detta säkerställer att modellprestanda alltid utvärderas på den icke-berikade datamängden med den sanna indataklassfördelningen.

För att balansera en obalanserad träningsdatauppsättning använder AutoML klassvikter som är omvänt relaterade till i vilken grad en viss klass är nedsamplad. Om en träningsdatauppsättning med 100 exempel till exempel har 95 prover som tillhör klass A och fem exempel som hör till klass B, minskar AutoML denna obalans genom att koppla ned klass A till 70 exempel, det vill säga nedsampling av klass A med förhållandet 70/95 eller 0,736 samtidigt som antalet prover i klass B hålls 5. För att säkerställa att den slutliga modellen är korrekt kalibrerad och sannolikhetsfördelningen för modellutdata är densamma som för indata skalar AutoML upp klassvikten för klass A med förhållandet 1/0,736 eller 1,358, samtidigt som vikten för klass B hålls som 1. AutoML använder sedan dessa klassvikter i modellträning som en parameter för att säkerställa att exemplen från varje klass viktas korrekt när modellen tränas.

Aggregering av tidsserier

För prognostiseringsproblem använder AutoML medelvärdet av värdena när det finns flera värden för en tidsstämpel i en tidsserie.

Om du vill använda summan i stället redigerar du den källkodsanteckningsbok som genereras av utvärderingskörningarna. I cellen Aggregera data efter ... ändrar du .agg(y=(target_col, "avg")) till .agg(y=(target_col, "sum")), enligt följande:

group_cols = [time_col] + id_cols
df_aggregation = df_loaded \
  .groupby(group_cols) \
  .agg(y=(target_col, "sum")) \
  .reset_index() \
  .rename(columns={ time_col : "ds" })

Identifiering av semantisk typ

Kommentar

  • Identifiering av semantisk typ tillämpas inte på prognosproblem.
  • AutoML utför inte semantisk typidentifiering för kolumner som har anpassade imputationsmetoder angivna.

Med Databricks Runtime 9.1 LTS ML och senare försöker AutoML identifiera om kolumner har en semantisk typ som skiljer sig från Spark- eller Pandas-datatypen i tabellschemat. AutoML behandlar dessa kolumner som den identifierade semantiska typen. Dessa identifieringar är bästa möjliga och kan ibland missa förekomsten av semantiska typer. Du kan också ange semantisk typ av en kolumn manuellt eller be AutoML att inte tillämpa semantisk typidentifiering på en kolumn med hjälp av anteckningar.

Mer specifikt gör AutoML dessa justeringar:

  • Sträng- och heltalskolumner som representerar datum- eller tidsstämpeldata behandlas som en tidsstämpeltyp.
  • Strängkolumner som representerar numeriska data behandlas som en numerisk typ.

Med Databricks Runtime 10.1 ML och senare gör AutoML även dessa justeringar:

  • Numeriska kolumner som innehåller kategoriska ID:n behandlas som en kategorisk funktion.
  • Strängkolumner som innehåller engelsk text behandlas som en textfunktion.

Anteckningar av semantisk typ

Med Databricks Runtime 10.1 ML och senare kan du manuellt styra den tilldelade semantiska typen genom att placera en semantisk typanteckning i en kolumn. Om du vill kommentera den semantiska typen av kolumn <column-name> manuellt som <semantic-type>använder du följande syntax:

metadata_dict = df.schema["<column-name>"].metadata
metadata_dict["spark.contentAnnotation.semanticType"] = "<semantic-type>"
df = df.withMetadata("<column-name>", metadata_dict)

<semantic-type> kan vara något av följande:

  • categorical: Kolumnen innehåller kategoriska värden (till exempel numeriska värden som ska behandlas som ID:n).
  • numeric: Kolumnen innehåller numeriska värden (till exempel strängvärden som kan parsas till tal).
  • datetime: Kolumnen innehåller tidsstämpelvärden (sträng-, numeriska eller datumvärden som kan konverteras till tidsstämplar).
  • text: Strängkolumnen innehåller engelsk text.

Om du vill inaktivera identifiering av semantisk typ i en kolumn använder du den särskilda nyckelordsanteckningen native.

Integrering av funktionslager

Med Databricks Runtime 11.3 LTS ML och senare kan du använda befintliga funktionstabeller i Funktionsarkiv för att utöka den ursprungliga indatauppsättningen för dina klassificerings- och regressionsproblem.

Med Databricks Runtime 12.2 LTS ML och senare kan du använda befintliga funktionstabeller i Funktionsarkiv för att utöka den ursprungliga indatauppsättningen för alla dina AutoML-problem: klassificering, regression och prognostisering.

Information om hur du skapar en funktionstabell finns i Funktionsutveckling och servering.

Om du vill använda befintliga funktionstabeller kan du välja funktionstabeller med AutoML-användargränssnittet eller ange parametern feature_store_lookups i autoML-körningsspecifikationen.

feature_store_lookups = [
  {
     "table_name": "example.trip_pickup_features",
     "lookup_key": ["pickup_zip", "rounded_pickup_datetime"],
  },
  {
      "table_name": "example.trip_dropoff_features",
     "lookup_key": ["dropoff_zip", "rounded_dropoff_datetime"],
  }
]

Notebook-exempel: AutoML-experiment med Funktionsarkiv

Följande notebook-fil visar hur du tränar en ML-modell med funktionstabeller för AutoML och Funktionsarkiv.

AutoML-experiment med Exempelanteckningsbok för Funktionsarkiv

Hämta notebook-fil