使用JupyterLab笔记本创建模型

NOTE
Data Science Workspace不再可购买。
本文档适用于先前有权使用Data Science Workspace的现有客户。

本教程将指导您完成使用JupyterLab笔记本recipe builder模板创建模型的所需步骤。

引入的概念:

  • 方法: ​方法是Adobe对模型规范的术语,是一个顶级容器,表示构建和执行经过训练的模型所需的特定机器学习、AI算法或算法组合、处理逻辑和配置。
  • 模型: ​模型是机器学习方法的实例,使用历史数据和配置进行培训以针对业务用例进行解析。
  • 训练: ​训练是从标记数据中学习模式和洞察的过程。
  • 评分: ​评分是使用经过培训的模型从数据生成洞察的过程。

下载所需的资产 assets

在继续本教程之前,您必须创建所需的架构和数据集。 访问有关创建Luma倾向模型架构和数据集的教程,以下载所需的资源并设置先决条件。

开始使用JupyterLab笔记本环境

可在Data Science Workspace内从头开始创建方法。 若要开始,请导航到Adobe Experience Platform并选择左侧的​ Notebooks ​选项卡。 要创建新笔记本,请从JupyterLab Launcher中选择方法生成器模板。

配方生成器笔记本允许您在笔记本内运行培训和评分运行。 这样,您可以在运行培训和评分数据的实验之间灵活地更改其train()score()方法。 对培训和评分的结果感到满意后,您可以创建一个配方,然后使用配方来建模功能,将其作为模型发布。

NOTE
配方生成器笔记本支持使用所有文件格式,但当前创建配方功能仅支持Python。

当您从启动器中选择配方生成器笔记本时,该笔记本将在新标签页中打开。

在顶部的新笔记本选项卡中,将加载一个包含三个其他操作的工具栏 — 培训分数 ​和​ 创建食谱。 这些图标仅出现在配方生成器笔记本中。 在笔记本中构建配方后,培训和评分部分会提供有关这些操作的更多信息。

开始使用配方生成器笔记本

在提供的资源文件夹中为Luma倾向模型propensity_model.ipynb。 使用JupyterLab中的“上载笔记本”选项,上载提供的型号并打开笔记本。

上载笔记本

本教程的其余部分介绍了在倾向性模型笔记本中预定义的以下文件:

以下视频教程介绍了“亮度倾向模型”笔记本:

要求文件 requirements-file

要求文件用于声明您希望在模型中使用的其他库。 如果存在依赖关系,则可以指定版本号。 要查找其他库,请访问anaconda.org。 要了解如何格式化要求文件,请访问Conda。 已使用的主要库列表包括:

python=3.6.7
scikit-learn
pandas
numpy
data_access_sdk_python
NOTE
您添加的库或特定版本可能与上述库不兼容。 此外,如果您选择手动创建环境文件,则不允许覆盖name字段。

对于Luma倾向性模型笔记本,无需更新要求。

配置文件 configuration-files

配置文件training.confscoring.conf用于指定要用于训练和评分以及添加超参数的数据集。 有单独的训练和评分配置。

要使模型运行培训,必须提供trainingDataSetIdACP_DSW_TRAINING_XDM_SCHEMAtenantId。 此外,对于计分,您必须提供scoringDataSetIdtenantIdscoringResultsDataSetId

要查找数据集和架构ID,请转到左侧导航栏(文件夹图标下方)笔记本中的“数据”选项卡 “数据”选项卡 。 需要提供三个不同的数据集ID。 scoringResultsDataSetId用于存储模型评分结果,并且应为空数据集。 这些数据集以前在所需资源步骤中创建。

Adobe Experience Platform上的​ 架构 ​和​ 数据集 ​选项卡下可以找到相同的信息。

完成后,您的培训和评分配置应类似于以下屏幕截图:

配置

