Delen via


Azure Databricks AutoML-gegevensvoorbereiding en -verwerking

In dit artikel wordt beschreven hoe Azure Databricks AutoML gegevens voorbereidt voor machine learning-training en hoe configureerbare gegevensinstellingen worden beschreven. 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

Functietypen die hieronder niet worden vermeld, worden niet 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)

Kolomselectie

Notitie

Deze functionaliteit is alleen beschikbaar voor classificatie- en regressieproblemen

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 azure Databricks AutoML Python API-naslaginformatie 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.

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 azure Databricks AutoML Python API-naslaginformatie 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.

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.

Gegevens splitsen voor regressie en classificatie

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

(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.

Gegevens splitsen voor prognose

Voor prognosetaken gebruikt AutoML kruisvalidatie van tijdreeksen. Deze methode breidt de trainingsgegevensset chronologisch uit en voert validatie uit op volgende tijdstippen. Kruisvalidatie biedt een robuuste evaluatie van de prestaties van een model ten opzichte van verschillende tijdelijke segmenten. Het zorgt ervoor dat het voorspellingsmodel grondig wordt getest op ongelezen toekomstige gegevens, waarbij de relevantie en nauwkeurigheid van voorspellingen behouden blijven.

Het aantal kruisvalidatievouwvouwen is afhankelijk van de kenmerken van de invoertabel, zoals het aantal tijdreeksen, de aanwezigheid van covariaties en de lengte van de tijdreeks.

Steekproeven maken van grote gegevenssets

Notitie

Steekproeven worden niet toegepast op prognoseproblemen.

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.

In Databricks Runtime 9.1 LTS ML via Databricks Runtime 10.4 LTS ML is de steekproeffractie niet afhankelijk van het knooppunttype van het cluster of de hoeveelheid geheugen op elk knooppunt.

In Databricks Runtime 11.x ML:

  • De steekproeffractie neemt toe voor werkknooppunten met meer geheugen per kern. U kunt de steekproefgrootte vergroten door een exemplaartype te kiezen dat is geoptimaliseerd voor geheugen.
  • U kunt de voorbeeldgrootte verder vergroten door een grotere waarde te kiezen voor spark.task.cpus in de Spark-configuratie voor het cluster. De standaardinstelling is 1; 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. In een machine met vier kernen en 64 GB totale RAM-geheugen worden spark.task.cpus=1 bijvoorbeeld vier proefversies per werkrol uitgevoerd, waarbij elke proefversie is beperkt tot 16 GB RAM. Als u instelt spark.task.cpus=4, voert elke werkrol slechts één proefversie uit, maar kan die proefversie 64 GB RAM gebruiken.

In Databricks Runtime 12.2 LTS ML en hoger kan AutoML trainen op grotere gegevenssets door meer CPU-kernen per trainingstaak toe te wijzen. U kunt de steekproefgrootte vergroten door een instantiegrootte met meer geheugen te kiezen.

Als In Databricks Runtime 11.3 LTS ML en hoger, als AutoML de gegevensset heeft gesampling, wordt de steekproeffractie weergegeven op het tabblad Overzicht in de gebruikersinterface.

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 .

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.

Tijdreeksaggregatie

Voor het voorspellen van problemen, wanneer er meerdere waarden voor een tijdstempel in een tijdreeks zijn, gebruikt AutoML het gemiddelde van de waarden.

Als u de som wilt gebruiken, bewerkt u het broncodenotitieblok dat door de proefversie wordt gegenereerd. Wijzig .agg(y=(target_col, "avg")) .agg(y=(target_col, "sum"))in de cel Aggregeren op ... in , zoals wordt weergegeven:

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" })

Detectie van semantische typen

Notitie

  • Semantische typedetectie wordt niet toegepast op prognoseproblemen.
  • 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.

Integratie van Feature Store

Met Databricks Runtime 11.3 LTS ML en hoger kunt u bestaande functietabellen in Feature Store gebruiken om de oorspronkelijke invoergegevensset voor uw classificatie- en regressieproblemen te verbeteren.

Met Databricks Runtime 12.2 LTS ML en hoger kunt u bestaande functietabellen in Feature Store gebruiken om de oorspronkelijke invoergegevensset voor al uw AutoML-problemen te verbeteren: classificatie, regressie en prognose.

Als u een functietabel wilt maken, raadpleegt u Wat is een functiearchief?

Als u bestaande functietabellen wilt gebruiken, kunt u functietabellen selecteren met de AutoML-gebruikersinterface of de feature_store_lookups parameter instellen in uw AutoML-uitvoeringsspecificatie.

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-voorbeeld: AutoML-experiment met Feature Store

In het volgende notebook ziet u hoe u een ML-model traint met functietabellen AutoML en Feature Store.

AutoML-experiment met voorbeeldnotitieblok van Feature Store

Notebook downloaden