Partager via


Mosaïque AutoML : Améliorer la prévision avec des covariateurs (régresseurs externes)

Cet article explique comment utiliser des covariateurs, également appelés régresseurs externes, pour améliorer les modèles de prévision AutoML de Mosaïque.

Les covariables sont des variables supplémentaires en dehors de la série chronologique cible qui peuvent améliorer les modèles de prévision. Par exemple, si vous prévoyez des taux d’occupation d’hôtel, savoir s’il s’agit du week-end peut aider à prédire le comportement des clients.

Dans cet exemple, vous effectuez les opérations suivantes :

  1. Créez un jeu de données de série chronologique aléatoire.
  2. Effectuez un travail d’ingénierie de caractéristiques de base.
  3. Stockez le jeu de données sous forme de table FeatureStore.
  4. Utilisez la fonction FeatureStore comme covariable dans une expérience de prévision AutoML.

Créer les données

Cet exemple utilise des données de série chronologique générées de manière aléatoire pour les taux d’occupation des hôtels en janvier 2024. Ensuite, utilisez AutoML pour prédire le occupancy_rate pour le premier jour de février 2024.

Exécutez le code suivant pour générer les données d’exemple.

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)

Ingénierie de caractéristiques

Utilisez l’exemple de jeu de données pour créer un composant fonctionnel appelé is_weekend. Il s’agait d’un classifieur binaire indiquant si date correspond ou non à un week-end.

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 de covariables avec les données d’apprentissage principales dans AutoML.

Stockez la trame de données 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'
)

Remarque

Cet exemple utilise le FeatureEngineeringClient Python pour créer et écrire des tables. Toutefois, vous pouvez également utiliser SQL ou DeltaLiveTables pour écrire et créer des tables. Pour plus d’options, consultez Utiliser les tables de caractéristiques.

Configurer l’expérience AutoML

Utilisez le paramètre feature_store_lookups pour passer du 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]

Remarque

feature_store_lookups peut contenir plusieurs recherches de table de caractéristiques.

Exécuter l’expérience AutoML

Utilisez le code suivant pour passer le features_lookups à un appel d’API pour une expérience 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)

Étapes suivantes