AutoML: 共変量 (外部リグレッサー) による予測の改善
この記事では、共変量 (外部リグレッサーとも呼ばれます) を使用して AutoML 予測モデルを改善する方法について説明します。
共変量は、予測モデルを改善できるターゲット時系列の外部にある追加の変数です。 たとえば、ホテルの稼働率を予測する場合、週末かどうかを知ることは、顧客の行動を予測するのに役立ちます。
この例では、次のことを行います。
ランダム化された時系列データセットを作成します。
基本的な特徴エンジニアリング作業を実行します。
データセットを
FeatureStore
テーブルとして保存します。FeatureStore
を AutoML 予測エクスペリメントの共変量として使用します。
データの作成
この例では、2024 年 1 月のホテル稼働率についてランダムに生成された時系列データを使用します。 次に、AutoML を使用して、2024 年 2 月 1 日の occupancy_rate
を予測します。
次のコードを実行して、サンプル データを生成します。
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)
特徴エンジニアリング
サンプル データセットを使用して、date
が週末であるかどうかの二項分類子である is_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)
Feature Store の作成
AutoMLで共変量を使用するには、Feature Storeを使用して、1 つ以上の共変量特徴量テーブルを AutoMLのプライマリ トレーニング データと結合する必要があります。
データ フレーム hotel_weather_feature_df
を Feature Storeとして格納します。
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 または DeltaLiveTables を使用して、テーブルを書き込んだり作成したりすることもできます。 その他のオプションについては、Unity Catalogで特徴量テーブルを使用するを参照してください。
AutoMLエクスペリメントの設定
feature_store_lookups
パラメーターを使用して、Feature Store を AutoML に渡します。feature_store_lookups
には、 table_name
と lookup_key
の 2 つのフィールドを持つディクショナリが含まれています。
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
複数の特徴量テーブル ルックアップを含めることができます。
実行 the 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)