Sdílet prostřednictvím


Příprava dat na regresi

Tento článek popisuje, jak AutoML připravuje data pro trénování regrese a popisuje konfigurovatelná nastavení dat. Tyto možnosti můžete upravit během nastavení experimentu v uživatelském rozhraní AutoML.

Informace o konfiguraci těchto nastavení pomocí rozhraní API AutoML najdete v referenčních informacích k rozhraní Python API autoML.

Podporované datové typy funkcí

Podporují se jenom níže uvedené typy funkcí. Obrázky se například nepodporují .

Podporují se následující typy funkcí:

  • Číselné (ByteType, , IntegerTypeShortTypeLongType, , FloatTypea )DoubleType
  • Logická hodnota
  • Řetězec (kategorický nebo anglický text)
  • Časové razítka (TimestampType, DateType)
  • ArrayType[Numeric] (Databricks Runtime 10.4 LTS ML a vyšší)
  • DecimalType (Databricks Runtime 11.3 LTS ML a vyšší)

Imputovat chybějící hodnoty

V Databricks Runtime 10.4 LTS ML a novějších můžete určit, jak jsou imputovány hodnoty null. V uživatelském rozhraní vyberte metodu z rozevíracího seznamu v impute se sloupcem ve schématu tabulky. V rozhraní API použijte imputers parametr. Další informace najdete v tématu Referenční informace k rozhraní PYTHON API pro AutoML.

AutoML ve výchozím nastavení vybere metodu imputace na základě typu sloupce a obsahu.

Poznámka:

Pokud zadáte metodu bez výchozí imputace, AutoML neprovádí detekci sémantických typů.

Výběr sloupce

Ve službě Databricks Runtime 10.3 ML a vyšší můžete určit, které sloupce AutoML se mají použít pro trénování. Pokud chcete sloupec v uživatelském rozhraní vyloučit, zrušte jeho zaškrtnutí ve sloupci Zahrnout . V rozhraní API použijte exclude_cols parametr. Další informace najdete v tématu Referenční informace k rozhraní PYTHON API pro AutoML.

Sloupec vybraný jako cíl předpovědi nebo jako časový sloupec nelze rozdělit data.

Ve výchozím nastavení jsou zahrnuty všechny sloupce.

Rozdělení dat do trénovacích, ověřovacích a testovacích sad

AutoML rozdělí data do tří rozdělení pro trénování, ověřování a testování. V závislosti na typu problému ML máte různé možnosti rozdělení dat.

Pomocí následujících metod rozdělte data do trénovacích, ověřovacích a testovacích sad:

(Výchozí) Náhodné rozdělení: Pokud není zadaná strategie rozdělení dat, datová sada se náhodně rozdělí do 60% rozdělení trénování, 20% ověření rozdělení a 20% testovacího rozdělení. Pro klasifikaci stratifikovaný náhodný rozdělení zajišťuje, aby každá třída byla odpovídajícím způsobem reprezentována v trénovacích, ověřovacích a testovacích sadách.

Chronologické rozdělení: Ve službě Databricks Runtime 10.4 LTS ML a vyšší můžete vybrat časový sloupec pro vytvoření chronologického trénování, ověření a testování rozdělení. Chronologické rozdělení používají nejstarší datové body pro trénování, další nejstarší pro ověření a nejnovější body pro testování. Časový sloupec může být časové razítko, celé číslo nebo sloupec řetězce.

Ruční rozdělení: V Databricks Runtime 15.3 ML a vyšší můžete pomocí rozhraní API nastavit ruční rozdělení. Zadejte rozdělený sloupec a použijte hodnoty train, validatenebo test identifikujte řádky, které chcete použít pro trénování, ověřování a testování datových sad. Všechny řádky s jinými hodnotami rozděleného sloupce než train, testnebo validate jsou ignorovány a je vyvolána odpovídající výstraha.

Vzorkování velkých datových sad

