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á 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 s 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 zaškrtnutí u sloupce Zahrnout. V rozhraní API použijte exclude_cols
parametr. Další informace najdete v tématu Referenční informace k rozhraní PYTHON API pro AutoML.
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ě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 novější 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
, validate
nebo 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
, test
nebo 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 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=4 použ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:
- AutoML neprovádí detekci sémantických typů pro sloupce, které mají vlastní imputace metody zadané.
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ů. 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
.