火车模型使用Databricks特征存储

文章描述您如何训练模型使用Databricks特征存储您必须先创建培训数据集,该数据集定义使用特征和加入方式后当训练模型时 模型保留引用特征

使用模型推理时,可选择从特征商店检索特征值可同时服务模型模型服务自动查找特征发布在线商店.

注解

数据bricks特征存储器不支持 UnityCatalog元库写作Unity目录化工作空间中,您可以写特征表到默认 Hive元库

创建培训数据集

从特征表选择特征模型培训使用创建培训数据集FeatureStoreClient.create_training_setAPI和对象调用特征查找.A级特征查找指定训练集使用的每一特征,包括特征表名称、特征名称和键入特征表时使用时用与DataFrame传递FeatureStoreClient.create_training_set.

使用特征名参数创建特征查找.特征名单特征名、特征名列表或无查找特征表内所有特征(不包括主键)

注解

类型和顺序查找键DataFrame列必须匹配引用特征表主键类型和顺序

文章中包括两个语法版本的代码示例

例子中DataFrame返回trainingSet.load_df内列为每个特征特征查找.保留DataFrame提供的所有列FeatureStoreClient.create_training_set除排除使用排除列.

发自databricks.feature_store导入特征查找#模型训练使用两个特征# 单特征从'product_featics'特征查找=[特征查找高山市表名='recommender_system.customer_features',特征名=['total_purchases_30d','total_purchases_7d'万事通查找键=客户_id)特征查找高山市表名='recommender_system.product_features',特征名=[类别类万事通查找键=Product_id)万事通fs系统=FeatureStoreClient(b)# 创建培训集使用培训DataFrame和特征#培训DataFrame必须包含全功能查找键#在此例中客户_id和product_id并必须包含所有标签使用#训练,在此例中评分训练集=fs系统.create_training_set高山市df=train_df,特征查找=特征查找,标签标签=评分,排除列=[客户_id,Product_id万事通)train_df=训练集.load_df(b)

查找密钥不匹配主密钥时创建培训集

使用参数查找键特征查找列名训练集FeatureStoreClient.create_training_set执行列间命令连接查找键参数使用主密钥在特征表创建时指定的顺序

举此例子recommender_system.customer_features拥有下列主密钥 :客服i,dt系统.

上头recommender_system.product_features特征表主密钥macduct_id.

iftrain_df列如下 :

  • 单片机

  • 事务_dt

  • macduct_id

  • 评分

下代码创建正确特征查找训练队:

特征查找=[特征查找高山市表名='recommender_system.customer_features',特征名=['total_purchases_30d','total_purchases_7d'万事通查找键=[子网,'transaction_dt'万事通)特征查找高山市表名='recommender_system.product_features',特征名=[类别类万事通查找键=Product_id)万事通

何时FeatureStoreClient.create_training_set调用,它通过执行左接头加入表创建培训数据集recommender_system.customer_featurestrain_df使用密钥客服i,dt系统)对应单片机,事务_dt)显示在下代码中

customer_features_df=点火.sql高山市SELECT*推荐系统客户特性)product_features_df=点火.sql高山市SELECT*推荐系统.product_e)train_df.合并高山市customer_features_df,=[train_df.单片机汉城customer_features_df.客服i,train_df.事务_dt汉城customer_features_df.dt系统万事通如何实现=左转).合并高山市product_features_df,=Product_id,如何实现=左转)

创建培训集包含从不同特征表取同名的两个特征

可选参数使用输出名特征查找.提供名称替代DataFrame返回时特征名TrainingSet.load_df.举个例子,用下代码 DataFrame返回training_set.load_df包括列客服高度macduct_hile.

