使用 AutoML API 为表格数据创建回归或分类作业 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用 AutoML API 为表格数据创建回归或分类作业

您可以在 Autopilot 或 Amazon CLI支持的任何语言中,通过调用 CreateAutoMLJobV2 API 操作,以编程方式为表格数据创建 Autopilot 实验。

有关此 API 操作如何转换为所选语言中函数的信息,请参阅 CreateAutoMLJobV2 中的另请参阅部分并选择 SDK。例如,对于 Python 用户,请参阅 Amazon SDK for Python (Boto3)中 create_auto_ml_job_v2 的完整请求语法。

注意

CreateAutomlJobv2 和 mlJ DescribeAutoobv2 是 mlJo CreateAutob 和 mlJob 的新版本,它们提供了向后兼容性。DescribeAuto

我们建议使用 CreateAutoMLJobV2CreateAutoMLJobV2 可以管理与其先前版本 CreateAutoMLJob 相同的表格问题类型,以及非表格问题类型,例如图像或文本分类或者时间序列预测。

至少,所有基于表格数据的实验都需要指定实验名称,提供输入和输出数据的位置,并指定要预测的目标数据。或者,您还可以指定要解决的问题类型(回归、分类、多类分类),选择建模策略(堆叠集合超参数优化),选择 Autopilot 作业用来训练数据的算法列表等等。

实验运行后,您可以比较试验并深入研究每个模型的预处理步骤、算法和超参数范围的详细信息。您还可以选择下载他们的解释功能性能报告。使用提供的笔记本查看自动数据探索的结果或候选模型定义。

以下参数集合介绍了 CreateAutoMLJobV2 API 操作的必需和可选输入请求参数。您可以找到此操作先前版本 CreateAutoMLJob 的备用信息。但是,我们建议使用 CreateAutoMLJobV2

将 mlJob 迁移到 CreateAuto mlJobv2 CreateAuto 中查找有关如何将 CreateAutoMLJob 迁移到 CreateAutoMLJobV2 的指南。

必需参数

CreateAutoMLJobV2

在调用 CreateAutoMLJobV2 为表格数据创建 Autopilot 实验时,您必须提供以下值:

CreateAutoMLJob

在调用 CreateAutoMLJob 创建 AutoML 实验时,您必须提供以下四个值:

所有其他参数都是可选的。

可选参数

以下部分提供了一些可选参数的详细信息,在使用表格数据时,您可以将这些参数传递给 CreateAutoMLJobV2 API 操作。您可以找到此操作先前版本 CreateAutoMLJob 的备用信息。但是,我们建议使用 CreateAutoMLJobV2

对于表格数据,在您的数据上运行用于训练候选模型的算法集取决于您的建模策略(ENSEMBLINGHYPERPARAMETER_TUNING)。以下将详细介绍如何设置此训练模式。

如果保留空白(或为 null),则 Mode 根据数据集的大小进行推理。

有关 Autopilot 的堆叠组合超参数优化训练方法的信息,请参阅训练模式和算法支持

CreateAutoMLJobV2

对于表格数据,您必须选择 TabularJobConfig 作为 AutoMLProblemTypeConfig 的类型。

您可以使用 TabularJobConfig.Mode 参数设置 AutoML 作业 V2 的训练方法

CreateAutoMLJob

您可以使用 AutoMLJobConfig.Mode 参数设置 AutoML 作业的训练方法

特征选择

Autopilot 提供自动数据预处理步骤,包括特征选择和特征提取。但是,您可以使用 FeatureSpecificatioS3Uri 属性手动提供要在训练中使用的特征。

所选特征应包含在 JSON 文件中,采用以下格式:

{ "FeatureAttributeNames":["col1", "col2", ...] }

["col1", "col2", ...] 中列出的值区分大小写。它们应该是包含唯一值的字符串列表,这些值是输入数据中列名的子集。

注意

提供作为特征的列的列表不能包括目标列。

CreateAutoMLJobV2

对于表格数据,您必须选择 TabularJobConfig 作为 AutoMLProblemTypeConfig 的类型。

您可以使用 TabularJobConfig.FeatureSpecificatioS3Uri 参数设置所选特征的 URL。

CreateAutoMLJob

你可以在 MLJo CreateAutob API CandidateGenerationConfig 中使用以下格式设置 autoM LFeatureSpecificatioS3Uri属性:

{ "AutoMLJobConfig": { "CandidateGenerationConfig": { "FeatureSpecificationS3Uri":"string" }, } }

算法选择

默认情况下,您的 Autopilot 作业会在数据集上运行预定义的算法列表,以训练候选模型。算法列表取决于作业使用的训练模式(ENSEMBLINGHYPERPARAMETER_TUNING)。

您可以提供默认算法选择的子集。

CreateAutoMLJobV2

对于表格数据,您必须选择 TabularJobConfig 作为 AutoMLProblemTypeConfig 的类型。

可以在的AlgorithmsConfig属性AutoMLAlgorithms中指定选定的数组CandidateGenerationConfig

以下是一个 AlgorithmsConfig 属性示例,在 AutoMLAlgorithms 字段中列出了用于组合模式的三种算法(“xgboost”、“fastai”、“catboost”)。

