火車模型使用磚特性存儲

本文描述了如何使用功能你可以訓練模型工程統一目錄或本地工作區特性存儲。您必須首先創建一個訓練數據集,它定義了功能使用以及如何加入他們的行列。然後,當你訓練一個模型,該模型保留了引用特性。

當您使用推理的模型時,您可以選擇從功能存儲檢索特征值。你也可以服務模型模型服務和它會自動查找功能發布到網上商店

請注意

特性工程統一目錄公共預覽。有關詳細信息,請參見特性工程統一目錄

創建一個訓練數據集

從功能表模型來選擇特定的功能訓練,您將創建一個訓練數據集使用FeatureStoreClient.create_training_setAPI和稱為一個對象FeatureLookup。一個FeatureLookup指定每個特性使用訓練集,包括功能表的名稱,名稱(s)的特性,和關鍵(s)使用時加入DataFrame傳遞到功能表FeatureStoreClient.create_training_set

使用feature_names當你創建一個參數FeatureLookupfeature_names單一特征的名字,名字的列表功能,或沒有查找所有功能(不含主鍵)功能表中的訓練集的時候被創建。

請注意

的類型和順序lookup_key列DataFrame必須匹配的類型和順序主鍵(不包括時間戳鍵)的引用特性表。

本文包含兩個版本的示例代碼的語法。

在本例中,返回的DataFrametrainingSet.load_df包含一個列的每個特性feature_lookups。它保留DataFrame提供給的所有列FeatureStoreClient.create_training_set除了那些排除使用exclude_columns

databricks.feature_store進口FeatureLookup#模型訓練使用兩個“customer_features”功能表和功能#一個單一的功能從“product_features”feature_lookups=(FeatureLookup(table_name=“recommender_system.customer_features”,feature_names=(“total_purchases_30d”,“total_purchases_7d”),lookup_key=“customer_id”),FeatureLookup(table_name=“recommender_system.product_features”,feature_names=(“類別”),lookup_key=“product_id”)]fs=FeatureStoreClient()#使用培訓DataFrame創建一個訓練集和功能特性#培訓DataFrame必須包含所有查找鍵查找的功能,#在這種情況下“customer_id”和“product_id”。它還必須包含所有標簽使用#培訓,在這種情況下“評級”。training_set=fscreate_training_set(df=training_df,feature_lookups=feature_lookups,標簽=“評級”,exclude_columns=(“customer_id”,“product_id”])training_df=training_setload_df()

創建一個TrainingSet當主鍵查找密鑰不匹配

使用參數lookup_keyFeatureLookup在訓練集列的名字。FeatureStoreClient.create_training_set執行有序之間的連接的列中指定的訓練集lookup_key參數使用主鍵的順序表創建時指定的特性。

在這個例子中,recommender_system.customer_features有以下主鍵:customer_id,dt

recommender_system.product_features功能表主鍵product_id

如果training_df有以下列:

  • cid

  • transaction_dt

  • product_id

  • 評級

下麵的代碼將創建正確的查找功能TrainingSet:

feature_lookups=(FeatureLookup(table_name=“recommender_system.customer_features”,feature_names=(“total_purchases_30d”,“total_purchases_7d”),lookup_key=(cid的,“transaction_dt”]),FeatureLookup(table_name=“recommender_system.product_features”,feature_names=(“類別”),lookup_key=“product_id”)]

FeatureStoreClient.create_training_set被調用時,它會創建一個訓練數據集通過執行一個左加入,加入表recommender_system.customer_featurestraining_df使用鍵(customer_id,dt)對應於(cid,transaction_dt),如以下代碼所示:

customer_features_df=火花sql(“從recommender_system.customer_features SELECT *”)product_features_df=火花sql(“從recommender_system.product_features SELECT *”)training_df加入(customer_features_df,=(training_dfcid= =customer_features_dfcustomer_id,training_dftransaction_dt= =customer_features_dfdt),如何=“左”)加入(product_features_df,=“product_id”,如何=“左”)

創建一個TrainingSet包含兩個名稱相同的特性從不同特性表

使用可選參數output_nameFeatureLookup。的名稱是用於提供在返回的DataFrame特點的名字TrainingSet.load_df。例如,下麵的代碼,返回的DataFrametraining_set.load_df包括列customer_heightproduct_height

feature_lookups=(FeatureLookup(table_name=“recommender_system.customer_features”,feature_names=(“高度”),lookup_key=“customer_id”,output_name=“customer_height”,),FeatureLookup(table_name=“recommender_system.product_features”,feature_names=(“高度”),lookup_key=“product_id”,output_name=“product_height”),]fs=FeatureStoreClient()mlflowstart_run():training_set=fscreate_training_set(df,feature_lookups=feature_lookups,標簽=“評級”,exclude_columns=(“customer_id”])training_df=training_setload_df()

創建一個TrainingSet多次使用相同的功能

創建一個TrainingSet使用相同的功能加入到不同的查找鍵,使用多個FeatureLookups。使用一個獨特的output_name為每個FeatureLookup輸出。

feature_lookups=(FeatureLookup(table_name=“taxi_data.zip_features”,feature_names=(“溫度”),lookup_key=(“pickup_zip”),output_name=“pickup_temp”),FeatureLookup(table_name=“taxi_data.zip_features”,feature_names=(“溫度”),lookup_key=(“dropoff_zip”),output_name=“dropoff_temp”)]

