AutoML a Hálóban (előzetes verzió)
Az AutoML (Automated Machine Learning) olyan módszerek és eszközök gyűjteménye, amelyek kis 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.
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 Numpy-tömbben tárolja, a rendszer X_train és y_train továbbítja
fit()
őket.Pandas-adatkeret: Ha a bemeneti adatokat pandas-adatkeretben tárolják, azokat a rendszer X_train és y_train, vagy adatkeretként és címkeként továbbítja
fit()
.Pandas a Spark-adatkereten: Ha a bemeneti adatokat Spark-adatkeretként tárolják, adatkeretté
Pandas
Spark
to_pandas_on_spark()
alakíthatók, majd adatkeretként és címkeként továbbíthatókfit()
.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 mely kategóriákba tartoznak az új adatok 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 az autóárak olyan jellemzők alapján, mint például a gáz futásteljesítmény, a biztonsági minősítés stb.
- Idősor-előrejelzés: Ez az idő szerint rendezett előzményadat-pontok alapján előrejelzi a jövőbeli értékeket. 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 egyéb feladatokról a FLAML-ben található AutoML-tevékenységek dokumentációjában olvashat bővebben.
Nem kötelező bemenetek
Adjon meg különböző korlátozásokat és bemeneteket az AutoML-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 ml-algoritmusokon és hiperparamétereken keresztül iterál. Ebben a folyamatban minden iteráció létrehoz egy betanítási pontszámmal rendelkező modellt. 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 sztring, amely egy beépített metrikára vagy egy felhasználó által definiált függvényre hivatkozik.
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álya |
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 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.