{ "AutoMLProblemTypeConfig": { "TabularJobConfig": { "Mode": "ENSEMBLING", "CandidateGenerationConfig": { "AlgorithmsConfig":[ {"AutoMLAlgorithms":["xgboost", "fastai", "catboost"]} ] }, }, }, }
CreateAutoMLJob

您可以在 a ut CandidateGenerationConfig oML 的AlgorithmsConfig属性AutoMLAlgorithms中指定选定的数组。

以下是一个 AlgorithmsConfig 属性示例,在 AutoMLAlgorithms 字段中列出了用于组合模式的三种算法(“xgboost”、“fastai”、“catboost”)。

{ "AutoMLJobConfig": { "CandidateGenerationConfig": { "AlgorithmsConfig":[ {"AutoMLAlgorithms":["xgboost", "fastai", "catboost"]} ] }, "Mode": "ENSEMBLING" }

有关各种训练 Mode 可用算法的列表,请参阅 AutoMLAlgorithms。有关每种算法的详细信息,请参阅训练模式和算法支持

您可以提供自己的验证数据集和自定义的数据拆分比率,也可以让 Autopilot 自动拆分数据集。

CreateAutoMLJobV2

每个AutoMLJobChannel对象(参见必填参数 a utoML JobInputDataConfig)都有ChannelType,可以将其设置为training或指定在构建机器学习模型时如何使用数据的validation值。数据来源至少需要一个,最多可以有两个:一个用于训练数据,一个用于验证数据。

如何将数据拆分为训练和验证数据集,取决于您有一个还是两个数据来源。

  • 如果您只有一个数据来源,则默认情况下 ChannelType 设置为 training,并且必须具有此值。

    • 如果未设置 AutoMLDataSplitConfig 中的 ValidationFraction 值,则默认情况下,将使用来自此来源中数据的 0.2 (20%) 进行验证。

    • 如果 ValidationFraction 设置为介于 0 和 1 之间的值,则根据指定的值拆分数据集,该值指定用于验证的数据集的比例。

  • 如果您有两个数据来源,则其中一个 AutoMLJobChannel 对象的 ChannelType 必须设置为默认值 training。另一个数据来源的 ChannelType 必须设置为 validation。这两个数据来源必须具有相同的格式(CSV 或 Parquet)和相同的架构。在这种情况下,您不可为 ValidationFraction 设置值,因为每个来源的所有数据都用于训练或验证。设置此值会导致错误。

CreateAutoMLJob

每个AutoMLChannel对象(参见必填参数 InputDataConfig)都有ChannelType,可以将其设置为training或指定在构建机器学习模型时如何使用数据的validation值。数据来源至少需要一个,最多可以有两个:一个用于训练数据,一个用于验证数据。

如何将数据拆分为训练和验证数据集,取决于您有一个还是两个数据来源。

  • 如果您只有一个数据来源,则默认情况下 ChannelType 设置为 training,并且必须具有此值。

    • 如果未设置 AutoMLDataSplitConfig 中的 ValidationFraction 值,则默认情况下,将使用来自此来源中数据的 0.2 (20%) 进行验证。

    • 如果 ValidationFraction 设置为介于 0 和 1 之间的值,则根据指定的值拆分数据集,该值指定用于验证的数据集的比例。

  • 如果您有两个数据来源,则其中一个 AutoMLChannel 对象的 ChannelType 必须设置为默认值 training。另一个数据来源的 ChannelType 必须设置为 validation。这两个数据来源必须具有相同的格式(CSV 或 Parquet)和相同的架构。在这种情况下,您不可为 ValidationFraction 设置值,因为每个来源的所有数据都用于训练或验证。设置此值会导致错误。

有关 Autopilot 中的拆分和交叉验证的信息,请参阅 Autopilot 中的交叉验证

CreateAutoMLJobV2

对于表格数据,您必须选择 TabularJobConfig 作为 AutoMLProblemTypeConfig 的类型。

您可以使用 TabularJobConfig.ProblemType 参数,进一步指定可用于 AutoML 作业 V2 的候选模型的有监督学习问题类型(二元分类、多元分类、回归)。

CreateAutoMLJob

您可以使用 CreateAutoPilot.ProblemType 参数在 AutoML 作业上设置问题的类型。这限制了 Autopilot 尝试的预处理和算法类型。在完成作业后,如果您设置了 CreateAutoPilot.ProblemType,则 ResolvedAttribute.ProblemType 将匹配您设置的 ProblemType。如果您将其留空(或为 null),则 ProblemType 代表您进行推理。

注意

在某些情况下,Autopilot 无法以足够高的置信度推理 ProblemType,在这种情况下,您必须提供值以使作业成功。

您可以向表格数据集添加样本权重列,然后将其传递给 AutoML 作业,以请求在训练和评估期间对数据集行进行加权。

只有组合模式支持样本加权。您的权重应为非负数字。没有权重值或权重值无效的数据点被排除。有关可用目标指标的更多信息,请参阅 Autopilot 加权指标

CreateAutoMLJobV2

对于表格数据,您必须选择 TabularJobConfig 作为 AutoMLProblemTypeConfig 的类型。

要在创建实验时设置样本权重(参见 CreateAutomlJobv2),可以在对象的SampleWeightAttributeName属性中传递样本权重列的名称。TabularJobConfig这样可以确保您的目标指标使用这些权重来训练、评估和选择候选模型。

CreateAutoMLJob

要在创建实验时设置样本权重(参见 CreateAutomlJob),可以在 A utoml Channel 对象的SampleWeightAttributeName属性中传递样本权重列的名称。这样可以确保您的目标指标使用这些权重来训练、评估和选择候选模型。

将 mlJob 迁移到 CreateAuto mlJobv2 CreateAuto

我们建议 CreateAutoMLJob 的用户迁移到 CreateAutoMLJobV2

本节通过重点介绍两个版本之间输入请求的对象和属性的位置、名称或结构的变化,解释了 CreateAutoMLJo CreateAutob 和 MLJobv2 之间输入参数的差异。

  • 在两个版本之间没有变化的请求属性。

    { "AutoMLJobName": "string", "AutoMLJobObjective": { "MetricName": "string" }, "ModelDeployConfig": { "AutoGenerateEndpointName": boolean, "EndpointName": "string" }, "OutputDataConfig": { "KmsKeyId": "string", "S3OutputPath": "string" }, "RoleArn": "string", "Tags": [ { "Key": "string", "Value": "string" } ] }
  • 在两个版本之间位置和结构发生变化的请求属性。

    以下属性改变了位置:DataSplitConfigSecurity ConfigCompletionCriteriaModeFeatureSpecificationS3UriSampleWeightAttributeNameTargetAttributeName

    CreateAutoMLJob
    { "AutoMLJobConfig": { "Mode": "string", "CompletionCriteria": { "MaxAutoMLJobRuntimeInSeconds": number, "MaxCandidates": number, "MaxRuntimePerTrainingJobInSeconds": number }, "DataSplitConfig": { "ValidationFraction": number }, "SecurityConfig": { "EnableInterContainerTrafficEncryption": boolean, "VolumeKmsKeyId": "string", "VpcConfig": { "SecurityGroupIds": [ "string" ], "Subnets": [ "string" ] } }, "CandidateGenerationConfig": { "FeatureSpecificationS3Uri": "string" } }, "GenerateCandidateDefinitionsOnly": boolean, "ProblemType": "string" }
    CreateAutoMLJobV2
    { "AutoMLProblemTypeConfig": { "TabularJobConfig": { "Mode": "string", "ProblemType": "string", "GenerateCandidateDefinitionsOnly": boolean, "CompletionCriteria": { "MaxAutoMLJobRuntimeInSeconds": number, "MaxCandidates": number, "MaxRuntimePerTrainingJobInSeconds": number }, "FeatureSpecificationS3Uri": "string", "SampleWeightAttributeName": "string", "TargetAttributeName": "string" } }, "DataSplitConfig": { "ValidationFraction": number }, "SecurityConfig": { "EnableInterContainerTrafficEncryption": boolean, "VolumeKmsKeyId": "string", "VpcConfig": { "SecurityGroupIds": [ "string" ], "Subnets": [ "string" ] } } }
  • 在两个版本之间,以下属性的位置和结构发生了变化。

    以下 JSON 说明了 AutoML 是如何实现JobConfig的。 CandidateGenerationConfig的 a utoML 类型CandidateGenerationConfig已移至 autoML。ProblemTypeConfig TabularJobConfig。 CandidateGenerationConfigCandidateGenerationConfig在 V2 中属于类型。

    CreateAutoMLJob
    { "AutoMLJobConfig": { "CandidateGenerationConfig": { "AlgorithmsConfig": [ { "AutoMLAlgorithms": [ "string" ] } ], "FeatureSpecificationS3Uri": "string" } }
    CreateAutoMLJobV2
    { "AutoMLProblemTypeConfig": { "TabularJobConfig": { "CandidateGenerationConfig": { "AlgorithmsConfig": [ { "AutoMLAlgorithms": [ "string" ] } ], }, } }, }
  • 名称和结构发生了变化的请求属性。

    以下 JSON 说明了 InputDataConfigAutoMLChannel 数组)是如何在 V2 中更改为 autoM LJobInputDataConfig(A utoML 数组)的。JobChannel请注意,属性 SampleWeightAttributeNameTargetAttributeNameInputDataConfig 中移出并移入到 AutoMLProblemTypeConfig 中。

    CreateAutoMLJob
    { "InputDataConfig": [ { "ChannelType": "string", "CompressionType": "string", "ContentType": "string", "DataSource": { "S3DataSource": { "S3DataType": "string", "S3Uri": "string" } }, "SampleWeightAttributeName": "string", "TargetAttributeName": "string" } ] }
    CreateAutoMLJobV2
    { "AutoMLJobInputDataConfig": [ { "ChannelType": "string", "CompressionType": "string", "ContentType": "string", "DataSource": { "S3DataSource": { "S3DataType": "string", "S3Uri": "string" } } } ] }