SageMaker XGBoost 的调试器交互式报告 - Amazon SageMaker

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

SageMaker XGBoost 的调试器交互式报告

接收 Debugger 自动生成的训练报告。Debugger 报告提供了有关您训练作业的见解,并给出改善模型性能的建议。

注意

您可以在训练作业运行期间或作业完成后下载 Debugger 报告。在训练期间,Debugger 同时更新报告,反映当前规则的评估状态。只有在训练作业完成后,您才能下载完整的 Debugger 报告。

重要

报告中提供的图表和建议仅供参考,并不确保准确无误。您应负责对其中的信息进行单独评测。

SageMaker 调试器 xgBoost 训练报告

对于 SageMaker XGBoost 训练作业,请使用调试器CreateXgboostReport规则接收有关训练进度和结果的全面训练报告。按照本指南,在构建 XGBoost 估算器时指定CreateXgboostReport规则,使用 Amaz on Python SDK 或 Amaz SageMaker on S3 控制台下载报告,并深入了解训练结果。

重要

报告中提供的图表和建议仅供参考,并不确保准确无误。您应负责对其中的信息进行单独评测。

使用调试器 SageMaker xgBoost 报告规则构建 xgBoost 估算器

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

  • hyperparameters – 在第 1 步时保存。

  • metrics – 每 5 步保存损失和准确性。

  • feature_importance – 每 5 步保存一次。

  • predictions – 每 5 步保存一次。

  • labels – 每 5 步保存一次。

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

为 XGBoost 训练作业构造 SageMaker 估算器时,请指定规则,如以下示例代码所示。

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)

下载 Debugger XGBoost 训练报告

使用 Amaz on Pyth SageMaker on SDK AWS Command Line Interface 和 (CLI) 在训练作业运行时或任务完成后下载 Debugger XGBoost 训练报告。

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

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

    estimator.latest_training_job.job_name
  3. Debugger 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_path 下,使用 aws s3 ls 以及 --recursive 选项递归列出目录和文件。

    ! aws s3 ls {rule_output_path} --recursive

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

    规则输出的示例。

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

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

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

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

  6. /CreateXgboostReport 目录下,打开 xgboost_report.html。如果您正在使用 JupyterLab,请选择 T rust HTML 以查看自动生成的调试器训练报告。

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

Download using the Amazon S3 console
  1. 登录 AWS Management Console 并打开 Amazon S3 控制台,网址为 https://console.aws.amazon.com/s3/

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

    Amazon S3 控制台中的“按名称查找存储桶”字段。
  3. 在基本 S3 存储桶中,在按前缀查找对象中输入您的作业名称前缀来查找训练作业名称,然后选择训练作业名称。

    Amazon S3 控制台中的“按前缀查找对象”字段。
  4. 在训练作业的 S3 存储桶中,选择 rule-output/ 子文件夹。对于 Debugger 收集的训练数据,必须要有三个子文件夹:debug-output/profiler-output/rule-output/

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

  6. 选择 xbgoost_report.html 文件,选择下载操作,然后选择下载

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

Debugger XGBoost 训练报告演练

此部分将向您介绍 Debugger XGBoost 训练报告。报告会根据输出张量正则表达式自动聚合,识别您的训练作业属于二进制分类、多分类器还是回归类型。

重要

报告中提供的图表和建议仅供参考,并不确保准确无误。您应负责对其中的信息进行单独评测。

数据集的真实标签分布

此直方图显示原始数据集内的标注类(用于分类)或值(用于回归)的分布情况。数据集内的偏斜可能会导致不准确的情况。此可视化对象可用于以下模型类型:二进制分类、多分类和回归。

数据集图表的真实标签分布的示例。

损失与步骤图

此折线图显示整个训练步骤中,训练数据和验证数据上损失的进展。损失由您在目标函数中定义,例如平方误差。您可以根据此图来衡量模型是过度拟合还是欠拟合。此部分还提供了深入分析,您可以用来确定如何解决过度拟合和欠拟合的问题。此可视化对象可用于以下模型类型:二进制分类、多分类和回归。

损失与步骤图的示例。

特征重要性

可视化效果中提供了三种不同类型的特征重要性:权重、增益和覆盖率。我们在报告中为三者分别提供了详细的定义。特征重要性可视化对象可协助您了解训练数据集内的哪些特征对预测作出了贡献。功能重要性可视化对象可用于以下模型类型:二进制分类、多分类器和回归。

特征重要性图的示例。

混淆矩阵

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

混淆矩阵的示例。

混淆矩阵的评估

此部分为您提供了有关模型查准率、查全率和 F1 分数的微观、宏观和加权指标的更多见解。

评估混淆矩阵。

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

此可视化对象仅可用于二进制分类和多分类器模型。此折线图描绘了各个类的整个训练步骤中,混淆矩阵中的对角线值。此图显示在整个训练步骤中,各个类的准确性进展情况。您可以从此图确定表现不佳的类。

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

接收者操作特征曲线

此可视化对象仅适用于二进制分类模型。接收者操作特征曲线通常用于评估二进制分类模型的性能。曲线的 y 轴为真阳性率 (TPR),x 轴为假阳性率 (FPR)。该图还显示曲线下面积 (AUC) 的值。AUC 值越高,分类器的预测能力就越好。您还可以使用 ROC 曲线了解 TPR 和 FPR 之间的权衡,并确定您的使用场景的最佳分类阈值。分类阈值可以调整,用以调整模型的行为,来减少类型多个错误或另一种类型的错误 (FP/FN)。

接收者操作特征曲线图示例。

最后保存步骤的残差分布

此可视化对象是一个柱状图,显示 Debugger 在最后的步骤中捕获的残余分布。在此可视化对象中,您可以检查残差分布是否接近以零为中心的正态分布。如果残差出现偏斜,则您的特征可能不足以预测标签。

最后保存步骤中残差分布图示例。

迭代期间每个标签箱的绝对验证误差

此可视化对象仅适用于回归模型。实际目标值拆分为 10 个间隔。此可视化对象显示了折线图中,对于整个训练步骤,每个间隔的验证错误的进展情况。绝对验证误差是验证期间,预测值与实际值之差的绝对值。您可以从此可视化对象中识别性能不佳的间隔。

迭代期间每个标签箱的绝对验证误差图示例。