Поделиться через


AutoML: улучшение прогнозирования с помощью ковариатов (внешние регрессии)

В этой статье показано, как использовать ковариаты, также известные как внешние регрессии, для улучшения моделей прогнозирования AutoML.

Ковариаты — это дополнительные переменные вне целевого временных рядов, которые могут улучшить модели прогнозирования. Например, если вы прогнозируете показатели занятости отеля, зная, что это выходные могут помочь предсказать поведение клиентов.

В этом примере вы:

  1. Создайте случайный набор данных временных рядов.
  2. Выполнение основных работ по проектированию признаков.
  3. Сохраните набор данных в виде FeatureStore таблицы.
  4. FeatureStore Используйте ковариаты в эксперименте прогнозирования AutoML.

Создание данных

В этом примере используются данные временных рядов случайным образом для показателей занятости отеля в январе 2024 года. Затем используйте AutoML для прогнозирования occupancy_rate первого дня февраля 2024 года.

Выполните следующий код, чтобы создать образец данных.

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)

Проектирование признаков

Используйте образец набора данных для инженера функций, который называется is_weekend двоичным классификатором того, является ли date это выходным.

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)

Создание хранилища компонентов

Чтобы использовать ковариаты в AutoML, необходимо использовать хранилище компонентов для присоединения одной или нескольких ковариатных таблиц компонентов с основными данными обучения в AutoML.

Сохраните кадр hotel_weather_feature_df данных в качестве хранилища компонентов.

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'
)

Примечание.

В этом примере используется Python FeatureEngineeringClient для создания и записи таблиц. Однако для записи и создания таблиц можно также использовать SQL или DeltaLiveTable. Дополнительные параметры см. в статье " Работа с таблицами функций".

Настройка эксперимента AutoML

feature_store_lookups Используйте параметр для передачи хранилища компонентов в AutoML. feature_store_lookups содержит словарь с двумя полями: table_name и 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]

Примечание.

feature_store_lookups может содержать несколько подстановок таблиц признаков.

Запуск эксперимента AutoML

Используйте следующий код, чтобы передать features_lookups вызов API эксперимента 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)

Следующие шаги