共用方式為


AutoML:使用共變數改善預測 (外部回歸變數)

本文說明如何使用共同變數,也稱為外部回歸變數,以改善 AutoML 預測模型。

共變數是目標時間序列以外的其他變數,可改善預測模型。 例如,如果您要預測酒店入住率,知道週末是否有助於預測客戶行為。

在此範例中,您會:

  1. 建立隨機的時間序列數據集。
  2. 執行基本特徵工程工作。
  3. 將數據集儲存為 FeatureStore 數據表。
  4. FeatureStore在 AutoML 預測實驗中使用 做為共變數。

建立數據

此範例會針對 2024 年 1 月的酒店入住率使用隨機產生的時間序列數據。 然後,使用 AutoML 預測 occupancy_rate 2024 年 2 月的第一天。

執行下列程式代碼以產生範例數據。

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 來寫入和建立數據表。 如需更多選項,請參閱 使用 Unity 目錄中的功能資料表

設定 AutoML 實驗

feature_store_lookups使用 參數將功能存放區傳遞至 AutoML。 feature_store_lookups 包含具有兩個字位的字典: table_namelookup_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 至 AutoML 實驗 API 呼叫。

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)

下一步