Sdílet prostřednictvím


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 spoustu 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: Pokud jsou vstupní data uložená v poli Numpy, předají fit() se jako X_train a y_train.

  • Datový rámec Pandas: Pokud jsou vstupní data uložená v datovém rámci Pandas, předá fit() se buď 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 v datovém rámci Sparku a to_pandas_on_spark() pak je předat fit() 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í se nová data zakládají 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 na cenu automobilu můžou mít vliv vlastnosti, jako jsou spotřeba paliva, hodnocení bezpečnosti 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

Při vytváření zkušební verze AutoML můžou uživatelé poskytnout různá omezení a vstupy pro konfiguraci zkušební verze.

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 řadu pokusů, které vyzkouší různé algoritmy a parametry. Nástroj AutoML iteruje algoritmy ML a hyperparametry. V tomto procesu bude každá iterace 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.

Metriky optimalizace AutoML

Paralelní ladění

Vněkterýchch 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

Integraci Fabric MLflow můžete využít také k zachycení metrik, parametrů a metrik 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 Naive
Náhodný les Náhodný les Oběžné dráze
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, jednoduše jako vstup zadejte 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 experimentu
  • plot_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 experimentu
  • plot_edf: Vykreslení objektivní hodnoty EDF (empirická distribuční funkce) experimentu
  • plot_timeline: Vykreslí časovou osu experimentu.
  • plot_slice: Vykreslení relace parametru jako výsečového grafu ve studii
  • plot_param_importance: Vykreslení důležitosti hyperparametrů experimentu