AutoML: poprawianie prognozowania przy użyciu kowariantów (regresorów zewnętrznych)
W tym artykule pokazano, jak używać kowariantów, nazywanych również regresorami zewnętrznymi, aby ulepszyć modele prognozowania automatycznego uczenia maszynowego.
Kowarianty to dodatkowe zmienne poza docelowymi szeregami czasowymi, które mogą poprawić modele prognozowania. Jeśli na przykład prognozujesz stawki za zajętość hotelów, wiedząc, czy jest to weekend, może pomóc przewidzieć zachowanie klientów.
W tym przykładzie wykonasz następujące elementy:
- Utwórz losowy zestaw danych szeregów czasowych.
- Wykonywanie podstawowych prac inżynieryjnych funkcji.
- Zapisz zestaw danych jako tabelę
FeatureStore
. - Użyj zmiennej
FeatureStore
as covariates w eksperymencie prognozowania automatycznego uczenia maszynowego.
Tworzenie danych
W tym przykładzie użyto losowo wygenerowanych danych szeregów czasowych dla stawek zajętości hotelowych w styczniu 2024 r. Następnie użyj rozwiązania AutoML, aby przewidzieć occupancy_rate
pierwszy dzień lutego 2024 r.
Uruchom następujący kod, aby wygenerować przykładowe dane.
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)
Inżynieria cech
Przykładowy zestaw danych umożliwia utworzenie funkcji o nazwie is_weekend
klasyfikatora binarnego o tym, czy jest date
to weekend.
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)
Tworzenie magazynu funkcji
Aby używać kowariantów w rozwiązaniu AutoML, należy użyć magazynu funkcji, aby połączyć co najmniej jedną kowariantną tabelę funkcji z podstawowymi danymi treningowymi w rozwiązaniu AutoML.
Przechowuj ramkę hotel_weather_feature_df
danych jako magazyn funkcji.
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'
)
Uwaga
W tym przykładzie użyto języka Python FeatureEngineeringClient
do tworzenia i zapisywania tabel. Można jednak również użyć tabel SQL lub DeltaLiveTables do zapisywania i tworzenia tabel. Aby uzyskać więcej opcji, zobacz Praca z tabelami cech w Katalogu Unity.
Konfigurowanie eksperymentu zautomatyzowanego uczenia maszynowego
Użyj parametru feature_store_lookups
, aby przekazać magazyn funkcji do rozwiązania AutoML.
feature_store_lookups
zawiera słownik z dwoma polami: table_name
i 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]
Uwaga
feature_store_lookups
może zawierać wiele odnośników tabeli funkcji.
Uruchamianie eksperymentu zautomatyzowanego uczenia maszynowego
Użyj następującego kodu, aby przekazać element do wywołania interfejsu features_lookups
API eksperymentu rozwiązania 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)