使用具有時間點支持的時間序列特性表
通過時間序列特征表,Databricks feature Store支持需要時間點正確性的時間序列和基於事件的用例。您可以指定一個特定的列作為特征表的時間戳鍵,並在不同的時間戳中存儲特定主鍵值的曆史特征值,每個主鍵值在單獨的行中。為了檢索特定時間的最新特征值,以訓練或對模型進行評分,Databricks feature Store支持對時間序列特征表進行時間點查找。
請注意
時間點查找功能有時被稱為“時間旅行”。Databricks Feature Store中的時間點功能與三角洲湖時間旅行.
時間點查找有助於避免數據泄漏問題,當模型在實時推斷期間不可用的特征值上進行訓練時,可能會出現數據泄漏問題。數據泄漏會導致訓練和實時推理之間模型性能的顯著差異。使用時間序列特征表,您可以確保模型使用基於您指定的時間戳的最新特征進行訓練。
如果您的特征值隨著時間而變化,例如時間序列數據、基於事件的數據或時間聚合的數據,請考慮使用時間序列特征表。
在Databricks feature Store中創建一個時間序列特征表
要創建時間序列特性表,DataFrame或模式必須包含指定為時間戳鍵的列。
fs=FeatureStoreClient()# user_features_df數據幀包含以下列:# - user_id# - ts# - purchases_30d . ## - is_free_trial_activefs.create_table(的名字=“ads_team.user_features”,鍵=“user_id”,timestamp_keys=“t”,features_df=user_features_df,)
時間序列特征表必須有一個時間戳鍵,不能有任何分區列。時間戳鍵列必須為TimestampType
或DateType
也不能是主鍵。
Databricks建議時間序列特征表不超過兩個主鍵列,以確保性能寫入和查找。
更新時間序列特征表
當將特征寫入時間序列特征表時,你的DataFrame必須為特征表中的所有特征提供值,這與常規的特征表不同。此約束降低了時間序列特征表中跨時間戳的特征值的稀疏性。
fs=FeatureStoreClient()DataFrame包含以下列:# - user_id# - ts# - purchases_30d . ## - is_free_trial_activefs.write_table(“ads_team.user_features”,daily_users_batch_df,模式=“合並”)
支持流式寫入時間序列特征表。
創建一個帶有時間序列特征表的訓練集
若要對時間序列特征表中的特征值執行時間點查找,必須指定timestamp_lookup_key
在功能的FeatureLookup
,它指示包含時間戳的DataFrame列的名稱,要根據該列查找時間序列特征。Databricks Feature Store檢索DataFrame的時間戳之前的最新特征值timestamp_lookup_key
列,並且其主鍵與DataFrame中的值匹配lookup_key
列,或零
如果不存在這樣的特性值。
feature_lookups=[FeatureLookup(table_name=“ads_team.user_features”,feature_names=[“purchases_30d”,“is_free_trial_active”),lookup_key=“u_id”,timestamp_lookup_key=“ad_impression_ts”),FeatureLookup(table_name=“ads_team.ad_features”,feature_names=[“sports_relevance”,“food_relevance”),lookup_key=“ad_id”,)]# raw_clickstream數據幀包含以下列:# - u_id# - ad_id# - ad_印象派training_set=fs.create_training_set(raw_clickstream,feature_lookups=feature_lookups,exclude_columns=[“u_id”,“ad_id”,“ad_impression_ts”),標簽=“did_click”,)training_df=training_set.load_df()
任何FeatureLookup
在時間序列特征表上必須是一個時間點查找,因此它必須指定timestamp_lookup_key
列用於你的數據框架。時間點查找不會跳過零
存儲在時間序列特征表中的特征值。
用時間序列特征表對模型進行評分
當您對使用時間序列特征表中的特征訓練的模型進行評分時,Databricks feature Store使用在訓練期間與模型打包的元數據進行時間點查找來檢索適當的特征。提供給的數據幀FeatureStoreClient.score_batch
必須包含具有相同名稱和的時間戳列數據類型
隨著timestamp_lookup_key
的FeatureLookup
提供給FeatureStoreClient.create_training_set
.
將時間序列功能發布到在線商店
你可以使用FeatureStoreClient.publish_table
將時間序列特征表發布到在線商店。Databricks Feature Store提供了將時間序列數據的快照或窗口發布到在線商店的功能,具體取決於OnlineStoreSpec
這就創建了網上商店。該表顯示了每種發布模式的詳細信息。
網上商店供應商 |
快照發布模式 |
窗口發布模式 |
---|---|---|
Amazon DynamoDB (v0.3.8及以上版本) |
X |
X |
Amazon Aurora (mysql兼容) |
X |
|
Amazon RDS MySQL |
X |