AutoML : améliorer les prévisions avec des covariables (régresseurs externes)
Cet article vous montre comment utiliser les covariables, également appelées régresseurs externes, pour améliorer les modèles de prévision AutoML.
Les covariables sont des variables supplémentaires en dehors des séries temporelles cibles qui peuvent améliorer les modèles de prévision. Par exemple, si vous prévoyez les taux d'occupation des hôtels, savoir si c'est le week-end pourrait aider à prédire le comportement des clients.
Dans cet exemple, vous :
- Créer un dataset de séries chronologiques aléatoires.
- Effectuez un travail de Data Engineering des fonctionnalités de base.
- Stockez le dataset en tant que table
FeatureStore. - Utilisez le
FeatureStorecomme covariables dans une expérimentation de prévision AutoML.
Créer les données
Cet exemple utilise des données de séries chronologiques générées aléatoirement pour les taux d'occupation des hôtels en janvier 2024. Ensuite, utilisez AutoML pour prédire le occupancy_rate pour le 1er février 2024.
Exécutez le code suivant pour générer les exemples de données.
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)
engineering des fonctionnalités
Utilisez le dataset échantillon pour concevoir une fonctionnalité appelée is_weekend qui est un classifieur binaire indiquant si un date est un week-end ou non.
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)
Créer le Magasin de fonctionnalités
Pour utiliser des covariables sur AutoML, vous devez utiliser un Magasin de fonctionnalités pour joindre une ou plusieurs tables de fonctionnalités covariables aux données d’entraînement principales dans AutoML.
Stockez le DataFrame hotel_weather_feature_df en tant que Magasin de fonctionnalités.
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'
)
Cet exemple utilise le FeatureEngineeringClient Python pour créer et écrire des tables. Cependant, vous pouvez également utiliser SQL ou DeltaLiveTables pour écrire et créer des tables. Voir les tables de fonctionnalités dans Unity Catalog pour plus d'options.
Configurer l'Experimentation AutoML
Utilisez le parameter feature_store_lookups pour transmettre le Magasin de fonctionnalités à AutoML. feature_store_lookups contient un dictionnaire avec deux champs : table_name et 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]
feature_store_lookups peut contenir plusieurs recherches de tables de fonctionnalités.
Exécutez l'Experimentation AutoML
Utilisez le code suivant pour transmettre le features_lookups à un appel d'API d'Experimentation AutoML.
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)