AutoML: melhorar a previsão com covariância (regressores externos)
Este artigo mostra como usar covariáveis, também conhecidas como regressores externos, para melhorar os modelos de previsão do AutoML.
A covariância consiste em variáveis adicionais fora da série temporal de destino que podem melhorar os modelos de previsão. Por exemplo, se você está prevendo taxas de ocupação de hotéis, saber se é fim de semana pode ajudar a prever o comportamento do cliente.
Neste exemplo, você:
- Criar um conjunto de dados de séries temporais aleatório.
- Execute o trabalho básico de engenharia de recursos.
- Armazene o conjunto de dados como uma tabela
FeatureStore
. - Use
FeatureStore
como covariância em um experimento de previsão do AutoML.
Criar os dados
Este exemplo usa dados de séries temporais gerados aleatoriamente para taxas de ocupação de hotéis em janeiro de 2024. Em seguida, use o AutoML para prever o occupancy_rate
para o primeiro dia de fevereiro de 2024.
Execute o código a seguir para gerar 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)
Engenharia de recursos
Use o conjunto de dados de amostra para criar um recurso chamado is_weekend
de classificador binário para determinar 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 o repositório de recursos
Para usar covariância no AutoML, você deve usar um Repositório de Recursos para unir uma ou mais tabelas de recursos de covariância com os dados de treinamento primários no AutoML.
Armazene o quadro de dados hotel_weather_feature_df
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'
)
Observação
Este exemplo usa o Python FeatureEngineeringClient
para criar e gravar tabelas. No entanto, você também pode usar SQL ou DeltaLiveTables para gravar e criar tabelas. Consulte Trabalhar com tabelas de recursos para obter mais opções.
Configurar o experimento do AutoML
Use o parâmetro feature_store_lookups
para passar o Repositório de Recursos 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]
Observação
feature_store_lookups
pode conter várias pesquisas de tabela de recursos.
Executar o experimento do AutoML
Use o código a seguir para passar features_lookups
para uma chamada de API do experimento 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)