SageMaker 调试程序 XGBoost 训练报告 - Amazon SageMaker
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

SageMaker 调试程序 XGBoost 训练报告

对于 SageMaker XGBoost 训练作业,请使用 调试程序 CreateXgboostReport 规则接收训练进度和结果的全面训练报告。按照本指南,在构建 CreateXgboostReport 评估程序时指定 XGBoost 规则,使用 Amazon SageMaker Python SDK 或 Amazon S3 控制台下载报告,然后您可以解释分析结果。

重要

要使用新的 调试程序 功能,您需要升级 SageMaker Python 开发工具包和 SMDebug 客户端库。在 iPython 内核、Jupyter 笔记本或 JupyterLab 环境中,运行以下代码以安装最新版本的库并重新启动内核。

import sys import IPython !{sys.executable} -m pip install -U sagemaker smdebug IPython.Application.instance().kernel.do_shutdown(True)

使用 SageMaker XGBoost 报告规则构建 调试程序 XGBoost 评估程序

在为 SageMaker 训练作业构建 XGBoost 评估程序时,请指定规则,如以下示例代码中所示。

规则从您的训练作业中收集以下输出张量:CreateXgboostReport

  • hyperparameters – 在第一步中保存。

  • metrics – 每 5 个步骤保存一次损失和准确性。

  • feature_importance – 每 5 个步骤保存一次。

  • predictions – 每 5 个步骤保存一次。

  • labels – 每 5 个步骤保存一次。

输出张量保存在默认的 S3 存储桶中。例如:s3://sagemaker-<region>-<12digit_account_id>/<base-job-name>/debug-output/

