概念

このセクションでは、Databricks Feature Store テーブルと特徴量テーブルの使用に役立つ概念について説明します。

特徴量テーブル

特徴量テーブルは特徴量テーブルとして整理されています。 各テーブルには主キーが必要であり、 Delta テーブル と追加のメタデータによってサポートされます。 特徴量テーブル メタデータは、テーブルの生成元のデータ データと、テーブルを作成または書き込んだノートブックとジョブを追跡します。

Databricks Runtime 13.2 以降では、ワークスペースで Unity Catalogが有効になっている場合、主キーを持つ任意のDeltaテーブルを Unity Catalog で特徴量テーブルとして使用できます。「Unity Catalogでの特徴量エンジニアリング」を参照してください。ローカルのワークスペース Feature Store に格納されている特徴量テーブルは、「ワークスペース特徴量テーブル」と呼ばれます。 ワークスペースFeature Storeの特徴量テーブルの操作を参照してください。

特徴量テーブルの特徴は、通常、コンピュートであり、一般的な計算関数を使用して更新されます。

FeatureLookup

多くの異なるモデルが特定の特徴量テーブルの特徴量テーブルを使用する可能性があり、すべてのモデルがすべての特徴量テーブルを必要とするわけではありません。 特徴量テーブルごとに FeatureLookup をトレーニングするには、特徴量テーブルごとにモデルをトレーニングします。 この FeatureLookup は、テーブルから使用するフィーチャを指定し、 create_training_setに渡されるラベル データに特徴量テーブルを結合するために使用するキーも定義します。

この図は、 FeatureLookup がどのように機能するかを示しています。 この例では、 customer_featuresproduct_featuresという 2 つの特徴量テーブル の特徴量を使用してモデルをトレーニングします。 特徴量テーブルごとに FeatureLookup を作成し、テーブルの名前、テーブルから選択する特徴量 (列)、および特徴を結合してトレーニングデータセットを作成するときに使用するルックアップキーを指定します。

次に、図に示されている create_training_setを呼び出します。 この API 呼び出しは、生のトレーニング データ (label_df) を含む DataFrame 、使用する FeatureLookups 、グラウンド トゥルースを含む列 labelを指定します。 トレーニングデータには、特徴量テーブルの各主キーに対応する列が含まれている必要があります。 特徴量テーブルのデータは、これらのキーに従って入力 DataFrame に結合されます。 結果は、図に「トレーニングデータセット」として表示されます。

FeatureLookup ダイアグラム

トレーニングセット

トレーニング セットは、特徴のリストと、特徴を検索するための生のトレーニング データ、ラベル、および主キーを含む DataFrame で構成されます。 Feature Store から抽出する特徴を指定してトレーニング セットを作成し、モデルのトレーニング中にトレーニング セットを入力として提供します。

トレーニングセットを作成して使用する方法の例については、「 トレーニングデータセットの作成 」を参照してください。

Unity Catalog で特徴量エンジニアリングを使用してモデルをトレーニングすると、カタログ エクスプローラーでモデルのリネージを表示できます。 モデルの作成に使用されたテーブルと関数は、自動的に追跡され、表示されます。 「 リネージ Feature Store 表示」を参照してください。

時系列特徴テーブル

モデルのトレーニングに使用されるデータには、多くの場合、時間の依存関係が組み込まれています。 モデルを構築するときは、観測されたターゲット値の時点までの特徴値のみを考慮する必要があります。 ターゲット値のタイムスタンプ以降に測定されたデータに基づいて特徴をトレーニングすると、モデルのパフォーマンスが低下する可能性があります。

時系列特徴量テーブル には、トレーニングデータセットの各行が行のタイムスタンプの時点で最新の既知の特徴値を表すことを保証するタイムスタンプ列が含まれています。 時系列特徴量テーブルは、時系列データ、イベントベースのデータ、時間集計データなど、時間の経過と共に特徴値が変化するたびに使用する必要があります。

時系列特徴量テーブルを作成するときは、主キーの時間関連列を時系列列として指定するには、引数 timeseries_columns ( Unity Catalogでの特徴量エンジニアリングの場合) または timestamp_keys 引数 (ワークスペース Feature Storeの場合) を使用します。 これにより、 create_training_set または score_batchを使用するときにポイントインタイムルックアップが可能になります。 システムは、指定された timestamp_lookup_key を使用して、タイムスタンプ時結合を実行します。

timeseries_columns 引数または timestamp_keys 引数を使用せず、時系列列のみを主キー列として指定した場合、Feature Store は結合中に時系列列に特定の時点のロジックを適用しません。代わりに、タイムスタンプより前のすべての行を照合するのではなく、時刻が完全に一致する行のみを照合します。

オフラインストア

オフライン Feature Store は、特徴の検出、モデルのトレーニング、およびバッチ推論に使用されます。 これには、Delta テーブルとして具体化された特徴量テーブル テーブルが含まれています。

ストリーミング

バッチ書き込みに加えて、Databricks Feature Store ストリーミングもサポートされています。 ストリーミング ソースから特徴テーブルに特徴値を書き込むことができ、特徴計算コードでは 構造化ストリーミング を利用して生データ ストリームを特徴に変換できます。

モデルのパッケージ化

Databricks の機能を使用してトレーニングされた機械学習モデルでは、これらの機能への参照 Feature Store 保持されます。 推論時に、モデルはオプションで Feature Storeから特徴値を取得できます。 呼び出し元は、モデルで使用される特徴の主キー ( user_id など) を指定するだけでよく、モデルは必要なすべての特徴値を Feature Storeから取得します。

バッチ推論では、特徴値はオフライン ストアから取得され、スコアリングの前に新しいデータと結合されます。 リアルタイム推論では、特徴値はオンラインストアから取得されます。

フィーチャー メタデータを使用してモデルをパッケージ化するには、FeatureEngineeringClient.log_model ( Unity Catalogでの特徴量エンジニアリングの場合) または FeatureStoreClient.log_model (ワークスペース Feature Storeの場合) を使用します。