AutoML: Aprimorar a previsão com covariáveis (regressores externos)

Este artigo mostra aos senhores como usar covariáveis, também conhecidas como regressores externos, para aprimorar os modelos de previsão do Databricks AutoML .

As 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 de hotéis, saber se é fim de semana pode ajudar a prever o comportamento do cliente.

Neste exemplo, você:

  1. Crie uma série temporal aleatória dataset.

  2. Realizar trabalhos básicos de engenharia de recursos.

  3. Armazene o site dataset como uma tabela FeatureStore.

  4. Use o FeatureStore como covariáveis em um experimento de previsão AutoML.

Crie 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 amostra.

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)

recurso engenharia

Use a amostra dataset para criar um recurso chamado is_weekend que seja um classificador binário para determinar se 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áveis em AutoML, o senhor deve usar um repositório de recursos para join uma ou mais tabelas de recurso de covariável com os dados de treinamento primário em AutoML.

Armazenar 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, o senhor também pode usar SQL ou DeltaLiveTables para escrever e criar tabelas. Consulte Trabalhar com tabelas de recurso para obter mais opções.

Configurar o experimento AutoML

Use o parâmetro feature_store_lookups para passar o repositório de recursos para 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 na tabela de recursos.

execução o experimento AutoML

Use o código a seguir para passar o features_lookups para uma chamada de API de experimento do 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)