Příprava dat pro klasifikaci
Naučte se používat AutoML k přípravě dat na klasifikaci.
Tento článek popisuje, jak AutoML připravuje data pro trénování klasifikace 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í values
V Databricks Runtime 10.4 LTS ML a novějších můžete určit, jak jsou imputovány hodnoty null values. V uživatelském rozhraní použijte metodu select z rozevíracího seznamu v části Impute scolumn v rámci tableschema. 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 column a obsahu.
Poznámka:
Pokud zadáte metodu bez výchozí imputace, AutoML neprovádí detekci sémantických typů.
Podpora nevyvážené datové sady pro problémy klasifikace
Pokud AutoML v Databricks Runtime 11.3 LTS ML a vyšší zjistí, že datová sada je nevyvážená, pokusí se snížit nerovnováhu trénovací datové sady tak, že převzorkuje hlavní třídy a přidá váhy tříd. AutoML vyrovnává pouze trénovací datovou sadu a nevyrovná testovací a ověřovací datové sady. Tím zajistíte, že výkon modelu se vždy vyhodnotí u neprodušné datové sady s distribucí skutečné vstupní třídy.
K vyvážení nevyrovnané trénovací datové sady používá AutoML váhy tříd, které jsou inverzní související s stupněm, kterým je daná třída převzorkována. Pokud má například trénovací datová sada s 100 vzorky 95 vzorků patřících do třídy A a pět vzorků patřících do třídy B, AutoML tuto nerovnováhu sníží snížením převzorkování třídy A na 70 vzorků, tj. o převzorkování třídy A o poměr 70/95 nebo 0,736 a současně zachová počet vzorků ve třídě B na 5. Aby se zajistilo, že je konečný model správně kalibrován a rozdělení pravděpodobnosti výstupu modelu je stejné jako u vstupu, AutoML vertikálně navyšuje váhu třídy pro třídu A poměrem 1/0,736 nebo 1,358 při zachování hmotnosti třídy B jako 1. AutoML pak použije tyto váhy tříd v trénování modelu jako parametr, aby se zajistilo, že vzorky z každé třídy budou při trénování modelu správně vážené.
výběr Column
V Databricks Runtime 10.3 ML a vyšší můžete určit, který columns AutoML by měl použít pro trénování. Pokud chcete vyloučit column v uživatelském rozhraní, zrušte jeho zaškrtnutí v Zahrnoutcolumn. V rozhraní API použijte exclude_cols
parametr. Další informace najdete v tématu Referenční informace k rozhraní PYTHON API pro AutoML.
Nemůžete odstranit column vybranou jako cíl předpovědi ani jako čas column pro rozdělení dat.
Ve výchozím nastavení jsou zahrnuty všechny columns.
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 select čas column k vytvoření chronologických rozdělení pro trénování, ověřování a testování. Chronologické rozdělení používají nejstarší datové body pro trénování, další nejstarší pro ověření a nejnovější body pro testování. Čas column může být časové razítko, celé číslo nebo řetězec column.
ruční rozdělení: V Databricks Runtime 15.3 ML a vyšší verze můžete pomocí rozhraní API set nastavit ruční rozdělení. Zadejte rozdělený column a pomocí valuestrain
, 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 rozdělenými columnvalues kromě train
, test
nebo validate
se ignorují 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 columns, které mají vlastní imputace metody zadané.
S modulem Databricks Runtime 9.1 LTS ML a vyšší se AutoML snaží zjistit, zda columns má sémantický typ odlišný od datového typu Spark nebo pandas v tableschema. AutoML považuje tyto columns za zjištěný sémantický typ. Tyto detekce jsou co nejlepší a někdy mohou chybět existence sémantických typů. Můžete také ručně
AutoML konkrétně provádí tyto úpravy:
- Řetězec a celé číslo columns představující data nebo časové razítko jsou považovány za typ časového razítka.
- Řetězcové columns, 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é columns, které obsahují kategorické ID, se považují za kategorickou funkci.
- Řetězcové columns, které obsahují anglický text, se považují za textovou funkci.
Sémantické poznámky k typu
S pomocí Databricks Runtime 10.1 ML a vyšší můžete ručně řídit přiřazený sémantický typ umístěním sémantické poznámky k typu na column. Pokud chcete ručně anotovat sémantický typ column<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
: column obsahuje kategorické values (například číselné values, které by se měly považovat za ID). -
numeric
: column obsahuje číselné values (například řetězcové values, které lze analyzovat na čísla). -
datetime
: column obsahuje časové razítko values (řetězec, číselný údaj nebo datum values, který lze převést na časové razítko). -
text
: Řetězec column obsahuje anglický text.
Chcete-li zakázat detekci sémantických typů v column, použijte speciální poznámku klíčového slova native
.