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, ShortType, IntegerType, LongType, FloatType a DoubleType)
  • logický
  • Ř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 ve sloupci Nahradit ve schématu tabulky. V rozhraní API použijte imputers parametr. Další informace najdete v referenční příručce AutoML Python API.

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 zaškrtnutí u sloupce Zahrnout. V rozhraní API použijte exclude_cols parametr. Další informace najdete v referenční příručce AutoML Python API.

Nelze odstranit sloupec vybraný jako cíl předpovědi nebo jako časový sloupec k rozdělení dat.

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

Rozdělte data 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í specifikována strategie rozdělení dat, datová sada se náhodně rozdělí na 60% rozdělení tréninkové, 20% rozdělení validační a 20% rozdělení testovací. 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í: V Databricks Runtime 10.4 LTS ML a vyšších můžete vybrat časový sloupec pro chronologické rozdělení na trénovací, validační a testovací sady. 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 typu řetězec.

ruční rozdělení: V Databricks Runtime 15.3 ML a novějším můžete pomocí rozhraní API nastavit ruční rozdělení. Zadejte rozdělený sloupec a pomocí hodnot 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 vyvolá se 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 k trénování datové sady a vzorkuje ji, pokud je to nutné.

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ětším množstvím paměti na jádro. Zvětšení velikosti vzorku:
  • Použijte typ instance optimalizovaný pro paměť.
  • Upravte spark.task.cpus v 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=1běží čtyři pokusy na jednoho pracovníka, přičemž každý používá 16 GB paměti RAM.
  • S spark.task.cpus=4se spustí jedna zkušební verze na pracovníka s využitím 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 pro stratifikované vzorkování k zachování distribuce cílového označení.

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 vynakládají maximální úsilí a mohou někdy přehlédnout existenci sémantických typů. Můžete také ručně nastavit sémantický typ sloupce nebo pomocí poznámekříct AutoML, aby nepoužíval detekci sémantického typu u sloupce .

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

  • Řetězcové a celočíselné sloupce, které představují datum 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 anotace sémantického typu na sloupec. 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é lze 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 typu string obsahuje anglický text.

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