創建一個TrainingSet無人監督的機器學習模型

標簽=沒有當創建一個TrainingSet無監督學習模型。例如,可以使用以下TrainingSet集群不同顧客群體根據他們的利益:beplay体育app下载地址

feature_lookups=(FeatureLookup(table_name=“recommender_system.customer_features”,feature_names=(“利益”),lookup_key=“customer_id”,),]fs=FeatureStoreClient()mlflowstart_run():training_set=fscreate_training_set(df,feature_lookups=feature_lookups,標簽=沒有一個,exclude_columns=(“customer_id”])training_df=training_setload_df()

火車模型和執行批處理推理與功能表

當你訓練一個模型使用特性存儲功能,保留引用特性模型。當您使用推理的模型時,您可以選擇從功能存儲檢索特征值。必須提供的主鍵(s)在模型中使用的特性。模型檢索功能需要從特征存儲在工作區中。然後根據需要加入特征值在得分。

在推理時支持特性查找:

  • 你必須記錄模型使用FeatureStoreClient.log_model

  • 您必須使用返回的DataFrameTrainingSet.load_df訓練模型。如果你在使用前以任何方式修改這個DataFrame訓練模型,修改不應用當您使用推理的模型。這降低了模型的性能。

  • 必須有一個相應的模型類型python_flavor在MLflow。MLflow支持大多數Python模型培訓框架,包括:

    • scikit-learn

    • keras

    • PyTorch

    • SparkML

    • LightGBM

    • XGBoost

    • TensorFlow Keras(使用python_flavormlflow.keras)

  • 自定義MLflow pyfunc模型

    #火車模型進口mlflowsklearn進口linear_modelfeature_lookups=(FeatureLookup(table_name=“recommender_system.customer_features”,feature_names=(“total_purchases_30d”),lookup_key=“customer_id”,),FeatureLookup(table_name=“recommender_system.product_features”,feature_names=(“類別”),lookup_key=“product_id”)]fs=FeatureStoreClient()mlflowstart_run():# df已列(“customer_id”、“product_id”,“評級”)training_set=fscreate_training_set(df,feature_lookups=feature_lookups,標簽=“評級”,exclude_columns=(“customer_id”,“product_id”])training_df=training_setload_df()toPandas()#“training_df”列(“total_purchases_30d”、“類別”,“評級”)X_train=training_df下降([“評級”),=1)y_train=training_df評級模型=linear_modelLinearRegression()適合(X_train,y_train)fslog_model(模型,“recommendation_model”,味道=mlflowsklearn,training_set=training_set,registered_model_name=“recommendation_model”)#批推理#如果模型在model_uri打包功能,FeatureStoreClient.score_batch的()#調用之前自動從功能存儲檢索所需的功能評分模型。#返回的DataFrame score_batch () batch_df增加了#列包含特征值和一個列包含模型的預測。fs=FeatureStoreClient()# batch_df已列“customer_id”和“product_id”預測=fsscore_batch(model_uri,batch_df)#“預測”DataFrame這些列:#“customer_id”、“product_id”,“total_purchases_30d”、“類別”,“預測”

使用自定義特性值評分模型打包時特性的元數據

默認情況下,一個模型打包功能推理從功能存儲元數據查找功能。使用自定義特性值評分,包括他們在DataFrame傳遞給FeatureStoreClient.score_batch ()。

例如,假設你包一個模型與這兩個特點:

feature_lookups=(FeatureLookup(table_name=“recommender_system.customer_features”,feature_names=(“account_creation_date”,“num_lifetime_purchases”),lookup_key=“customer_id”,),]

在推理,你可以提供自定義特性的值account_creation_date通過調用FeatureStoreClient.score_batchDataFrame,包含一個列命名account_creation_date。在這種情況下,API隻查找num_lifetime_purchases從功能存儲和使用提供的自定義特性account_creation_date列值評分模型。

# batch_df已列(“customer_id”、“account_creation_date”)預測=fsscore_batch(“模型:/ ban_prediction_model / 1”,batch_df)

火車和評分模型使用的組合特性存儲特性和外特性存儲的數據存儲

你可以訓練一個模型使用的組合功能以外的功能和數據存儲功能。當你包特性的元數據模型,該模型從特性存儲推理檢索特征值。

訓練模型,包括額外的數據列DataFrame傳遞給FeatureStoreClient.create_training_set。下麵的例子使用了功能total_purchases_30d從特色商店和外部列瀏覽器

feature_lookups=(FeatureLookup(table_name=“recommender_system.customer_features”,feature_names=(“total_purchases_30d”),lookup_key=“customer_id”,),]fs=FeatureStoreClient()# df已列(“customer_id”、“瀏覽器”,“評級”)training_set=fscreate_training_set(df,feature_lookups=feature_lookups,標簽=“評級”,exclude_columns=(“customer_id”]#“瀏覽器”並不排除在外)

在推理,DataFrame中使用FeatureStoreClient.score_batch必須包括瀏覽器列。

#在推理,必須提供“瀏覽器”# batch_df已列(“customer_id”、“瀏覽器”)預測=fsscore_batch(model_uri,batch_df)