Udostępnij za pośrednictwem


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:

  1. Utwórz losowy zestaw danych szeregów czasowych.
  2. Wykonywanie podstawowych prac inżynieryjnych funkcji.
  3. Zapisz zestaw danych jako tabelę FeatureStore .
  4. 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)

Następne kroki