AutoML:使用共變數改善預測 (外部回歸變數)
本文說明如何使用共同變數,也稱為外部回歸變數,以改善 AutoML 預測模型。
共變數是目標時間序列以外的其他變數,可改善預測模型。 例如,如果您要預測酒店入住率,知道週末是否有助於預測客戶行為。
在此範例中,您會:
- 建立隨機的時間序列數據集。
- 執行基本特徵工程工作。
- 將數據集儲存為
FeatureStore
數據表。 -
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_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
至 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)
下一步
- AutoML Python API 參照
- 在 Unity 目錄 中使用功能數據表