AutoML w sieci szkieletowej (wersja zapoznawcza)
AutoML (Zautomatyzowane uczenie maszynowe) to kolekcja metod i narzędzi, które automatyzują trenowanie i optymalizację modelu uczenia maszynowego przy niewielkim zaangażowaniu człowieka. Celem rozwiązania AutoML jest uproszczenie i przyspieszenie procesu wybierania najlepszego modelu uczenia maszynowego i hiperparametrów dla danego zestawu danych, co zwykle wymaga dużej ilości umiejętności i mocy obliczeniowej.
Ważne
Ta funkcja jest dostępna w wersji zapoznawczej.
W usłudze Fabric analitycy danych mogą używać flaml.AutoML
do automatyzowania zadań uczenia maszynowego.
Rozwiązanie AutoML może pomóc specjalistom i deweloperom uczenia maszynowego z różnych sektorów na:
- Tworzenie rozwiązań uczenia maszynowego przy minimalnym kodowaniu
- Skrócenie czasu i kosztów
- Stosowanie najlepszych rozwiązań dotyczących nauki o danych
- Szybkie i wydajne rozwiązywanie problemów
Przepływ pracy automatycznego uczenia maszynowego
flaml.AutoML
jest klasą automl opartą na zadaniu. Może być używany jako narzędzie do szacowania stylu Scikit-learn ze zwykłymi metodami dopasowania i przewidywania.
Aby rozpocząć wersję próbną rozwiązania AutoML, użytkownicy muszą podać tylko dane szkoleniowe i typ zadania. Dzięki zintegrowanym środowiskom MLflow w usłudze Fabric użytkownicy mogą również sprawdzić różne przebiegi, które próbowano przeprowadzić w wersji próbnej, aby zobaczyć, jak został wybrany ostateczny model.
Dane szkoleniowe
W sieci szkieletowej użytkownicy mogą przekazywać następujące typy danych wejściowych do funkcji AutoML fit
:
Tablica Numpy: gdy dane wejściowe są przechowywane w tablicy Numpy, są przekazywane
fit()
jako X_train i y_train.Ramka danych biblioteki Pandas: gdy dane wejściowe są przechowywane w ramce danych biblioteki Pandas, są przekazywane do
fit()
X_train i y_train albo jako ramka danych i etykieta.Biblioteka Pandas w ramce danych platformy Spark: gdy dane wejściowe są przechowywane jako ramka danych platformy Spark, można ją przekonwertować na ramkę danych przy
Spark
użyciu metodyto_pandas_on_spark()
, a następnie przekazać jakoPandas
fit()
ramkę danych i etykietę.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)
Problem z uczeniem maszynowym
Użytkownicy mogą określić zadanie uczenia maszynowego przy użyciu argumentu task
. Istnieją różne obsługiwane zadania uczenia maszynowego, w tym:
- Klasyfikacja: głównym celem modeli klasyfikacji jest przewidywanie kategorii nowych danych w oparciu o informacje na podstawie danych treningowych. Typowe przykłady klasyfikacji obejmują wykrywanie oszustw, rozpoznawanie pisma ręcznego i wykrywanie obiektów.
- Regresja: Modele regresji przewidują wartości liczbowe danych wyjściowych na podstawie niezależnych predyktorów. W regresji celem jest pomoc w ustanowieniu relacji między zmiennymi tych niezależnych predyktorów przez oszacowanie wpływu jednej zmiennej na inne. Na przykład ceny samochodów oparte na takich cechach, jak przebieg gazu, ocena bezpieczeństwa itp.
- Prognozowanie szeregów czasowych: służy do przewidywania przyszłych wartości na podstawie historycznych punktów danych uporządkowanych według czasu. W szeregach czasowych dane są zbierane i rejestrowane w regularnych odstępach czasu, na przykład codziennie, co tydzień, co miesiąc lub co rok. Celem prognozowania szeregów czasowych jest zidentyfikowanie wzorców, trendów i sezonowości w danych, a następnie użycie tych informacji w celu przewidywania przyszłej wartości.
Aby dowiedzieć się więcej o innych zadaniach obsługiwanych w języku FLAML, zapoznaj się z dokumentacją dotyczącą zadań automl w języku FLAML.
Opcjonalne dane wejściowe
Podaj różne ograniczenia i dane wejściowe, aby skonfigurować wersję próbną rozwiązania AutoML.
Ograniczenia
Podczas tworzenia wersji próbnej rozwiązania AutoML użytkownicy mogą również konfigurować ograniczenia procesu automatycznego uczenia maszynowego, argumenty konstruktora potencjalnych narzędzi do szacowania, typy modeli wypróbowanych w rozwiązaniu AutoML, a nawet ograniczenia dotyczące metryk wersji próbnej rozwiązania AutoML.
Na przykład poniższy kod umożliwia użytkownikom określenie ograniczenia metryk w wersji próbnej rozwiązania 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)
Aby dowiedzieć się więcej o tych konfiguracjach, zapoznaj się z dokumentacją dotyczącą konfiguracji w języku FLAML.
Metryka optymalizacji
Podczas trenowania funkcja AutoML tworzy wiele prób, które próbują użyć różnych algorytmów i parametrów. Narzędzie AutoML iteruje za pomocą algorytmów uczenia maszynowego i hiperparametrów. W tym procesie każda iteracja tworzy model z wynikiem trenowania. Lepsze wyniki dla metryki, dla której chcesz zoptymalizować, tym lepiej model jest uznawany za "dopasowany" dane. Metryka optymalizacji jest określana za pomocą argumentu metric
. Może to być ciąg, który odwołuje się do wbudowanej metryki lub funkcji zdefiniowanej przez użytkownika.
Metryki optymalizacji automatycznego uczenia maszynowego
Dostrajanie równoległe
W niektórych przypadkach warto przyspieszyć wersję próbną rozwiązania AutoML przy użyciu platformy Apache Spark, aby zrównoleglić trenowanie. W przypadku klastrów Spark domyślnie język FLAML uruchamia jedną wersję próbną na funkcję wykonawcza. Możesz również dostosować liczbę współbieżnych prób przy użyciu argumentu n_concurrent_trials
.
automl.fit(X_train, y_train, n_concurrent_trials=4, use_spark=True)
Aby dowiedzieć się więcej na temat równoległości szlaków rozwiązania AutoML, zapoznaj się z dokumentacją FLAML dotyczącą zadań równoległych platformy Spark.
Śledzenie za pomocą biblioteki MLflow
Możesz również użyć integracji biblioteki MLflow sieci szkieletowej, aby przechwycić metryki, parametry i metryki eksplorowanych szlaków.
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)
Obsługiwane modele
Rozwiązanie AutoML w sieci szkieletowej obsługuje następujące modele:
Klasyfikacja | Regresja | Prognozowanie szeregów czasowych |
---|---|---|
(PySpark) Klasyfikator drzew wzmocnionych gradientem (GBT) | (PySpark) Regresja czasu przyspieszonego niepowodzenia (AFT) | Arimax |
(PySpark) Liniowy układ wektorów nośnych | (PySpark) Uogólniona regresja liniowa | AutoARIMA |
(PySpark) Naiwny Bayes | (PySpark) Regresja drzew wzmocnionych gradientem (GBT) | Średnia |
(Synapse) LightGBM | (PySpark) Regresja liniowa | CatBoost |
CatBoost | (Synapse) LightGBM | Drzewo decyzji |
Drzewo decyzji | CatBoost | ExponentialSmoothing |
Bardzo losowe drzewa | Drzewo decyzji | Bardzo losowe drzewa |
Wzmacnianie gradientowe | Sieć elastyczna | ForecastTCN |
K najbliższych sąsiadów | Bardzo losowe drzewa | Wzmacnianie gradientowe |
Lekki algorytm GBM | Wzmacnianie gradientowe | Holt-Winters Exponential Smoothing |
Liniowa klasyfikacja SVC | K najbliższych sąsiadów | K najbliższych sąsiadów |
Regresja logistyczna | LARS/Lasso | LARS/Lasso |
Regresja logistyczna z regularyzacji L1/L2 | Lekki algorytm GBM | Lekki algorytm GBM |
Prosty algorytm Bayesa | Regresja logistyczna z regularyzacji L1/L2 | Naiwny |
Las losowy | Las losowy | Orbita |
Las losowy na platformie Spark | Las losowy na platformie Spark | Prorok |
Stochastyczny spadek gradientu | Stochastyczny spadek gradientu | Las losowy |
Klasyfikacja wektorów nośnych (SVC) | XGBoost | SARIMAX |
XGboost | XGBoost z ograniczoną głębokością | Wyrównywacz sezonowy |
XGBoost z ograniczoną głębokością | Sezonowa | |
Transformator czasowy | ||
XGBoost | ||
XGBoost dla szeregów czasowych | ||
XGBoost z ograniczoną głębokością dla szeregów czasowych | ||
ElasticNet |
Wizualizowanie wyników
Moduł flaml.visualization
udostępnia funkcje narzędzi do kreślenia procesu optymalizacji przy użyciu narzędzia Plotly. Korzystając z funkcji Plotly, użytkownicy mogą interaktywnie eksplorować wyniki eksperymentu rozwiązania AutoML. Aby użyć tych funkcji kreślenia, podaj zoptymalizowany flaml.AutoML
lub flaml.tune.tune.ExperimentAnalysis
obiekt jako dane wejściowe.
W notesie można użyć następujących funkcji:
plot_optimization_history
: Wykreślij historię optymalizacji wszystkich prób w eksperymencie.plot_feature_importance
: Wykreślij znaczenie dla każdej funkcji w zestawie danych.plot_parallel_coordinate
: Wykreślij relacje parametrów o wysokim wymiarach w eksperymencie.plot_contour
: Wykreślij relację parametrów jako wykres konturowy w eksperymencie.plot_edf
: wykreślić wartość docelową EDF (funkcja rozkładu empirycznego) eksperymentu.plot_timeline
: Wykreślij oś czasu eksperymentu.plot_slice
: Wykreślij relację parametrów jako wykres wycinka w badaniu.plot_param_importance
: Wykreślij znaczenie hiperparametru eksperymentu.