Megosztás a következőn keresztül:


AutoML a Hálóban (előzetes verzió)

Az AutoML (Automatizált gépi Tanulás) olyan módszerek és eszközök gyűjteménye, amelyek kevés emberi beavatkozással automatizálják a gépi tanulási modellek betanítását és optimalizálását. Az AutoML célja, hogy leegyszerűsítse és felgyorsítsa a legjobb gépi tanulási modell és hiperparaméterek kiválasztásának folyamatát egy adott adathalmazhoz, amely általában sok készséget és számítási teljesítményt igényel.

Fontos

Ez a funkció előzetes verzióban érhető el.

A Fabricben az adattudósok automatizálhatják flaml.AutoML gépi tanulási feladataikat.

Az AutoML a különböző ágazatokból származó gépi tanulási szakembereknek és fejlesztőknek a következőket segítheti:

  • Ml-megoldások létrehozása minimális kódolással
  • Idő és költség csökkentése
  • Adatelemzési ajánlott eljárások alkalmazása
  • Problémák gyors és hatékony megoldása

AutoML-munkafolyamat

flaml.AutoML az AutoML tevékenységen alapuló osztálya. Scikit-learn stílusú becslőként használható a szokásos illesztési és előrejelzési módszerekkel.

Az AutoML-próbaverzió elindításához a felhasználóknak csak a betanítási adatokat és a feladat típusát kell megadniuk. A Fabric integrált MLflow-élményével a felhasználók megvizsgálhatják a próbaverzióban megkísérelt különböző futtatásokat is, hogy lássák, hogyan lett kiválasztva a végső modell.

Betanítási adatok

A Fabricben a felhasználók a következő bemeneti típusokat továbbíthatják az AutoML fit függvénynek:

  • Numpy-tömb: Ha a bemeneti adatokat egy Numpy-tömbben tárolja a rendszer, az X_train és y_train lesz átadva fit() .

  • Pandas-adatkeret: Ha a bemeneti adatokat pandas-adatkeretben tárolják, a rendszer X_train és y_train, vagy adatkeretként és címkeként továbbítja fit() őket.

  • Pandas a Spark-adatkereten: Ha a bemeneti adatokat Spark-adatkeretként tárolják, a Spark-adatkereten lévő Pandas-adatkeretté to_pandas_on_spark() alakíthatók át, majd adatkeretként és címkeként továbbíthatók fit() .

    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)
    

Gépi tanulási probléma

A felhasználók az argumentum használatával megadhatja a gépi task tanulási feladatot. Számos támogatott gépi tanulási feladat létezik, például:

  • Besorolás: A besorolási modellek fő célja annak előrejelzése, hogy az új adatok mely kategóriákba kerülnek a betanítási adatokból származó tanulságok alapján. Gyakori besorolási példák a csalások észlelése, a kézírás-felismerés és az objektumészlelés.
  • Regresszió: A regressziós modellek numerikus kimeneti értékeket jeleznek előre független prediktorok alapján. A regresszió célja, hogy segítsen a független prediktorváltozók közötti kapcsolat felállításában azáltal, hogy megbecsüli, milyen hatással van egy változó a többire. Például előre jelzi egy autó árát olyan jellemzők alapján, mint az üzemanyagfogyasztás, a biztonsági minősítés stb.
  • Idősor-előrejelzés: A jövőbeli értékek előrejelzésére szolgál az idő szerint rendezett előzményadat-pontok alapján. Egy idősorban az adatok gyűjtése és rögzítése rendszeres időközönként történik egy adott időszakban, például naponta, hetente, havonta vagy évente. Az idősor-előrejelzés célja, hogy azonosítsa az adatok mintáit, trendjeit és szezonalitását, majd ezeket az információkat felhasználva előrejelzéseket készítsen a jövőbeli értékekről.

A FLAML-ben támogatott további feladatokról a FLAML-ben található AutoML-tevékenységek dokumentációjában olvashat bővebben.

Nem kötelező bemenetek

AutoML-próbaverzió létrehozásakor a felhasználók számos korlátozást és bemenetet biztosíthatnak a próbaverzió konfigurálásához.

Megszorítások

AutoML-próba létrehozásakor a felhasználók konfigurálhatják az AutoML-folyamatra vonatkozó korlátozásokat, a lehetséges becslési modellek konstruktorargumentumait, az AutoML-ben kipróbált modellek típusait, valamint az AutoML-próba metrikáira vonatkozó korlátozásokat is.

Az alábbi kód például lehetővé teszi, hogy a felhasználók metrikakorlátot adjanak meg az AutoML-próbaverzióhoz.

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)

Ha többet szeretne megtudni ezekről a konfigurációkról, látogasson el a FLAML konfigurációinak dokumentációjába.

Optimalizálási metrika

