Zdieľať cez


Prvé automatizované strojové učenia kódu v službe Fabric (Preview)

Automatizované strojové učenie (Automated strojové učenie) je kolekcia metód a nástrojov, ktoré automatizujú trénovanie a optimalizáciu modelu strojového učenia s malou účasťou ľudí. Cieľom automatizovaného strojového učenia je zjednodušiť a urýchliť proces výberu najlepšieho modelu strojového učenia a hyperparametrov pre danú množinu údajov, ktorá si zvyčajne vyžaduje veľa zručností a výpočtový výkon.

Dôležité

Táto funkcia je vo verzii Preview.

V službe Fabric môžu dátoví vedci použiť flaml.AutoML na automatizáciu úloh strojového učenia.

Automatizované strojové učenie môže pomôcť profesionálom v oblasti strojového učenia a vývojárom z rôznych odvetví:

  • Zostavovanie riešení strojového učenia s minimálnym kódovaním
  • Skracovať čas a náklady
  • Použitie osvedčených postupov pre dátovú vedu
  • Rýchle a efektívne riešenie problémov

Pracovný postup automatizovaného strojového učenia

flaml.AutoML je trieda automatizovaného strojového učenia založená na úlohe. Môže sa použiť ako odhad štýlu Scikit-learn s bežnými metódami prispôsobenia a predpovedanie.

Na spustenie skúšobnej verzie automatizovaného strojového učenia musia používatelia zadať iba tréningové údaje a typ úlohy. Vďaka integrovaným prostrediam toku MLflow v službe Fabric môžu používatelia tiež preskúmať rôzne spustenia, ktoré sa pokúsili v skúšobnej verzii, aby zistili, ako bol vybraný konečný model.

Tréningové údaje

V službe Fabric môžu používatelia funkcii automatizovaného strojového fit učenia odovzdať nasledujúce typy vstupov:

  • Numpy Array: Keď sú vstupné údaje uložené v poli Numpy, prenesú sa do fit() X_train a y_train.

  • Údajový rámec Pandas: Keď sú vstupné údaje uložené v údajovom rámci Pandas, prenesú sa buď ako fit() X_train a y_train, alebo ako údajový rámec a označenie.

  • Údajový rámec Pandas on Spark: Keď sú vstupné údaje uložené ako údajový rámec Spark, možno ho skonvertovať na Pandas údajový Spark rámec pomocou to_pandas_on_spark() údajového rámca a potom ho odovzdať fit() ako údajový rámec a označenie.

    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 so strojového učením

Používatelia môžu zadať úlohu strojového učenia pomocou argumentu task . Existujú rôzne podporované úlohy strojového učenia vrátane:

  • Klasifikácia: Hlavným cieľom modelov klasifikácie je predpovedať, do ktorých kategórií spadajú nové údaje na základe poznatkov z tréningových údajov. Bežné príklady klasifikácie zahŕňajú zisťovanie podvodov, rozpoznávanie rukopisu a zisťovanie objektov.
  • Regresia: Regresné modely predpovedajú číselné výstupné hodnoty založené na nezávislých prediktoroch. Pri regresii je cieľom pomôcť vytvoriť vzťah medzi týmito nezávislými premennými prediktora odhadom toho, aký vplyv má jedna premenná na ostatné. Napríklad ceny automobilov založené na funkciách, ako sú výjazd kilometrov, hodnotenie bezpečnosti atď.
  • Time Series Forecasting (Predpovedanie časového radu): Používa sa na predpovedanie budúcich hodnôt na základe historických údajových bodov zoradených podľa času. V časovom rade sa údaje zhromažďujú a zaznamenávajú v pravidelných intervaloch počas určitého obdobia, ako napríklad denne, týždenne, mesačne alebo ročne. Cieľom prognózovania časových radov je identifikovať vzory, trendy a sezónnosť v údajoch a potom použiť tieto informácie na vytvorenie predpovedí o budúcej hodnote.

Ďalšie informácie o ďalších úlohách podporovaných vo formáte FLAML nájdete v dokumentácii o úlohách automatizovaného strojového učenia vo formáte FLAML.

Voliteľné vstupy

Zadajte rôzne obmedzenia a vstupy na konfiguráciu skúšobnej verzie automatizovaného strojového učenia.

Obmedzenia

Pri vytváraní skúšobnej verzie automatizovaného strojového učenia môžu používatelia nakonfigurovať obmedzenia procesu automatizovaného strojového učenia, argumenty konštruktorov potenciálnych odhadcov, typy modelov vyskúšané v automatizovaného strojového učenia a dokonca obmedzenia týkajúce sa metrík skúšobnej verzie automatizovaného strojového učenia.

Nižšie uvedený kód napríklad umožňuje používateľom určiť obmedzenie metrík v skúšobnej verzii automatizovaného strojového učenia.

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)

Ďalšie informácie o týchto konfiguráciách nájdete v dokumentácii o konfiguráciách vo formáte FLAML.

Metrika optimalizácie

