Aller au contenu principal

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 :

  1. Créer un dataset de séries chronologiques aléatoires.
  2. Effectuez un travail de Data Engineering des fonctionnalités de base.
  3. Stockez le dataset en tant que table FeatureStore.
  4. Utilisez le FeatureStore comme 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.

Python
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.

Python
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.

Python
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'
)
remarque

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.

Python
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]
remarque

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.

Python
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)

Ressources supplémentaires