Förberedelse av data för klassificering
Lär dig hur du använder AutoML för att förbereda dina data för klassificering.
Den här artikeln beskriver hur AutoML förbereder data för klassificeringsträ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
Endast de funktionstyper som anges nedan stöds. Bilder stöds till exempel inte .
Följande funktionstyper stöds:
- Numeriska (
ByteType
,ShortType
,IntegerType
,LongType
,FloatType
ochDoubleType
) - 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)
Imputera 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 med i tabellschemat. Använd parametern i API:et imputers
. Mer information finns i 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.
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.
Kolumnmarkering
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 AutoML Python API-referens.
Du kan inte ta bort kolumnen som är markerad som prediktionsmål eller som tidskolumn för att dela upp data.
Som standard ingår alla kolumner.
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.
Använd följande metoder för att dela in data i tränings-, validerings- och testuppsättningar:
(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 indelning: I Databricks Runtime 10.4 LTS ML och senare kan du välja en tidskolumn för att skapa kronologiska tränings-, validerings- och testindelningar. 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
, validate
eller 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
, test
eller validate
ignoreras och en motsvarande avisering aktiveras.
Sampling av stora datamängder
Ä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.
Databricks Runtime-version | Samplingsbeteende |
---|---|
9.1 LTS ML - 10.4 LTS ML | Samplingsfraktionen är konstant och är inte beroende av klustrets nodtyp eller minne per nod. |
11.x ML | Samplingsfraktionen ökar för arbetsnoder med mer minne per kärna. Så här ökar du exempelstorleken: – Använd en minnesoptimerad instanstyp. – Justera spark.task.cpus i Spark-konfigurationen. Standardvärdet är 1 och det maximala värdet är antalet processorer på arbetsnoden. 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.Exempel: På en dator med 4 kärnor och 64 GB RAM-minne: – Med spark.task.cpus=1 kör fyra utvärderingsversioner per arbetare, var och en med 16 GB RAM-minne.– Med spark.task.cpus=4 , körs en utvärderingsversion per arbetare med alla 64 GB RAM-minne. |
11.3 LTS ML och senare | Om AutoML tar exempel på datamängden visas samplingsfraktionen på fliken Översikt i användargränssnittet. |
12.2 LTS ML och senare | AutoML kan hantera större datamängder genom att allokera fler CPU-kärnor per träningsuppgift. Öka exempelstorleken genom att välja en instans med mer totalt minne. |
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
.
Identifiering av semantisk typ
Kommentar
- AutoML utför inte semantisk typidentifiering för kolumner som har anpassade imputation angivna metoder.
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 den semantiska typen 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 manuellt <column-name>
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 i 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
.