Počas trénovania vytvorí funkcia automatizovaného strojového učenia množstvo skúšok, ktoré skúsia rôzne algoritmy a parametre. Nástroj automatizovaného strojového učenia iteruje prostredníctvom algoritmov strojového učenia a hyperparametrov. V tomto procese vytvorí každá iterácia model s skóre tréningu. Čím lepšie skóre pre metriku, pre ktorú chcete optimalizovať, tým lepšie sa model považuje za "prispôsobiť" vašim údajom. Metrika optimalizácie sa zadáva prostredníctvom argumentu metric . Môže ísť buď o reťazec, ktorý odkazuje na vstavanú metriku, alebo o funkciu definovanú používateľom.

Metrika optimalizácie automatizovaného strojového učenia

Paralelné ladenie

V niektorých prípadoch môžete chcieť urýchliť skúšobnú verziu automatizovaného strojového učenia pomocou služby Apache Spark, aby ste mohli paralelne trénovať. V prípade klastrov Spark spustí funkcia FLAML predvolene jednu skúšobnú verziu na jeden spustiteľný súbor. Počet súbežných skúšobných verzií môžete tiež prispôsobiť pomocou argumentu n_concurrent_trials .

automl.fit(X_train, y_train, n_concurrent_trials=4, use_spark=True)

Ďalšie informácie o tom, ako paralelne pracovať s cestami automatizovaného strojového učenia, nájdete v dokumentácii flaml pre paralelné úlohy v službe Spark.

Sledovanie pomocou toku MLflow

Môžete tiež použiť integráciu toku MLflow služby Fabric na zachytenie metrík, parametrov a metrík preskúmaných trás.

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

Automatizované strojové učenia v službe Fabric podporuje nasledujúce modely:

Klasifikácia Regresia Time Series Forecasting
(PySpark) Klasifikantný klasifikant so zvýrazneným stromom (GBT) (PySpark) Zrýchlený čas zlyhania (AFT) prežitie regresie Arimax
(PySpark) Lineárny SVM (PySpark) Zovšeobecnená lineárna regresia AutoARIMA
(PySpark) Naive Bayes (PySpark) Regresia zosilnených stromov s prechodom (GBT) Priemer
(Synapse) LightGBM (PySpark) Lineárna regresia CatBoost
CatBoost (Synapse) LightGBM Rozhodovací strom
Rozhodovací strom CatBoost ExponenciálneMoothing
Extrémne randomizované stromy Rozhodovací strom Extrémne randomizované stromy
Zvýšenie prechodu Elastic Net ForecastTCN
K Najbližší susedia Extrémne randomizované stromy Zvýšenie prechodu
Light GBM Zvýšenie prechodu Holt-Winters Exponential Smoothing
Lineárny SVC K Najbližší susedia K Najbližší susedia
Logistická regresia LARS Lasso LARS Lasso
Logistická regresia s lodnými lokalizáciami L1/L2 Light GBM Light GBM
Naive Bayes Logistická regresia s lodnými lokalizáciami L1/L2 Naivný
Náhodná lesná lesa Náhodná lesná lesa Orbita
Random Forest na Spark Random Forest na Spark Prorok
Stochastic Gradient zostup (SGD) Stochastic Gradient zostup (SGD) Náhodná lesná lesa
Podpora vektorovej klasifikácie (SVC) XGBoost SARIMAX
XGboost XGBoost s obmedzenou hĺbkou SeasonalAverage (SeasonalAverage)
XGBoost s obmedzenou hĺbkou SeasonalNaive (Sezónne)
Temporal Fusion Transformer
XGBoost
XGBoost pre časový rad
XGBoost s obmedzenou hĺbkou pre časový rad
ElasticNet

Vizualizácia výsledkov

Modul flaml.visualization poskytuje pomocné funkcie na vykreslenie procesu optimalizácie pomocou nástroja Plotly. Využitím služby Plotly môžu používatelia interaktívne preskúmať svoje výsledky experimentovania automatizovaného strojového učenia. Ak chcete použiť tieto funkcie vykreslenia, zadajte svoj optimalizovaný flaml.AutoML objekt alebo flaml.tune.tune.ExperimentAnalysis objekt ako vstup.

V poznámkovom bloku môžete použiť nasledujúce funkcie:

  • plot_optimization_history: Vykreslte históriu optimalizácie všetkých skúšok v experimente.
  • plot_feature_importance: Vykreslí sa dôležitosť pre každú funkciu v množine údajov.
  • plot_parallel_coordinate: Vykreslí v experimente vzťahy vysokorozmerných parametrov.
  • plot_contour: Vykreslte v experimente vzťah parametra ako znázornenie kontúry.
  • plot_edf: Vykresliť cieľovú hodnotu EDF (funkcia empirickej distribúcie) experimentu.
  • plot_timeline: Vykreslí časovú os experimentu.
  • plot_slice: Vykreslí v štúdii vzťah parametra ako výsek.
  • plot_param_importance: Vykreslí sa dôležitosť hyperparametrov experimentu.