次の方法で共有


AutoML: 共変量を使用した予測の改善 (外部リグレッサー)

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

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

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

  1. ランダム化された時系列データセットを作成します。
  2. 基本的な特徴エンジニアリング作業を実行します。
  3. データセットを FeatureStore テーブルとして格納します。
  4. AutoML 予測実験で FeatureStore を共変量として使用します。

データの作成

この例では、2024 年 1 月のホテルの稼働率にランダムに生成された時系列データを使用します。 次に、AutoML を使用して 2024 年 2 月の初日の 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'
)

Note

この例では、Python FeatureEngineeringClient を使用してテーブルの作成と書き込みをします。 ただし、SQL または DeltaLiveTable を使用してテーブルの書き込みと作成をすることもできます。 その他のオプションについては、「機能テーブルの使用」を参照してください。

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]

Note

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)

次のステップ