Udostępnij za pośrednictwem


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 metody to_pandas_on_spark() , a następnie przekazać jako Pandas 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.