AutoML: улучшение прогнозирования с помощью ковариатов (внешние регрессии)
В этой статье показано, как использовать ковариаты, также известные как внешние регрессии, для улучшения моделей прогнозирования AutoML.
Ковариаты — это дополнительные переменные вне целевого временных рядов, которые могут улучшить модели прогнозирования. Например, если вы прогнозируете показатели занятости отеля, зная, что это выходные могут помочь предсказать поведение клиентов.
В этом примере вы:
- Создайте случайный набор данных временных рядов.
- Выполнение основных работ по проектированию признаков.
- Сохраните набор данных в виде
FeatureStore
таблицы. 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)