AutoML v prostředcích infrastruktury (Preview)
AutoML (Automatizované strojové učení) je kolekce metod a nástrojů, které automatizují trénování a optimalizaci modelu strojového učení s malým zásahem člověka. Cílem AutoML je zjednodušit a urychlit proces výběru nejlepšího modelu strojového učení a hyperparametrů pro danou datovou sadu, který obvykle vyžaduje mnoho dovedností a výpočetního výkonu.
Důležité
Tato funkce je ve verzi Preview.
V Prostředcích infrastruktury můžou datoví vědci automatizovat flaml.AutoML
úlohy strojového učení.
AutoML může pomoct odborníkům na strojové učení a vývojářům z různých sektorů až po:
- Vytváření řešení ML s minimálním kódováním
- Zkrácení času a nákladů
- Použití osvědčených postupů pro datové vědy
- Rychlé a efektivní řešení problémů
Pracovní postup AutoML
flaml.AutoML
je třída pro AutoML na základě úkolu. Dá se použít jako estimátor stylu Scikit-learn s obvyklým přizpůsobením a predikcí metod.
Pokud chcete spustit zkušební verzi AutoML, uživatelé musí zadat jenom trénovací data a typ úkolu. S integrovanými prostředími MLflow v Prostředcích infrastruktury můžou uživatelé také prozkoumat různá spuštění, která se pokusili ve zkušební verzi, a zjistit, jak byl konečný model zvolen.
Data pro trénink
V prostředcích infrastruktury můžou uživatelé funkci AutoML fit
předat následující vstupní typy:
Numpy Array: Když jsou vstupní data uložená v poli Numpy, předá
fit()
se jako X_train a y_train.Datový rámec Pandas: Když jsou vstupní data uložená v datovém rámci Pandas, předá
fit()
se jako X_train a y_train nebo jako datový rámec a popisek.Pandas v datovém rámci Sparku: Při uložení vstupních dat jako datového rámce Sparku je možné je převést na
Pandas
Spark
datový rámec pomocíto_pandas_on_spark()
datového rámce a pak je předatfit()
jako datový rámec a popisek.from flaml.automl.spark.utils import to_pandas_on_spark psdf = to_pandas_on_spark(sdf) automl.fit(dataframe=psdf, label='Bankrupt?', isUnbalance=True, **settings)
Problém se strojovém učením
Uživatelé mohou pomocí argumentu zadat úlohu strojového task
učení. Existují různé podporované úlohy strojového učení, mezi které patří:
- Klasifikace: Hlavním cílem klasifikačních modelů je předpovědět, do kterých kategorií spadají nová data na základě učení z trénovacích dat. Mezi běžné příklady klasifikace patří odhalování podvodů, rozpoznávání rukopisu nebo rozpoznávání objektů.
- Regrese: Regresní modely predikují číselné výstupní hodnoty na základě nezávislých prediktorů. Cílem regrese je pomoct stanovit vztah mezi proměnnými těchto nezávislých ukazatelů tím, že odhaduje, jak se jednotlivé proměnné ovlivňují. Například ceny automobilů založené na funkcích, jako jsou, gas mileage, bezpečnostní hodnocení atd.
- Prognózování časových řad: Slouží k predikci budoucích hodnot na základě historických datových bodů seřazených podle času. V časové řadě se data shromažďují a zaznamenávají v pravidelných intervalech v určitém období, například denně, týdně, měsíčně nebo ročně. Cílem prognózování časových řad je identifikovat vzory, trendy a sezónnost v datech a pak tyto informace použít k předpovědím o budoucí hodnotě.
Další informace o dalších úlohách podporovaných ve FLAML najdete v dokumentaci k úlohách AutoML ve FLAML.
Volitelné vstupy
Zadejte různá omezení a vstupy pro konfiguraci zkušební verze AutoML.
Omezení
Při vytváření zkušební verze AutoML můžou uživatelé také nakonfigurovat omezení procesu AutoML, argumenty konstruktoru potenciálních odhadců, typy modelů zkoušených v AutoML a dokonce omezení metrik zkušební verze AutoML.
Následující kód například umožňuje uživatelům zadat omezení metrik pro zkušební verzi AutoML.
metric_constraints = [("train_loss", "<=", 0.1), ("val_loss", "<=", 0.1)]
automl.fit(X_train, y_train, max_iter=100, train_time_limit=1, metric_constraints=metric_constraints)
Další informace o těchto konfiguracích najdete v dokumentaci ke konfiguracím ve FLAML.
Metrika optimalizace
Během trénování vytvoří funkce AutoML mnoho pokusů, které zkouší různé algoritmy a parametry. Nástroj AutoML iteruje pomocí algoritmů ML a hyperparametrů. V tomto procesu každá iterace vytvoří model s trénovacím skóre. Lepší skóre metriky, pro kterou chcete optimalizovat, tím lépe se model považuje za vhodný pro vaše data. Metrika optimalizace se zadává prostřednictvím argumentu metric
. Může to být řetězec, který odkazuje na integrovanou metriku, nebo uživatelem definovanou funkci.
Paralelní ladění
V některých případech můžete chtít urychlit zkušební verzi AutoML pomocí Apache Sparku pro paralelizaci trénování. Pro clustery Spark ve výchozím nastavení FLAML spustí jednu zkušební verzi na exekutor. Počet souběžných pokusů můžete také přizpůsobit pomocí argumentu n_concurrent_trials
.
automl.fit(X_train, y_train, n_concurrent_trials=4, use_spark=True)
Další informace o paralelizaci tras AutoML najdete v dokumentaci FLAML pro paralelní úlohy Sparku.
Track with MLflow
Pomocí integrace Fabric MLflow můžete také zachytit metriky, parametry a metriky prozkoumáných tras.
import mlflow
mlflow.autolog()
with mlflow.start_run(nested=True):
automl.fit(dataframe=pandas_df, label='Bankrupt?', mlflow_exp_name = "automl_spark_demo")
# You can also provide a run_name pre-fix for the child runs
automl_experiment = flaml.AutoML()
automl_settings = {
"metric": "r2",
"task": "regression",
"use_spark": True,
"mlflow_exp_name": "test_doc",
"estimator_list": [
"lgbm",
"rf",
"xgboost",
"extra_tree",
"xgb_limitdepth",
], # catboost does not yet support mlflow autologging
}
with mlflow.start_run(run_name=f"automl_spark_trials"):
automl_experiment.fit(X_train=train_x, y_train=train_y, **automl_settings)
Podporované modely
AutoML v Prostředcích infrastruktury podporuje následující modely:
Klasifikace | Regrese | Prognózování časových řad |
---|---|---|
(PySpark) Klasifikátor stromů se zvýšením přechodu (GBT) | (PySpark) Regrese zrychleného selhání (AFT) | Arimax |
(PySpark) Lineární SVM | (PySpark) Generalizovaná lineární regrese | AutoARIMA |
(PySpark) Naive Bayes | (PySpark) Regrese stromů se zvýšením přechodu (GBT) | Průměr |
(Synapse) LightGBM | (PySpark) Lineární regrese | CatBoost |
CatBoost | (Synapse) LightGBM | Rozhodovací strom |
Rozhodovací strom | CatBoost | ExponentialSmoothing |
Extrémně náhodné stromy | Rozhodovací strom | Extrémně náhodné stromy |
Gradient Boosting | Elastická síť | ForecastTCN |
K Nearest Neighbors | Extrémně náhodné stromy | Gradient Boosting |
Light GBM | Gradient Boosting | Exponenciální vyhlazování holt-winters |
Linear SVC | K Nearest Neighbors | K Nearest Neighbors |
Logistická regrese | LARS Lasso | LARS Lasso |
Logistická regrese s regularizací L1/L2 | Light GBM | Light GBM |
Naivní Bayesovy klasifikátory | Logistická regrese s regularizací L1/L2 | Naivní |
Náhodný les | Náhodný les | Oběžná dráha |
Náhodná doménová struktura ve Sparku | Náhodná doménová struktura ve Sparku | Prorok |
Stochastic Gradient Descent (SGD) | Stochastic Gradient Descent (SGD) | Náhodný les |
Klasifikace vektorů podpory (SVC) | XGBoost | SARIMAX |
XGboost | XGBoost s omezenou hloubkou | Sezónní průměr |
XGBoost s omezenou hloubkou | Sezónnínaive | |
Dočasný fúzní transformátor | ||
XGBoost | ||
XGBoost for Time Series | ||
XGBoost s omezenou hloubkou pro časové řady | ||
ElasticNet |
Vizualizace výsledků
Modul flaml.visualization
poskytuje pomocné funkce pro vykreslení procesu optimalizace pomocí Plotly. Díky využití Plotly můžou uživatelé interaktivně zkoumat výsledky experimentu AutoML. Pokud chcete tyto vykreslovací funkce použít, zadejte jako vstup optimalizovaný flaml.AutoML
objekt nebo flaml.tune.tune.ExperimentAnalysis
objekt.
V poznámkovém bloku můžete použít následující funkce:
plot_optimization_history
: Vykreslení historie optimalizace všech pokusů v experimentuplot_feature_importance
: Vykreslení důležitosti pro každou funkci v datové saděplot_parallel_coordinate
: Vykreslíte ve experimentu relace s vysoce dimenzionálními parametry.plot_contour
: Vykreslení relace parametru jako obrysového grafu v experimentuplot_edf
: Vykreslení objektivní hodnoty EDF (empirická distribuční funkce) experimentuplot_timeline
: Vykreslí časovou osu experimentu.plot_slice
: Vykreslení relace parametru jako výsečového grafu ve studiiplot_param_importance
: Vykreslení důležitosti hyperparametrů experimentu