A betanítás során az AutoML függvény számos próbaverziót hoz létre, amelyek különböző algoritmusokat és paramétereket próbálnak ki. Az AutoML eszköz iterál az ML-algoritmusokon és hiperparamétereken keresztül. Ebben a folyamatban minden iteráció egy betanítási pontszámmal rendelkező modellt fog létrehozni. Minél jobb az optimalizálni kívánt metrika pontszáma, annál jobb, ha a modell "illeszkedik" az adatokhoz. Az optimalizálási metrika az metric argumentumon keresztül van megadva. Ez lehet egy beépített metrika vagy egy felhasználó által definiált függvényre hivatkozó sztring.

AutoML-optimalizálási metrikák

Párhuzamos hangolás

Bizonyos esetekben érdemes lehet felgyorsítani az AutoML-próbaidőszakot az Apache Spark használatával a betanítás párhuzamossá adásával. Spark-fürtök esetén a FLAML alapértelmezés szerint végrehajtónként egy próbaverziót indít el. Az egyidejű kísérletek számát az argumentum használatával n_concurrent_trials is testre szabhatja.

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

Ha többet szeretne megtudni az AutoML-nyomvonalak párhuzamosításáról, tekintse meg a párhuzamos Spark-feladatok FLAML-dokumentációját.

Nyomon követés az MLflow használatával

A Fabric MLflow-integrációval rögzítheti a vizsgált nyomvonalak metrikáit, paramétereit és metrikáit.

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)

Támogatott modellek

Az AutoML a Fabricben a következő modelleket támogatja:

Osztályozás Regresszió Idősor-előrejelzés
(PySpark) Színátmenet-növelt fák (GBT) osztályozó (PySpark) Gyorsított meghibásodási idő (AFT) túlélési regressziója Arimax
(PySpark) Lineáris SVM (PySpark) Általános lineáris regresszió AutoARIMA
(PySpark) Naiv Bayes (PySpark) Színátmenettel megnövelt fák (GBT) regressziója Átlag
(Synapse) LightGBM (PySpark) Lineáris regresszió CatBoost
CatBoost (Synapse) LightGBM Döntési fa
Döntési fa CatBoost ExponenciálisSmoothing
Rendkívül véletlenszerű fák Döntési fa Rendkívül véletlenszerű fák
Gradient boosting Rugalmas háló ForecastTCN
K legközelebbi szomszédok Rendkívül véletlenszerű fák Gradient boosting
Light GBM Gradient boosting Holt-Winters Exponenciális simítás
Lineáris SVC K legközelebbi szomszédok K legközelebbi szomszédok
Logisztikai regresszió LARS-lasszó LARS-lasszó
Logisztikai regresszió L1/L2-reginálással Light GBM Light GBM
Naiv Bayes Logisztikai regresszió L1/L2-reginálással Naiv
Véletlenszerű erdő Véletlenszerű erdő Pályára
Véletlenszerű erdő a Sparkon Véletlenszerű erdő a Sparkon Próféta
Stochastic Gradient Descent (SGD) Stochastic Gradient Descent (SGD) Véletlenszerű erdő
Támogatásvektor-besorolás (SVC) XGBoost SARIMAX
XGboost XGBoost korlátozott mélységgel SeasonalAverage
XGBoost korlátozott mélységgel SeasonalNaive
Temporális fúziós transzformátor
XGBoost
XGBoost for Time Series
XGBoost korlátozott mélységű idősorokkal
ElasticNet

Eredmények megjelenítése

A flaml.visualization modul segédprogramfüggvényeket biztosít az optimalizálási folyamat ábrázolására a Plotly használatával. A Plotly használatával a felhasználók interaktívan megismerhetik az AutoML-kísérlet eredményeit. A diagramfüggvények használatához egyszerűen adja meg az optimalizált flaml.AutoML vagy flaml.tune.tune.ExperimentAnalysis az objektumot bemenetként.

A jegyzetfüzetben a következő függvények használhatók:

  • plot_optimization_history: A kísérletben szereplő összes kísérlet optimalizálási előzményeinek ábrázolása.
  • plot_feature_importance: Az adathalmaz minden funkciójának ábrázolása.
  • plot_parallel_coordinate: Ábrázolja a kísérletben a nagy dimenziójú paraméterkapcsolatokat.
  • plot_contour: A paraméterkapcsolat ábrázolása körvonaldiagramként a kísérletben.
  • plot_edf: Ábrázolja a kísérlet EDF (empirikus eloszlásfüggvénye) objektív értékét.
  • plot_timeline: Ábrázolja a kísérlet ütemtervét.
  • plot_slice: A paraméterkapcsolat ábrázolása szeletdiagramként egy tanulmányban.
  • plot_param_importance: Ábrázolja a kísérlet hiperparaméter-jelentőségét.

Következő lépések