特征查找=[特征查找高山市表名='recommender_system.customer_features',特征名=[高位万事通查找键=客户_id,输出名='customer_height',)特征查找高山市表名='recommender_system.product_features',特征名=[高位万事通查找键=Product_id,输出名='product_height')万事通fs系统=FeatureStoreClient(b)mlfl.启动运行:训练集=fs系统.create_training_set高山市df,特征查找=特征查找,标签标签=评分,排除列=[客户_id万事通)train_df=训练集.load_df(b)

多次使用相同特征创建培训队

使用多功能搜索程序创建培训网使用独有输出名特征查找输出

特征查找=[特征查找高山市表名='taxi_data.zip_features',特征名=[适配性万事通查找键=[搭建zip万事通输出名=pickup_tmp)特征查找高山市表名='taxi_data.zip_features',特征名=[适配性万事通查找键=[下拉-zip万事通输出名=下发_tmp)万事通

创建无人监督机器学习模型培训集

集成标签=无创建不受监督学习模式培训集举例说,TreactionSet可用于基于不同客户兴趣分组

特征查找=[特征查找高山市表名='recommender_system.customer_features',特征名=[兴趣类万事通查找键=客户_id,)万事通fs系统=FeatureStoreClient(b)mlfl.启动运行:训练集=fs系统.create_training_set高山市df,特征查找=特征查找,标签标签=,排除列=[客户_id万事通)train_df=训练集.load_df(b)

火车模型并用特征表分批推理

使用特征存储器特征训练模型时,模型保留特征引用使用模型推理时,可选择从特征商店检索特征值您必须提供模型特征的主键模型检索工作空间特征存储所需要特征并加入特征值

支持特征查找推理时间

  • 您必须登录模型使用FeatureStoreClient.log_model.

  • 您必须使用DataFrame返回TrainingSet.load_df训练模型数据Frame使用前以任何方式修改模型,使用模型推理时不应用修改下降模型性能

  • 模型类型必须对应ython-flaverML流ML流支持大多数Python模型培训框架,包括:

    • ikit学习

    • 加拉斯市

    • yToch

    • sparkML

    • LightGBM

    • XGBoost

    • TensorFlowKeras使用ython-flavermlflor.keras)

  • 自定义ML流pllpyfunc模型

    #火车模型导入mlfl发自斯克兰导入线性模型特征查找=[特征查找高山市表名='recommender_system.customer_features',特征名=['total_purchases_30d'万事通查找键=客户_id,)特征查找高山市表名='recommender_system.product_features',特征名=[类别类万事通查找键=Product_id)万事通fs系统=FeatureStoreClient(b)mlfl.启动运行:#df列训练集=fs系统.create_training_set高山市df,特征查找=特征查找,标签标签=评分,排除列=[客户_id,Product_id万事通)train_df=训练集.load_df(b).toPandas系统(b)#培训df列X_train=train_df.下降评分万事通轴线=一号)y_train=train_df.评分模型化=线性模型.LinearRegression(b).适配高山市X_train,y_train)fs系统.日志模型高山市模型化,"recommendation_model",香味=mlfl.斯克兰,训练集=训练集,registered_model_name="recommendation_model")批量推理# 如果模型_i打包特征, 特征StoreClient.score_batch ()#调用从特征商店自动检索所需特征# DataFrame通过评分批量#列内特征值和列内模型预测fs系统=FeatureStoreClient(b)#批量df有列'Custoper_id'和'product_id'预测=fs系统.分数批处理高山市模型_uri,批量df)#'命令'DataFrame有这些列#berner_id,product_id

自定义特征值评分带特征元数据打包模型

默认时用特征元数据打包模型从特征存储引用查找特征使用自定义特征值评分时, 将其包括在DataFrame传递给PeaticStoreClient.score_batch ()中

举例说,假设你打包模型 与这两个特征

特征查找=[特征查找高山市表名='recommender_system.customer_features',特征名=['account_creation_date','num_lifetime_purchases'万事通查找键=客户_id,)万事通

推理上,您可以为特征提供自定义值account_creation_date通过调用FeatureStoreClient.score_batch数据Frame上包含列命名account_creation_date.在本案中API只查num_lifetime_purchases特征存储使用account_creation_date列值模型评分

#批量df列预测=fs系统.分数批处理高山市'models:/ban_prediction_model/1',批量df)

火车评分模型使用特征存储特征和数据组合

可综合特征存储器特征和外部数据训练模型模型用特征元数据打包时从特征商店检索特征值引文

训练模型时, DataFrame传递到列中包括额外数据FeatureStoreClient.create_training_set.示例使用特征total_purchases_30d特征商店和外部列浏览器.

特征查找=[特征查找高山市表名='recommender_system.customer_features',特征名=['total_purchases_30d'万事通查找键=客户_id,)万事通fs系统=FeatureStoreClient(b)# df列训练集=fs系统.create_training_set高山市df,特征查找=特征查找,标签标签=评分,排除列=[客户_id万事通#浏览器不排除)

推理数据Frame使用FeatureStoreClient.score_batch必须包括浏览器列内

#推理,browser必须提供#批量df列预测=fs系统.分数批处理高山市模型_uri,批量df)