Delen via


Gegevensvoorbereiding voor classificatie

Meer informatie over het gebruik van AutoML om uw gegevens voor te bereiden op classificatie.

In dit artikel wordt beschreven hoe AutoML gegevens voorbereidt voor classificatietraining en beschrijft configureerbare gegevensinstellingen. U kunt deze opties aanpassen tijdens het instellen van het experiment in de AutoML-gebruikersinterface.

Raadpleeg de Naslaginformatie over de Python-API voor AutoML voor het configureren van deze instellingen met behulp van de AutoML-API.

Ondersteunde gegevensfunctiestypen

Alleen de hieronder vermelde functietypen worden ondersteund. Afbeeldingen worden bijvoorbeeld niet ondersteund.

De volgende functietypen worden ondersteund:

  • Numeriek (, , , , , en FloatTypeDoubleType) LongTypeIntegerTypeShortTypeByteType
  • Booleaanse waarde
  • Tekenreeks (categorische of Engelse tekst)
  • Tijdstempels (TimestampType, DateType)
  • ArrayType[Numeriek] (Databricks Runtime 10.4 LTS ML en hoger)
  • DecimalType (Databricks Runtime 11.3 LTS ML en hoger)

Ontbrekende waarden invoeren

In Databricks Runtime 10.4 LTS ML en hoger kunt u opgeven hoe null-waarden worden ingevoerd. Selecteer in de gebruikersinterface een methode in de vervolgkeuzelijst in de kolom Impute in het tabelschema. Gebruik de imputers parameter in de API. Zie naslaginformatie over de AutoML Python-API voor meer informatie.

Standaard selecteert AutoML een imputatiemethode op basis van het kolomtype en de inhoud.

Notitie

Als u een niet-standaardimplicatiemethode opgeeft, voert AutoML geen semantische typedetectie uit.

Ondersteuning voor onevenwichtige gegevenssets voor classificatieproblemen

In Databricks Runtime 11.3 LTS ML en hoger, als AutoML detecteert dat een gegevensset onevenwichtig is, probeert deze de onevenwichtigheid van de trainingsgegevensset te verminderen door de primaire klasse(sen) te verlagen en klassegewichten toe te voegen. AutoML balancer alleen de trainingsgegevensset en brengt de test- en validatiegegevenssets niet in balans. Dit zorgt ervoor dat de modelprestaties altijd worden geëvalueerd op de niet-verrijkte gegevensset met de werkelijke distributie van invoerklassen.

Om een onevenwichtige trainingsgegevensset te verdelen, gebruikt AutoML klassegewichten die omgekeerd zijn gerelateerd aan de mate waarin een bepaalde klasse wordt downsampled. Als een trainingsgegevensset met 100 voorbeelden bijvoorbeeld 95 monsters bevat die behoren tot klasse A en vijf steekproeven die behoren tot klasse B, vermindert AutoML deze onevenwichtigheid door downsampling klasse A tot 70 steekproeven, dat wil gezegd, downsampling klasse A met een verhouding van 70/95 of 0,736 terwijl het aantal steekproeven in klasse B bij 5 wordt behouden. Om ervoor te zorgen dat het uiteindelijke model correct is gekalibreerd en de waarschijnlijkheidsverdeling van de modeluitvoer gelijk is aan die van de invoer, schaalt AutoML het klassegewicht voor klasse A op met de verhouding 1/0,736 of 1,358, terwijl het gewicht van klasse B als 1 wordt behouden. AutoML gebruikt deze klassegewichten in modeltraining vervolgens als parameter om ervoor te zorgen dat de steekproeven van elke klasse op de juiste wijze worden gewogen bij het trainen van het model.

Kolomselectie

In Databricks Runtime 10.3 ML en hoger kunt u opgeven welke kolommen AutoML moet gebruiken voor training. Als u een kolom wilt uitsluiten in de gebruikersinterface, schakelt u deze uit in de kolom Opnemen . Gebruik de exclude_cols parameter in de API. Zie naslaginformatie over de AutoML Python-API voor meer informatie.

U kunt de geselecteerde kolom niet verwijderen als het voorspellingsdoel of als de tijdkolom om de gegevens te splitsen.

Standaard worden alle kolommen opgenomen.

Gegevens splitsen in trainings-, validatie- en testsets

AutoML splitst uw gegevens in drie splitsingen voor training, validatie en testen. Afhankelijk van het type ML-probleem hebt u verschillende opties voor het splitsen van de gegevens.

Gebruik de volgende methoden om gegevens te verdelen in trainings-, validatie- en testsets:

(Standaard) Willekeurige splitsing: als er geen strategie voor gegevenssplitsing is opgegeven, wordt de gegevensset willekeurig gesplitst in 60% treinsplitsing, 20% validatie split en 20% testsplitsing. Voor classificatie zorgt een gelaagde willekeurige splitsing ervoor dat elke klasse voldoende wordt weergegeven in de trainings-, validatie- en testsets.

Chronologische splitsing: In Databricks Runtime 10.4 LTS ML en hoger kunt u een tijdkolom selecteren om chronologische train-, valideer- en testsplitsingen te maken. Chronologische splitsingen gebruiken de vroegste gegevenspunten voor training, de volgende vroegste voor validatie en de laatste punten voor het testen. De tijdkolom kan een tijdstempel, geheel getal of tekenreekskolom zijn.