I když AutoML distribuuje pokusy o ladění hyperparametrů napříč pracovními uzly clusteru, každý model se vytrénuje na jednom pracovním uzlu.

AutoML automaticky odhaduje paměť potřebnou k načtení a trénovat datovou sadu a v případě potřeby ji vzorkuje.

Verze databricks Runtime Chování vzorkování
9.1 LTS ML - 10.4 LTS ML Zlomek vzorkování je konstantní a nezávisí na typu uzlu clusteru nebo paměti na každém uzlu.
11.x ML Zlomek vzorkování se zvyšuje u pracovních uzlů s více pamětí na jádro. Zvětšení velikosti vzorku:

– Použijte typ instance optimalizovaný pro paměť.
– Upravte spark.task.cpus konfiguraci Sparku. Výchozí hodnota je 1 a maximální hodnota je počet procesorů na pracovním uzlu. Maximální hodnota je počet procesorů na pracovním uzlu. Když tuto hodnotu zvětšíte, velikost vzorku je větší, ale paralelně běží méně pokusů.

Příklad: Na počítači se 4 jádry a 64 GB RAM:

- S spark.task.cpus=1, čtyři pokusy běží na pracovní proces, každý pomocí 16 GB RAM.
- Při spark.task.cpus=4použití jedné zkušební verze na pracovní proces se používá všech 64 GB PAMĚTI RAM.
11.3 LTS ML a vyšší Pokud AutoML ukázkuje datovou sadu, zlomek vzorkování se zobrazí na kartě Přehled v uživatelském rozhraní.
12.2 LTS ML a vyšší AutoML dokáže zpracovat větší datové sady přidělením více jader procesoru na trénovací úlohu. Zvětšete velikost vzorku výběrem instance s větší celkovou pamětí.

Pro problémy klasifikace používá AutoML metodu PySpark sampleBy pro stratifikované vzorkování k zachování distribuce cílového popisku.

Pro regresní problémy používá AutoML metodu PySpark sample .

Detekce sémantických typů

Poznámka:

S modulem Databricks Runtime 9.1 LTS ML a novějším se AutoML pokusí zjistit, jestli mají sloupce sémantický typ odlišný od datového typu Spark nebo pandas ve schématu tabulky. AutoML považuje tyto sloupce za rozpoznaný sémantický typ. Tyto detekce jsou co nejlepší a někdy mohou chybět existence sémantických typů. Pomocí poznámek můžete také ručně nastavit sémantický typ sloupce nebo autoML říct, aby se u sloupce nepoužádá detekce sémantických typů.

AutoML konkrétně provádí tyto úpravy:

  • Řetězcové a celočíselné sloupce představující data data nebo časové razítko se považují za typ časového razítka.
  • Řetězcové sloupce, které představují číselná data, se považují za číselný typ.

S modulem Databricks Runtime 10.1 ML a novějším provádí AutoML také tyto úpravy:

  • Číselné sloupce, které obsahují kategorické ID, se považují za kategorickou funkci.
  • Řetězcové sloupce, které obsahují anglický text, se považují za textovou funkci.

Sémantické poznámky k typu

S modulem Databricks Runtime 10.1 ML a novějším můžete ručně řídit přiřazený sémantický typ umístěním sémantického typu do sloupce. Pokud chcete ručně anotovat sémantický typ sloupce <column-name> jako <semantic-type>, použijte následující syntaxi:

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

<semantic-type> může být jedna z následujících možností:

  • categorical: Sloupec obsahuje kategorické hodnoty (například číselné hodnoty, které by se měly považovat za ID).
  • numeric: Sloupec obsahuje číselné hodnoty (například řetězcové hodnoty, které je možné analyzovat na čísla).
  • datetime: Sloupec obsahuje hodnoty časového razítka (řetězcové, číselné nebo datové hodnoty, které lze převést na časové razítko).
  • text: Sloupec s řetězcem obsahuje anglický text.

Chcete-li zakázat detekci sémantických typů ve sloupci, použijte speciální poznámku nativeklíčového slova .