AutoML: 共変量 (外部リグレッサー) による予測の改善

この記事では、共変量 (外部リグレッサーとも呼ばれます) を使用して、Databricks AutoML 予測モデルを改善する方法について説明します。

共変量は、予測モデルを改善できるターゲット時系列の外部にある追加の変数です。 たとえば、ホテルの稼働率を予測する場合、週末かどうかを知ることは、顧客の行動を予測するのに役立ちます。

この例では、次のことを行います。

  1. ランダム化された時系列データセットを作成します。

  2. 基本的な特徴エンジニアリング作業を実行します。

  3. データセットを FeatureStore テーブルとして保存します。

  4. 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 を使用して、テーブルを書き込んだり作成したりすることもできます。 その他のオプションについては、 特徴量テーブルの使用 を参照してください。

AutoMLエクスペリメントの設定

feature_store_lookups パラメーターを使用して、Feature Store を AutoML に渡します。feature_store_lookups には、 table_namelookup_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)