默认情况下,在训练数据和对数据进行评分时,将为您设置以下配置参数:

  • ML_FRAMEWORK_IMS_USER_CLIENT_ID
  • ML_FRAMEWORK_IMS_TOKEN
  • ML_FRAMEWORK_IMS_ML_TOKEN
  • ML_FRAMEWORK_IMS_TENANT_ID

了解培训数据加载器 training-data-loader

训练数据加载器的目的是实例化用于创建机器学习模型的数据。 通常,培训数据加载器需要完成两项任务:

  • 正在从Platform加载数据
  • 数据准备和特征工程

以下两个部分将重载数据和数据准备。

正在加载数据 loading-data

此步骤使用大熊猫数据帧。 可以使用Platform SDK (platform_sdk)从Adobe Experience Platform中的文件加载数据,也可以使用pandas的read_csv()read_json()函数从外部源加载数据。

NOTE
在Recipe Builder笔记本中,通过platform_sdk数据加载器加载数据。

Platform SDK platform-sdk

有关使用platform_sdk数据加载器的深入教程,请访问平台SDK指南。 本教程提供有关生成验证、数据基本读取和数据基本写入的信息。

外部源 external-sources

本节向您介绍如何将JSON或CSV文件导入Pandas对象。 大熊猫图书馆的官方文件可在此处找到:

首先,以下是导入CSV文件的示例。 data参数是CSV文件的路径。 此变量是从上一节中的configProperties导入的。

df = pd.read_csv(data)

您也可以从JSON文件导入。 data参数是CSV文件的路径。 此变量是从上一节中的configProperties导入的。

df = pd.read_json(data)

现在,您的数据位于数据流对象中,可以在下一部分中分析和处理。

培训数据加载器文件

在此示例中,数据是使用Platform SDK加载的。 可通过在页面顶部包含行来导入库:

from platform_sdk.dataset_reader import DatasetReader

然后,您可以使用load()方法从配置(recipe.conf)文件中设置的trainingDataSetId中获取训练数据集。

def load(config_properties):
    print("Training Data Load Start")

    #########################################
    # Load Data
    #########################################
    client_context = get_client_context(config_properties)
    dataset_reader = DatasetReader(client_context, dataset_id=config_properties['trainingDataSetId'])
NOTE
“配置文件”部分中所述,当您使用client_context = get_client_context(config_properties)从Experience Platform访问数据时,将为您设置以下配置参数:
  • ML_FRAMEWORK_IMS_USER_CLIENT_ID
  • ML_FRAMEWORK_IMS_TOKEN
  • ML_FRAMEWORK_IMS_ML_TOKEN
  • ML_FRAMEWORK_IMS_TENANT_ID

现在您已经有了数据,可以从数据准备和功能工程开始。

数据准备和特征工程 data-preparation-and-feature-engineering

加载数据后,需要清除数据并进行数据准备。 在本例中,模型的目标是预测客户是否打算订购产品。 由于模型未查看特定产品,因此您不需要productListItems,因此该列被删除。 接下来,删除仅在一列中包含单个值或两个值的其他列。 在训练模型时,请务必仅保留有助于预测目标的有用数据。

数据准备示例

一旦删除了任何不必要的数据,就可以开始特征工程。 用于此示例的演示数据不包含任何会话信息。 通常,您需要特定客户的当前和过去会话的数据。 由于缺少会话信息,此示例改为通过历程划分来模拟当前和过去的会话。

历程分界

完成标界后,为数据添加标签并创建旅程。

标记数据

接下来,创建特征并将其分为过去和现在。 然后,任何不必要的列都会被丢弃,从而为您留下Luma客户的过去和当前历程。 这些历程包含信息,例如客户是否购买了一个项目以及购买之前他们经历的历程。

当前最终培训

评分数据加载程序 scoring-data-loader

加载评分数据的过程与加载培训数据类似。 仔细查看代码,您可以看到除了dataset_reader中的scoringDataSetId之外的所有内容都相同。 这是因为相同的Luma数据源用于训练和评分。

