构建与调试模型

更新时间:
复制 MD 格式

Designer提供丰富的建模组件,支持可视化构建和调试模型。以下以心脏病预测为例,演示如何在Designer工作流中构建与调试模型。

前提条件

已创建工作流。

模型构建

一个模型通常可拆分为多个细分的节点(即组件)任务,通过前后编排节点任务形成工作流,最终实现模型预期效果。建模前,建议您先拆分模型并规划好各节点任务,一个节点只完成一个最简单的任务。模型构建总体流程如下:

  1. 在左侧组件列表中搜索或找到目标组件,将组件拖入画布。

    组件列表中带紫色标识的是Alink组件(例如读CSV文件组件)。Alink组件除具备普通组件的用法外,还支持聚合成组,对组统一配置资源,提升执行效率和资源利用率。详情请参见Alink组件。

  2. 单击目标节点,在界面右侧配置组件参数。

  3. 通过连线将各节点组织成具有上下游关系的工作流。

    每个节点有一个或多个输入/输出端口。将鼠标悬浮至组件端口上,可查看端口的数据类型,据此连线。

模型实际运行时,上游节点先运行,所有上游节点均运行完成后,下游节点才会触发运行。

模型构建通常包含以下任务模块:

读取数据

在工作流中添加源/目标类型组件即可读取数据,支持MaxCompute、OSS等数据源,详情可参见组件参考:源/目标下的具体组件文档。以下以读取MaxCompute数据为例。

  1. 已在MaxCompute创建表并导入数据,详情请参见创建并使用MaxCompute表。

    以下示例在test项目下新建heartdisease表,并导入测试数据。

    --创建表
    CREATE TABLE IF NOT EXISTS heartdisease(
      age STRING COMMENT '对象的年龄。',
      sex STRING COMMENT '对象的性别,取值为female或male。',
      cp STRING COMMENT '胸部疼痛类型,痛感由重到轻依次为typical、atypical、non-anginal及asymptomatic。',
      trestbps STRING COMMENT '血压。',
      chol STRING COMMENT '胆固醇。',
      fbs STRING COMMENT '空腹血糖。如果血糖含量大于120mg/dl,则取值为true,否则取值为false。',
      restecg STRING COMMENT '心电图结果是否有T波,由轻到重依次为norm和hyp。',
      thalach STRING COMMENT '最大心跳数。',
      exang STRING COMMENT '是否有心绞痛。true表示有心绞痛,false表示没有心绞痛。',
      oldpeak STRING COMMENT '运动相对于休息的ST Depression,即ST段压值。',
      slop STRING COMMENT '心电图ST Segment的倾斜度,程度取值包括down、flat及up。',
      ca STRING COMMENT '透视检查发现的血管数。',
      thal STRING COMMENT '病发种类,由轻到重依次为norm、fix及rev。',
      `status` STRING COMMENT '是否患病。buff表示健康,sick表示患病。',
      style STRING);
    --本文仅为展示,直接导入PAI公开的测试数据
    INSERT INTO heartdisease select * from pai_online_project.heart_disease_prediction;
  2. 将读数据表组件拖入右侧画布,用于读取MaxCompute表数据。

    画布中会自动生成名称为读数据表-1的工作流节点(数字按相同组件拖入画布的先后顺序编号,首次为1,以此类推)。

  3. 在节点配置页面配置源数据表名,更多参数详情请参见读数据表。

    在画布中选中读数据表-1节点,在右侧节点配置页面的表名中填写要读取的MaxCompute表名。本示例填写为heartdisease。

    说明

    跨MaxCompute项目(Project)读取表数据时,表名需使用项目名.表名格式(例如test2.heartdisease),并确认您具有该项目的权限。

  4. 将右侧节点配置页面切换到字段信息页签,查看该公开数据的字段详情,确认各字段的名称和类型,为后续数据预处理做准备。

数据预处理

读取数据后,通常需要预处理数据,以满足训练或预测模型的输入要求。Designer提供丰富的数据预处理和大模型数据处理组件。

本示例的数据预处理阶段依次使用SQL脚本、类型转换、归一化和拆分四个组件,位于读数据表与逻辑回归二分类之间。

此外,您可以使用SQL脚本组件自定义SQL脚本。例如,本示例通过SQL脚本转换输入特征的数据类型,脚本如下:

select age,
(case sex when 'male' then 1 else 0 end) as sex,
(case cp when 'angina' then 0  when 'notang' then 1 else 2 end) as cp,
trestbps,
chol,
(case fbs when 'true' then 1 else 0 end) as fbs,
(case restecg when 'norm' then 0  when 'abn' then 1 else 2 end) as restecg,
thalach,
(case exang when 'true' then 1 else 0 end) as exang,
oldpeak,
(case slop when 'up' then 0  when 'flat' then 1 else 2 end) as slop,
ca,
(case thal when 'norm' then 0  when 'fix' then 1 else 2 end) as thal,
(case status  when 'sick' then 1 else 0 end) as ifHealth
from  ${t1};

模型训练

模型组件通常上游接入预处理后的数据,下游接入预测或推理等组件。模型组件可能有一个或多个输入/输出端口。将鼠标悬浮至组件端口上可查看端口类型,据此正确连线。

以逻辑回归二分类组件为例,该组件有2个输出端口:

  • 逻辑回归模型:训练后的模型输出端口,可作为预测等组件的模型结果输入。

  • PMML:模型部署通常依赖PMML模型。例如,如果您需要通过预置的Processor(如PMML Processor)部署模型,需在支持生成模型的组件参数中选中是否生成PMML,再运行组件。

模型预测或推理

模型训练后,您可以连接预测或推理等组件,测试模型效果。

以预测组件为例,预测组件有2个输入端口:

  • 模型结果输入:接入模型训练阶段产出的模型。

  • 预测结果输入:接入预处理后的测试数据。

将拆分后的测试数据连接至预测节点的预测数据输入端口,将逻辑回归二分类模型连接至模型结果输入端口。在右侧预测节点配置面板中,设置特征列(用于预测的特征字段)、原样输出列(建议添加label列,便于后续评估)、输出结果列名为prediction_result、输出分数列名为prediction_score、输出详细列名为prediction_detail。

模型评估

部分模型提供评估组件,您可以使用对应评估组件,通过指标分析模型效果。

例如,机器学习提供以下评估组件,您可根据需要将评估组件作为预测组件的下游。

评估组件包括二分类评估、回归模型评估、聚类模型评估、混淆矩阵和多分类评估。在工作流画布中,将所需评估节点连接到预测节点下游并运行,然后单击工具栏中的可视化图标查看评估结果。

模型调试

调试运行

  • 整个工作流:单击画布左上方的运行(运行)图标,直接运行整个工作流。工作流较复杂时,建议您分模块运行某个节点或部分节点,方便调试。

  • 单个或局部组件:右键单击目标组件,运行单个或局部节点,支持多种运行方式。

    具体运行方式包括执行该节点、从此处开始执行、执行到此处、从根节点执行到此处和执行该节点的下游节点。

运行成功后,对应组件上会显示image;失败则显示image。您可以右键单击组件查看日志及结果。

查看日志及结果

  • 组件运行成功后,右键单击组件并选择查看数据,查看产出数据。

    Designer支持将部分组件的数据转化为图形和图表,直观展示复杂数据和分析结果,帮助您快速获取关键信息、识别趋势和模式,更高效地分析和决策。单击可视化分析或画布上方的可视化图标,即可查看可视化分析结果。详情请参见可视化分析。

  • 查看日志:组件运行失败时,右键单击对应组件并选择查看日志,排查失败原因。

查看运行任务

单击画布右上方全部任务查看,查看所有历史任务的运行详情。建模过程中,您的每次运行都会被记录为一次历史任务。每次运行涉及的节点、节点配置和产出结果均会保留在历史任务中。

在弹出的历史任务面板中,每条任务的操作列包含详情、模型、版本回滚和分享链接。单击详情可查看该任务的节点配置及产出结果。

在任务详情页面的左侧画布中,单击目标节点(如SQL脚本-3),右侧面板会展示该节点的详细信息。选择任务日志页签可查看节点执行日志,也可切换至运行信息或输出结果页签查看对应内容。

说明

如需版本回滚,建议先查看历史任务的详情,确认回滚的版本是否正确。同时,回滚前建议将最新任务保存并运行一次。如果回滚后出错,您可以再次回滚至最新的任务状态。

相关文档