Handmatig splitsen: in Databricks Runtime 15.3 ML en hoger kunt u de API gebruiken om een handmatige splitsing in te stellen. Geef een gesplitste kolom op en gebruik de waarden train, validateof test om rijen te identificeren die u wilt gebruiken voor het trainen, valideren en testen van gegevenssets. Rijen met andere waarden voor gesplitste kolommen dan train, testof validate worden genegeerd en er wordt een bijbehorende waarschuwing gegenereerd.

Steekproeven maken van grote gegevenssets

Hoewel AutoML hyperparameterafstemmingstests distribueert over de werkknooppunten van een cluster, wordt elk model getraind op één werkknooppunt.

AutoML maakt automatisch een schatting van het geheugen dat nodig is voor het laden en trainen van uw gegevensset en steekt de gegevensset indien nodig in.

Databricks Runtime-versie Gedrag van steekproeven
9.1 LTS ML - 10.4 LTS ML De steekproeffractie is constant en is niet afhankelijk van het knooppunttype of het geheugen van het cluster per knooppunt.
11.x ML De steekproeffractie neemt toe voor werkknooppunten met meer geheugen per kern. Ga als volgende te werk om de steekproefgrootte te vergroten:

- Gebruik een exemplaartype dat is geoptimaliseerd voor geheugen.
- Aanpassen spark.task.cpus in de Spark-configuratie. De standaardwaarde is 1 en de maximumwaarde is het aantal CPU's op het werkknooppunt. De maximumwaarde is het aantal CPU's op het werkknooppunt. Wanneer u deze waarde verhoogt, is de steekproefgrootte groter, maar worden er minder proefversies parallel uitgevoerd.

Voorbeeld: Op een machine met 4 kernen en 64 GB RAM:

- Met spark.task.cpus=1vier proefversies worden per werkrol uitgevoerd, elk met 16 GB RAM.
- Met spark.task.cpus=4één proefabonnement wordt per werkrol uitgevoerd, waarbij alle 64 GB RAM wordt gebruikt.
11.3 LTS ML en hoger Als AutoML de gegevensset steekt, wordt de steekproeffractie weergegeven op het tabblad Overzicht in de gebruikersinterface.
12.2 LTS ML en hoger AutoML kan grotere gegevenssets verwerken door meer CPU-kernen per trainingstaak toe te wijzen. Vergroot de steekproefgrootte door een exemplaar te selecteren met meer geheugen.

Voor classificatieproblemen gebruikt AutoML de PySpark-methode sampleBy voor gelaagde steekproeven om de distributie van het doellabel te behouden.

Voor regressieproblemen gebruikt AutoML de PySpark-methode sample .

Detectie van semantische typen

Notitie

  • AutoML voert geen semantische typedetectie uit voor kolommen waarvoor aangepaste imputatiemethoden zijn opgegeven.

Met Databricks Runtime 9.1 LTS ML en hoger probeert AutoML te detecteren of kolommen een semantisch type hebben dat verschilt van het gegevenstype Spark of pandas in het tabelschema. AutoML behandelt deze kolommen als het gedetecteerde semantische type. Deze detecties zijn best effort en kunnen soms het bestaan van semantische typen missen. U kunt ook handmatig het semantische type van een kolom instellen of AutoML laten weten dat de detectie van semantische typen niet moet worden toegepast op een kolom met behulp van aantekeningen.

AutoML past deze aanpassingen aan:

  • Tekenreeks- en geheel getalkolommen die datum- of tijdstempelgegevens vertegenwoordigen, worden behandeld als een tijdstempeltype.
  • Tekenreekskolommen die numerieke gegevens vertegenwoordigen, worden behandeld als een numeriek type.

Met Databricks Runtime 10.1 ML en hoger voert AutoML ook de volgende aanpassingen aan:

  • Numerieke kolommen die categorische id's bevatten, worden behandeld als een categorische functie.
  • Tekenreekskolommen die Engelse tekst bevatten, worden behandeld als een tekstfunctie.

Semantische aantekeningen

Met Databricks Runtime 10.1 ML en hoger kunt u handmatig het toegewezen semantische type beheren door een semantische typeaantekening op een kolom te plaatsen. Als u handmatig aantekeningen wilt maken voor het semantische type kolom <column-name> , <semantic-type>gebruikt u de volgende syntaxis:

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

<semantic-type> kan een van de volgende zijn:

  • categorical: De kolom bevat categorische waarden (bijvoorbeeld numerieke waarden die als id's moeten worden behandeld).
  • numeric: De kolom bevat numerieke waarden (bijvoorbeeld tekenreekswaarden die in getallen kunnen worden geparseerd).
  • datetime: De kolom bevat tijdstempelwaarden (tekenreeks, numerieke of datumwaarden die kunnen worden geconverteerd naar tijdstempels).
  • text: De tekenreekskolom bevat Engelse tekst.

Als u semantische typedetectie voor een kolom wilt uitschakelen, gebruikt u de speciale aantekening nativevan trefwoorden.