

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

# AutoGluon-表格
<a name="autogluon-tabular"></a>

[AutoGluon-Tabular](https://auto.gluon.ai/stable/index.html) 是一种流行的开源 AutoML 框架，可在未经处理的表格数据集中训练高度准确的机器学习模型。与主要关注模型和超参数选择的现有 AutoML 框架不同， AutoGluon-Tabular 通过整合多个模型并将它们堆叠成多个层来取得成功。本页包含有关 Amazon EC2 实例推荐和 AutoGluon-Tabular 示例笔记本的信息。

# 如何使用 SageMaker AI AutoGluon-表格
<a name="autogluon-tabular-modes"></a>

你可以使用 AutoGluon-Tabular 作为 Amazon A SageMaker I 的内置算法。下一节介绍如何在 Pyth SageMaker on 软件开发工具包中使用 AutoGluon-Tabular。有关如何在 Amazon SageMaker Studio Classic 用户界面中使用 AutoGluon-Tabular 的信息，请参阅。[SageMaker JumpStart 预训练模型](studio-jumpstart.md)
+ **使用 AutoGluon-Tabular 作为内置算法**

  使用 AutoGluon-Tabular 内置算法来构建 AutoGluon-Tabular 训练容器，如以下代码示例所示。你可以使用 AI API（如果使用 Amaz [on Pyth SageMaker on SDK](https://sagemaker.readthedocs.io/en/stable) 版本 2 则使用 `image_uris.retrieve` AP SageMaker I）自动发现 AutoGluon-Tabular 内置算法图像 UR `get_image_uri` I。

  指定 AutoGluon-Tabular 图像 URI 后，您可以使用 AutoGluon-Tabular 容器使用 AI Estimator AP SageMaker I 构造估计器并启动训练作业。 AutoGluon-Tabular 内置算法在脚本模式下运行，但训练脚本是为你提供的，无需替换。如果您在使用脚本模式创建 SageMaker 训练作业方面有丰富的经验，则可以合并自己的 AutoGluon-Tabular 训练脚本。

  ```
  from sagemaker import image_uris, model_uris, script_uris
  
  train_model_id, train_model_version, train_scope = "autogluon-classification-ensemble", "*", "training"
  training_instance_type = "ml.p3.2xlarge"
  
  # Retrieve the docker image
  train_image_uri = image_uris.retrieve(
      region=None,
      framework=None,
      model_id=train_model_id,
      model_version=train_model_version,
      image_scope=train_scope,
      instance_type=training_instance_type
  )
  
  # Retrieve the training script
  train_source_uri = script_uris.retrieve(
      model_id=train_model_id, model_version=train_model_version, script_scope=train_scope
  )
  
  train_model_uri = model_uris.retrieve(
      model_id=train_model_id, model_version=train_model_version, model_scope=train_scope
  )
  
  # Sample training data is available in this bucket
  training_data_bucket = f"jumpstart-cache-prod-{aws_region}"
  training_data_prefix = "training-datasets/tabular_binary/"
  
  training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}/train"
  validation_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}/validation"
  
  output_bucket = sess.default_bucket()
  output_prefix = "jumpstart-example-tabular-training"
  
  s3_output_location = f"s3://{output_bucket}/{output_prefix}/output"
  
  from sagemaker import hyperparameters
  
  # Retrieve the default hyperparameters for training the model
  hyperparameters = hyperparameters.retrieve_default(
      model_id=train_model_id, model_version=train_model_version
  )
  
  # [Optional] Override default hyperparameters with custom values
  hyperparameters[
      "auto_stack"
  ] = "True"
  print(hyperparameters)
  
  from sagemaker.estimator import Estimator
  from sagemaker.utils import name_from_base
  
  training_job_name = name_from_base(f"built-in-algo-{train_model_id}-training")
  
  # Create SageMaker Estimator instance
  tabular_estimator = Estimator(
      role=aws_role,
      image_uri=train_image_uri,
      source_dir=train_source_uri,
      model_uri=train_model_uri,
      entry_point="transfer_learning.py",
      instance_count=1,
      instance_type=training_instance_type,
      max_run=360000,
      hyperparameters=hyperparameters,
      output_path=s3_output_location
  )
  
  # Launch a SageMaker Training job by passing the S3 path of the training data
  tabular_estimator.fit(
      {
          "training": training_dataset_s3_path,
          "validation": validation_dataset_s3_path,
      }, logs=True, job_name=training_job_name
  )
  ```

  有关如何将 AutoGluon-Tabular 设置为内置算法的更多信息，请参阅以下笔记本示例。这些示例中使用的任何 S3 存储桶都必须与用于运行它们的笔记本实例位于同一 AWS 区域。
  + [使用 Amazon A SageMaker I 进行表格分类 AutoGluon-表格算法](https://github.com/aws/amazon-sagemaker-examples/blob/main/introduction_to_amazon_algorithms/autogluon_tabular/Amazon_Tabular_Classification_AutoGluon.ipynb)
  + [使用 Amazon A SageMaker I 进行表格回归 AutoGluon ——表格算法](https://github.com/aws/amazon-sagemaker-examples/blob/main/introduction_to_amazon_algorithms/autogluon_tabular/Amazon_Tabular_Regression_AutoGluon.ipynb)

# AutoGluon-Tabular 算法的输入和输出接口
<a name="InputOutput-AutoGluon-Tabular"></a>

梯度提升对表格数据进行操作，其中行表示观察、一个列表示目标变量或标签，其余列表示特征。

 AutoGluon-Tabul SageMaker ar 的人工智能实现支持用于训练和推理的 CSV：
+ 对于**训练 ContentType**，有效的输入必须是*文本/* csv。
+ 要进行**推理 ContentType**，有效的输入必须是*文本* /csv。

**注意**  
对于 CSV 训练，算法假定目标变量在第一列中，而 CSV 没有标头记录。  
对于 CSV 推理，算法假定 CSV 输入没有标签列。

**训练数据、验证数据和类别特征的输入格式**

请注意如何格式化训练数据，以便输入到 AutoGluon-Tabular 模型中。您必须提供包含训练和验证数据的 Amazon S3 存储桶的路径。您还可以包含类别特征列表。请使用 `training` 和 `validation` 通道来提供您的输入数据。您也可以只使用 `training` 通道。

**使用 `training` 和 `validation` 通道**

您可以通过两条 S3 路径来提供输入数据，一条用于 `training` 通道，一条用于 `validation` 通道。每个 S3 路径可以是 S3 前缀，也可以是指向一个特定 CSV 文件的完整 S3 路径。目标变量应位于 CSV 文件的第一列。预测器变量（特征）应位于其余列。验证数据用于在每次提升迭代结束时计算验证分数。当验证分数停止提高时，将应用提前停止。

如果您的预测器包含类别特征，则可以在与您的训练数据文件相同的位置，提供一个名为 `categorical_index.json` 的 JSON 文件。如果您为类别特征提供 JSON 文件，则您的 `training` 通道必须指向 S3 前缀而不是特定 CSV 文件。此文件应包含一个 Python 字典，其中的键是字符串 `"cat_index_list"`，值是唯一整数列表。值列表中的每个整数都应指示训练数据 CSV 文件中对应分类特征的列索引。每个值都应为正整数（大于零，因为零表示目标值），小于 `Int32.MaxValue` (2147483647)，并且小于列的总数。只应有一个类别索引 JSON 文件。

**仅使用 `training` 通道**：

您也可以通过单个 S3 路径，为 `training` 通道提供输入数据。此 S3 路径指向的目录中应包含一个名为 `training/` 的子目录，而该子目录中包含 CSV 文件。您可以选择在相同位置添加另一个名为 `validation/` 的子目录，该子目录同样包含 CSV 文件。如果未提供验证数据，则会随机采样 20% 的训练数据作为验证数据。如果您的预测器包含类别特征，则可以在与您的数据子目录相同的位置，提供一个名为 `categorical_index.json` 的 JSON 文件。

**注意**  
对于 CSV 训练输入模式，供算法使用的内存总量（实例计数乘以 `InstanceType` 中的可用内存）必须能够容纳训练数据集。

SageMaker AI AutoGluon-Tabular 使用该`autogluon.tabular.TabularPredictor`模块对模型进行序列化或反序列化，可用于保存或加载模型。

**在框架中使用通过 A SageMaker I 训练的模型 AutoGluon-Tabular AutoGluon**
+ 使用以下 Python 代码：

  ```
  import tarfile
  from autogluon.tabular import TabularPredictor
  
  t = tarfile.open('model.tar.gz', 'r:gz')
  t.extractall()
  
  model = TabularPredictor.load(model_file_path)
  
  # prediction with test data
  # dtest should be a pandas DataFrame with column names feature_0, feature_1, ..., feature_d
  pred = model.predict(dtest)
  ```

## AutoGluon-表格算法的 Amazon EC2 实例推荐
<a name="Instance-AutoGluon-Tabular"></a>

SageMaker AI AutoGluon-Tabular 支持单实例 CPU 和单实例 GPU 训练。尽管每个实例的成本更高，但 GPUs 训练速度更快，从而更具成本效益。要利用 GPU 训练，请将实例类型指定为 GPU 实例之一（例如 P3）。 SageMaker AI AutoGluon-Tabular 目前不支持多 GPU 训练。

## AutoGluon-表格样本笔记本
<a name="autogluon-tabular-sample-notebooks"></a>

 下表概述了各种示例笔记本，这些笔记本解决了 Amazon SageMaker AI AutoGluon-Tabular 算法的不同用例。


****  

| **笔记本标题** | **描述** | 
| --- | --- | 
|  [使用 Amazon A SageMaker I 进行表格分类 AutoGluon-表格算法](https://github.com/aws/amazon-sagemaker-examples/blob/main/introduction_to_amazon_algorithms/autogluon_tabular/Amazon_Tabular_Classification_AutoGluon.ipynb)  |  本笔记本演示了如何使用 Amazon SageMaker AI AutoGluon-Tabular 算法来训练和托管表格分类模型。  | 
|  [使用 Amazon A SageMaker I 进行表格回归 AutoGluon ——表格算法](https://github.com/aws/amazon-sagemaker-examples/blob/main/introduction_to_amazon_algorithms/autogluon_tabular/Amazon_Tabular_Regression_AutoGluon.ipynb)  |  本笔记本演示了如何使用 Amazon SageMaker AI AutoGluon-Tabular 算法来训练和托管表格回归模型。  | 

有关如何创建和访问可用于在 SageMaker AI 中运行示例的 Jupyter 笔记本实例的说明，请参阅。[Amazon SageMaker 笔记本实例](nbi.md)创建并打开笔记本实例后，选择 “**SageMaker AI 示例**” 选项卡以查看所有 SageMaker AI 示例的列表。要打开笔记本，请选择其**使用**选项卡，然后选择**创建副本**。

# AutoGluon-Tabular 的工作原理
<a name="autogluon-tabular-HowItWorks"></a>

AutoGluon-Tabular 执行高级数据处理、深度学习和多层模型集成方法。它会自动识别每列中的数据类型，以实现可靠的数据预处理，包括对文本字段的特殊处理。

AutoGluon 适合各种模型，从 off-the-shelf增强的树木到自定义的神经网络。这些模型以一种新颖的方式组合：模型堆叠在多层中，并以分层的方式进行训练，从而确保在限定的时间内将原始数据转换为高质量的预测。此过程通过仔细跟踪示例，以各种方式拆分数据，从而缓解过度拟合。 out-of-fold

 AutoGluon-Tabular 算法在机器学习竞赛中表现良好，因为它可以很好地处理各种数据类型、关系和分布。您可以使用 AutoGluon-Tabular 来解决回归、分类（二进制和多类）和排名问题。

请参阅下图，该图说明了多层堆叠策略的工作方式。

![\[AutoGluon的多层堆叠策略显示为两个堆叠层。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/autogluon_tabular_illustration.png)


有关更多信息，请参见 *[AutoGluon-Tabular：适用于结构化数据的强大而准确的 AutoML](https://arxiv.org/pdf/2003.06505.pdf)*。

# AutoGluon-表格超参数
<a name="autogluon-tabular-hyperparameters"></a>

下表包含 Amazon A SageMaker I AutoGluon-Tabular 算法所需或最常用的超参数子集。用户可以设置这些参数，以便于从数据中估算模型参数。 SageMaker AI AutoGluon-Tabular 算法是开源 [AutoGluon-](https://github.com/awslabs/autogluon) Tabular 软件包的实现。

**注意**  
默认超参数基于 [AutoGluon-表格样本笔记本](autogluon-tabular.md#autogluon-tabular-sample-notebooks)中的示例数据集。

默认情况下， SageMaker AI AutoGluon-Tabular 算法会根据分类问题的类型自动选择评估指标。该算法根据数据中的标签数量来检测分类问题的类型。对于回归问题，评估指标为均方根误差。对于二元分类问题，评估指标是接收器操作特性曲线 (AUC) 下方的面积。对于多元分类问题，评估指标是准确性。您可以使用 `eval_metric` 超参数来更改默认评估指标。有关 AutoGluon-Tabular 超参数的更多信息，包括描述、有效值和默认值，请参阅下表。


| 参数名称 | 说明 | 
| --- | --- | 
| eval\$1metric |  验证数据的评估指标。如果 `eval_metric` 设置为默认值 `"auto"`，则算法会根据分类问题的类型自动选择评估指标： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/autogluon-tabular-hyperparameters.html) 有效值：字符串，有关有效值，请参阅[AutoGluon 文档](https://auto.gluon.ai/stable/api/autogluon.tabular.TabularPredictor.html)。 默认值：`"auto"`。  | 
| presets |  `fit()` 中各个参数的预设配置列表。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/autogluon-tabular-hyperparameters.html) 有关更多详细信息，请参阅[AutoGluon 预测变量。](https://auto.gluon.ai/stable/api/autogluon.tabular.TabularPredictor.html) 有效值：字符串，以下任意值：（`"best_quality"`、`"high_quality"`、`good_quality"`、`"medium_quality"`、`"optimize_for_deployment"`、` or "interpretable"`）。 默认值：`"medium_quality"`。  | 
| auto\$1stack |  是否 AutoGluon 应自动使用装袋和多层堆叠组合来提高预测精度。如果您愿意承受更长的训练时间以最大限度地提高预测精度，请将 `auto_stack` 设置为 `"True"`。这会根据数据集属性自动设置 `num_bag_folds` 和 `num_stack_levels` 参数。 有效值：字符串，`"True"` 或 `"False"`。 默认值：`"False"`。  | 
| num\$1bag\$1folds |  用于模型装袋的折叠次数。`num_bag_folds` 等于 `k` 时，训练时间大约增加 `k` 倍。设置 `num_bag_folds` 为 0 可停用装袋。默认情况下，此功能处于禁用状态，但我们建议使用介于 5 到 10 之间的值，以最大限度地提高预测性能。增加 `num_bag_folds` 会得到偏差较低但更容易过度拟合的模型。对于此参数，1 是无效值，将引发 `ValueError`。大于 10 的值可能会导致收益递减，甚至可能由于过度拟合而损害整体结果。要进一步改善预测，请避免增加 `num_bag_folds`，而是改为增加 `num_bag_sets`。 有效值：字符串，介于 `"0"` 和 `"10"` 之间（含）的任何整数。 默认值：`"0"`。  | 
| num\$1bag\$1sets |  要执行的 k-折装袋重复次数（值必须大于或等于 1）。装袋期间模型训练总次数等于 `num_bag_folds` \$1 `num_bag_sets`。如果未指定 `time_limit`，则此参数默认为 1。如果未指定 `num_bag_folds`，则禁用此参数。大于 1 的值可以实现卓越的预测性能，尤其是在较小的问题上且启用堆叠的情况下。 有效值：整数，范围：[`1`，`20`]。 默认值：`1`。  | 
| num\$1stack\$1levels |  堆栈集合中使用的堆叠层数。模型训练时间大致增加 `num_stack_levels` \$1 1 倍。将此参数设置为 0 可停用堆栈组合。默认情况下，此参数处于禁用状态，但我们建议使用介于 1 到 3 之间的值，以最大限度地提高预测性能。为防止过度拟合和 `ValueError`，`num_bag_folds` 必须大于或等于 2。 有效值：浮点型，范围：[`0`，`3`]。 默认值：`0`。  | 
| refit\$1full |  正常训练过程结束后，是否在所有数据（训练和验证）上重新训练所有模型。有关更多详细信息，请参阅[AutoGluon 预测变量。](https://auto.gluon.ai/stable/api/autogluon.tabular.TabularPredictor.html) 有效值：字符串，`"True"` 或 `"False"`。 默认值：`"False"`。  | 
| set\$1best\$1to\$1refit\$1full |  是否更改预测器用于预测的默认模型。如果 `set_best_to_refit_full` 设置为 `"True"`，则默认模型将更改为在重新拟合（由 `refit_full` 激活）时，得到最高验证分数的模型。仅在设置 `refit_full` 后才有效。 有效值：字符串，`"True"` 或 `"False"`。 默认值：`"False"`。  | 
| save\$1space |  是否需要删除在新数据上进行预测所不需要的辅助模型文件，从而减少预测器所用的内存和磁盘大小。这对推理精度没有影响。如果唯一的目标是使用训练后的模型进行预测，我们建议将 `save_space` 设置为 `"True"`。如果 `save_space` 设置为 `"True"`，则某些高级功能可能不再可用。有关更多详细信息，请参阅 `[predictor.save\$1space()](https://auto.gluon.ai/stable/api/autogluon.tabular.TabularPredictor.save_space.html)` 文档。 有效值：字符串，`"True"` 或 `"False"`。 默认值：`"False"`。  | 
| verbosity |  打印消息的详细程度。`verbosity` 的等级范围从 `0` 到 `4`，级别越高，对应的打印报表更详细。`verbosity` 为 `0` 时将隐藏警告。 有效值：整数，以下任意值：（`0`、`1`、`2`、`3` 或 `4`）。 默认值：`2`。  | 

# 调整 AutoGluon表格模型
<a name="autogluon-tabular-tuning"></a>

尽管 AutoGluon-Tabular 可用于模型调整，但其设计可以使用堆叠和集成方法提供良好的性能，这意味着不需要进行超参数优化。 AutoGluon-Tabular 没有专注于模型调整，而是通过将模型堆叠成多层并以分层方式进行训练来取得成功。

有关 AutoGluon-Tabular 超参数的更多信息，请参见。[AutoGluon-表格超参数](autogluon-tabular-hyperparameters.md)