AutoML: Verbessern der Prognose mit Kovariaten (externe Regressoren)
In diesem Artikel erfahren Sie, wie Sie Kovariate, auch als externe Regressoren bezeichnet, verwenden, um AutoML-Prognosemodelle zu verbessern.
Kovariate sind zusätzliche Variablen außerhalb der Zielzeitreihe, die Prognosemodelle verbessern können. Wenn Sie z. B. die Hotelbelegungsraten prognostizieren, kann das Wissen, ob es sich um das Wochenende handelt, dazu beitragen, das Kundenverhalten vorherzusagen.
Gehen Sie bei diesem Beispiel so vor:
- Erstellen Sie ein randomisiertes Dataset für Zeitreihen.
- Führen Sie grundlegende Feature Engineering-Arbeit durch.
- Speichern Sie das Dataset als
FeatureStore
-Tabelle. - Verwenden Sie
FeatureStore
als Kovariate in einem AutoML-Prognoseexperiment.
Erstellen der Daten
In diesem Beispiel werden zufällig generierte Zeitreihendaten für Hotelbelegungsraten im Januar 2024 verwendet. Verwenden Sie dann AutoML, um occupancy_rate
für den ersten Tag vom Februar 2024 vorherzusagen.
Führen Sie den folgenden Code aus, um die Beispieldaten zu erzeugen.
df = spark.sql("""SELECT explode(sequence(to_date('2024-01-01'), to_date('2024-01-31'), interval 1 day)) as date, rand() as occupancy_rate FROM (SELECT 1 as id) tmp ORDER BY date""")
display(df)
Feature Engineering
Verwenden Sie das Beispiel-Dataset, um ein Feature namens is_weekend
zu entwickeln, das ein binärer Klassifizierer ist, ob date
ein Wochenende ist oder nicht.
from pyspark.sql.functions import dayofweek, when
def compute_hotel_weekend_features(df):
''' is_weekend feature computation code returns a DataFrame with 'date' as primary key'''
return df.select("date").withColumn(
"is_weekend",
when(dayofweek("date").isin( 1, 2, 3, 4, 5), 0) # Weekday
.when(dayofweek("date").isin(6, 7), 1) # Weekend
)
hotel_weekend_feature_df = compute_hotel_weekend_features(df)
Erstellen des Feature Stores
Um Kovariate für AutoML zu verwenden, müssen Sie einen Feature-Store verwenden, um eine oder mehrere kovariate Feature-Tabellen mit den primären Schulungsdaten in AutoML zu verknüpfen.
Speichern Sie den Datenrahmen hotel_weather_feature_df
als Feature-Store.
from databricks.feature_engineering import FeatureEngineeringClient
fe = FeatureEngineeringClient()
hotel_weekend_feature_table = fe.create_table(
name='ml.default.hotel_weekend_features', # change to desired location
primary_keys=['date'],
df=hotel_weekend_feature_df,
description='Hotel is_weekend features table'
)
Hinweis
In diesem Beispiel wird Python FeatureEngineeringClient
zum Erstellen und Schreiben von Tabellen verwendet. Sie können jedoch auch SQL oder DeltaLiveTables verwenden, um Tabellen zu schreiben und zu erstellen. Weitere Optionen finden Sie unter Arbeiten mit Feature-Tabellen.
Konfigurieren des Experiments für automatisiertes ML
Verwenden Sie den feature_store_lookups
-Parameter, um den Feature-Store an AutoML zu übergeben. feature_store_lookups
enthält ein Wörterbuch mit zwei Feldern: table_name
und lookup_key
.
hotel_weekend_feature_lookup = {
"table_name": "ml.default.hotel_weekend_features", # change to location set above
"lookup_key": ["date"]
}
feature_lookups = [hotel_weekend_feature_lookup]
Hinweis
feature_store_lookups
kann mehrere Feature-Tabellenabruf enthalten.
Ausführen des AutoML-Experiments
Verwenden Sie den folgenden Code, um den features_lookups
-API-Aufruf eines AutoML-Experiments weiterzugeben.
from databricks import automl
summary = automl.forecast(dataset=df, target_col="occupancy_rate", time_col="date", frequency="d", horizon=1, timeout_minutes=30, identity_col=None, feature_store_lookups=feature_lookups)