如果希望使用不同的数据文件来进行训练和评分,则训练和评分数据加载器是分开的。 这允许您执行额外的预处理,例如根据需要将您的培训数据映射到您的评分数据。

管道文件 pipeline-file

pipeline.py文件包含用于训练和计分的逻辑。

培训的目的是使用培训数据集中的功能和标签创建模型。 选择训练模型后,必须将x和y训练数据集适合模型,并且函数会返回经过训练的模型。

NOTE
特征是指机器学习模型用来预测标签的输入变量。

def训练

score()函数应包含评分算法并返回一个度量值以指示模型执行的成功程度。 score()函数使用评分数据集标签和经过训练的模型生成一组预测的功能。 然后,将这些预测值与评分数据集中的实际特征进行比较。 在此示例中,score()函数使用训练后的模型使用评分数据集中的标签来预测特征。 返回预测特征。

定义分数

评估器文件 evaluator-file

evaluator.py文件包含您希望如何评估训练配方以及如何拆分训练数据的逻辑。

拆分数据集 split-the-dataset

培训的数据准备阶段要求拆分用于培训和测试的数据集。 此val数据在经过训练后隐式用于评估模型。 此流程与评分是分开的。

此部分显示split()函数,该函数将数据加载到笔记本中,然后通过删除数据集中不相关的列来清理数据。 在此处,您可以执行特征工程,即从数据中的现有原始特征创建其它相关特征的过程。

拆分函数

评估经过训练的模型 evaluate-the-trained-model

evaluate()函数在模型训练后执行,并返回一个量度以指示模型执行的成功程度。 evaluate()函数使用测试数据集标签和经过训练的模型来预测一组功能。 然后将这些预测值与测试数据集中的实际特征进行比较。 在此示例中,使用的度量是precisionrecallf1accuracy。 请注意,该函数返回一个包含评估度量数组的metric对象。 这些度量用于评估训练后的模型的性能。

评估

添加print(metric)允许您查看度量结果。

度量结果

Data Saver文件 data-saver-file

datasaver.py文件包含save()函数,用于在测试评分时保存您的预测。 save()函数进行预测并使用Experience Platform Catalog个API,将数据写入您在scoring.conf文件中指定的scoringResultsDataSetId。 您可以

数据保存程序

培训和评分 training-and-scoring

当您对笔记本进行更改并想要训练您的方法时,可以选择栏顶部的相关按钮,以在单元格中创建训练运行。 选择按钮后,训练脚本的命令和输出日志将显示在笔记本中(evaluator.py单元格下)。 Conda首先安装所有依赖项,然后启动培训。

请注意,在运行评分之前,您必须至少运行一次训练。 选择​ 运行得分 ​按钮将在训练期间生成的训练模型上得分。 评分脚本出现在datasaver.py下。

出于调试目的,如果希望看到隐藏的输出,请将debug添加到输出单元格的末尾,然后重新运行它。

训练并得分

创建方法 create-recipe

编辑完方法并对训练/评分输出感到满意后,您可以通过选择右上角的​ 创建方法,从笔记本中创建方法。

选择​ 创建方法 ​后,系统会提示您输入方法名称。 此名称表示在Platform上创建的实际方法。

选择“确定”后,配方创建过程将开始。 这可能需要一些时间,并且会显示一个进度条来代替“创建方法”按钮。 完成后,您可以选择​ 查看处方 ​按钮,以转到​ ML模型 ​下的​ 处方 ​选项卡

CAUTION
  • 不删除任何文件单元格
  • 不要编辑文件单元格顶部的%%writefile
  • 不要同时在不同的笔记本中创建菜谱

后续步骤 next-steps

通过完成本教程,您已了解如何在配方生成器笔记本中创建机器学习模型。 您还学习了如何练习笔记本的配方工作流程。

要继续了解如何使用Data Science Workspace中的资源,请访问Data Science Workspace配方和模型下拉列表。

recommendation-more-help
cc79fe26-64da-411e-a6b9-5b650f53e4e9