AutoML: Melhorar a previsão com covariáveis (regressores externos)
Este artigo mostra como usar covariáveis, também conhecidas como regressores externos, para melhorar os modelos de previsão do AutoML.
Covariáveis são variáveis adicionais fora da série temporal alvo que podem melhorar os modelos de previsão. Por exemplo, se você está prevendo taxas de ocupação hoteleira, saber se é o fim de semana pode ajudar a prever o comportamento do cliente.
Neste exemplo, você:
- Crie um conjunto de dados de séries cronológicas aleatórias.
- Execute trabalhos básicos de engenharia de recursos.
- Armazene o conjunto de dados como um
FeatureStore
table. - Use as covariáveis as em um experimento
FeatureStore
de previsão do AutoML.
Criar os dados
Este exemplo usa dados de séries temporais gerados aleatoriamente para as taxas de ocupação hoteleira em janeiro de 2024. Em seguida, use o AutoML para prever o occupancy_rate
para o primeiro dia de fevereiro de 2024.
Execute o seguinte código para generate os dados de exemplo.
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)
Desenvolvimento de funcionalidades
Use o conjunto de dados de exemplo para projetar um recurso chamado is_weekend
classificador binário de se um date
é ou não um fim de semana.
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)
Criar a loja de recursos
Para usar covariáveis no AutoML, você deve usar um do
Armazene o quadro hotel_weather_feature_df
de dados como um Repositório de Recursos.
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'
)
Nota
Este exemplo utiliza o Python FeatureEngineeringClient
para criar e escrever tables. No entanto, você também pode usar SQL ou DeltaLiveTables para escrever e criar tables. Veja trabalhar com a funcionalidade tables no Unity Catalog para mais opções.
Configurar o experimento AutoML
Use o feature_store_lookups
parâmetro para passar o Feature Store para o AutoML.
feature_store_lookups
contém um dicionário com dois campos: table_name
e 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]
Nota
feature_store_lookups
pode conter múltiplas pesquisas de funcionalidades de table.
Executar o experimento AutoML
Use o código a seguir para passar o para uma chamada de API de experimento features_lookups
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)