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 :
- Créez un jeu de données de série chronologique aléatoire.
- Effectuez un travail d’ingénierie de caractéristiques de base.
- Stockez le jeu de données sous forme de table
FeatureStore
. - 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)