Compartilhar via


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ê:

  1. Criar um conjunto de dados de séries temporais aleatório.
  2. Execute o trabalho básico de engenharia de recursos.
  3. Armazene o conjunto de dados como uma tabela FeatureStore.
  4. 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)

Próximas etapas