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 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ř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í 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.

Metriky optimalizace AutoML

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 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