Using the SageMaker generic estimator
import boto3 import sagemaker from sagemaker.estimator import Estimator from sagemaker import image_uris from sagemaker.debugger import Rule, rule_configs rules=[ Rule.sagemaker(rule_configs.create_xgboost_report()) ] region = boto3.Session().region_name xgboost_container=sagemaker.image_uris.retrieve("xgboost", region, "1.2-1") estimator=Estimator( role=sagemaker.get_execution_role() image_uri=xgboost_container, base_job_name="debugger-xgboost-report-demo", instance_count=1, instance_type="ml.m5.2xlarge", # Add the Debugger XGBoost report rule rules=rules ) estimator.fit(wait=False)

下载 调试程序 XGBoost 训练报告

在训练作业运行时或使用 调试程序 和 XGBoost (CLI) 完成作业时,下载 Amazon SageMaker Python SDK AWS Command Line Interface 训练报告。

Download using the SageMaker Python SDK and AWS CLI
  1. 检查当前作业的默认 S3 输出基本 URI。

    estimator.output_path
  2. 检查当前作业名称。

    estimator.latest_training_job.job_name
  3. 调试程序 报告存储在 XGBoost 下。<default-s3-output-base-uri>/<training-job-name>/rule-output 按如下所示配置规则输出路径:

    rule_output_path = estimator.output_path + estimator.latest_training_job.job_name + "/rule-output"
  4. 要检查是否生成了报告,请使用 rule_output_pathaws s3 ls 选项以递归方式在 --recursive 下列出目录和文件。

    ! aws s3 ls {rule_output_path} --recursive

    这应返回名为 CreateXgboostReportProfilerReport-1234567890 的自动生成的文件夹下的文件的完整列表。 训练报告存储在 XGBoost 中,分析报告存储在 CreateXgboostReport 文件夹中。ProfilerReport-1234567890要了解有关默认情况下使用 XGBoost 训练作业生成的分析报告的更多信息,请参阅SageMaker 调试程序 分析报告

    
                                        规则输出的示例。

    是由 xgboost_report.html 自动生成的 XGBoost 训练报告。调试程序是一个 Jupyter 笔记本,用于将训练结果聚合到报告中。xgboost_report.ipynb您可以下载所有文件,浏览 HTML 报告文件,并使用笔记本修改报告。

  5. 使用 aws s3 cp 以递归方式下载文件。 以下命令将所有规则输出文件保存到当前工作目录下的 ProfilerReport-1234567890 文件夹中。

    ! aws s3 cp {rule_output_path} ./ --recursive
    提示

    如果您使用的是 Jupyter Notebook 服务器,请运行 !pwd 以验证当前工作目录。

  6. /CreateXgboostReport 目录下,打开 xgboost_report.html。 如果您使用的是 JupyterLab,请选择 Trust HTML (信任 HTML) 以查看自动生成的 调试程序 训练报告。

    
                                        规则输出的示例。
  7. 打开 xgboost_report.ipynb 文件以探索如何生成报告。您可以使用 Jupyter 笔记本文件自定义和扩展训练报告。

Download using the Amazon S3 console
  1. 登录 AWS 管理控制台并通过以下网址打开 Amazon S3 控制台:https://console.amazonaws.cn/s3/

  2. 搜索基本 S3 存储桶。例如,如果您尚未指定任何基本作业名称,基本 S3 存储桶名称应采用以下格式:sagemaker-<region>-111122223333。 通过 Find bucket by name 字段查找基本 S3 存储桶。

    
                                        控制台中的“Find bucket by name (按名称查找存储桶)”字段。Amazon S3
  3. 在基本 S3 存储桶中,通过在 Find objects by prefix (按前缀查找对象) 中输入作业名称前缀,然后选择训练作业名称来查找训练作业名称。

    
                                        控制台中的“Find objects by prefix (按前缀查找对象)”字段。Amazon S3
  4. 在训练作业的 S3 存储桶中,选择 rule-output/ 子文件夹。由 调试程序 收集的训练数据必须有三个子文件夹:debug-output/profiler-output/rule-output/

    
                                        规则输出 S3 存储桶 URI 的示例。
  5. rule-output/ 文件夹中,选择 CreateXgboostReport/ 文件夹。该文件夹包含 xbgoost_report.html(html 中的自动生成的报告)和 xbgoost_report.ipynb(Jupyter 笔记本,具有用于生成报告的脚本)。

  6. 选择 xbgoost_report.html 文件,选择 Download actions (下载操作),然后选择 Download (下载)

    
                                        规则输出 S3 存储桶 URI 的示例。
  7. 在 Web 浏览器中打开下载的 xbgoost_report.html 文件。

调试程序 XGBoost 训练报告演练

本部分将指导您完成 调试程序 XGBoost 训练报告。该报告会自动聚合,具体取决于输出张量正则表达式,从而识别您的训练作业的类型在二进制分类、多类别分类和回归之间。

数据集的真实标签的分配

此直方图显示原始数据集中已标记的分类(用于分类)或值(用于回归)的分布。数据集中的不一致性可能会导致不准确。此可视化可用于以下模型类型:二进制分类、多类别和回归。


                        数据集图表的 true 标签的分配的示例。

损失与步骤图表

这是一个折线图,显示了整个训练步骤在训练数据和验证数据方面的损失进度。损失是您在目标函数中定义的值,如均方误差。您可以从此图中衡量模型是过度拟合还是欠拟合。本节还提供了见解,您可以使用这些见解来确定如何解决过度拟合和欠拟合问题。此可视化可用于以下模型类型:二进制分类、多类别和回归。


                        损失与步骤图形示例。

功能重要性

提供了三种不同类型的功能重要性可视化:权重、增益和覆盖。我们为报告中的三个部分分别提供了详细定义。功能重要性可视化可帮助您了解训练数据集中的功能对预测有贡献。功能重要性可视化可用于以下模型类型:二进制分类、多分类和回归。


                        功能重要性图示例。

Confusion 矩阵

此可视化仅适用于二进制和多类别分类模型。准确性本身可能不足以评估模型性能。对于某些使用案例(如医疗保健和欺诈检测),了解假阳性比率和假阴性比率也很重要。混淆矩阵为您提供了用于评估模型性能的其他维度。


                        混淆矩阵的示例。

混淆矩阵的计算

本部分为您提供了有关模型的精度、召回率和 F1 分数的微型、宏和加权指标的更多信息。


                        评估混淆矩阵。

每个对角元素迭代的准确率

此可视化仅适用于二进制分类和多类别分类模型。这是一个折线图,它在每个类的训练步骤中绘制混淆矩阵中的对角值。此图显示了每个类在整个训练步骤的准确性。您可以从此图中识别性能欠佳的类。


                        每个对角线元素在迭代图中的准确率示例。

接收机操作特征曲线

此可视化仅适用于二进制分类模型。接收机操作特征曲线通常用于评估二进制分类模型的性能。曲线的 y 轴为真正率 (TPF),x 轴为假正率 (FPR)。该图还显示曲线下面积 (AUC) 的值。AUC 值越大,分类器的预测就越准确。您还可以使用 ROC curve 来了解 TPR 和 FPR 之间的权衡,并为您的使用案例确定最佳分类阈值。可以调整分类阈值以调整模型的行为,从而减少某种或其他类型的错误 (FP/FN) 中的多种错误。


                        一个接收机操作特征曲线图示例。

在上次保存的步骤分发剩余项

此可视化是一个列图,显示了 调试程序 捕获的最后一步中的剩余分配。在此可视化中,您可以检查残差分布是否接近于以零为中心的正态分布。如果残差偏斜,您的特征可能不足以预测标签。


                        在上次保存的分步图中分发残差的示例。

每个标签条柱迭代的绝对验证错误

此可视化仅适用于回归模型。实际目标值分为 10 个间隔。此可视化显示在折线图中,验证错误在整个训练步骤中的进度。绝对验证错误是验证期间预测与实际值之间的差值的绝对值。您可以从此可视化中确定性能欠佳的间隔。


                        每个标签条柱迭代图形的一个绝对验证错误示例。