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

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

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

您可以使用 Autopilot 支持的任何语言调用CreateAutoMLJobV2API操作,以编程方式为表格数据创建 Autopilot 回归或分类作业。 AWS CLI以下是该操作的必填和可选输入请求参数的CreateAutoMLJobV2API集合。您可以找到此操作先前版本 CreateAutoMLJob 的备用信息。但是,我们建议使用 CreateAutoMLJobV2

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

注意

CreateAutoMLJobV2DescribeAutoMLJobV2是的新版本,CreateAutoMLJobDescribeAutoMLJob它们提供了向后兼容性。

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

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

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

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

必需参数

CreateAutoMLJobV2

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

CreateAutoMLJob

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

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

可选参数

以下各节提供了一些可选参数的详细信息,在使用表格数据时,您可以将这些参数传递给您的CreateAutoMLJobV2API操作。您可以找到此操作先前版本 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

您可以使用以下格式utoMLCandidateGenerationConfig在中设置 A CreateAutoMLJobAPI的FeatureSpecificatioS3Uri属性:

{ "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

您可以在 AAlgorithmsConfig属性AutoMLAlgorithms中指定选定的数组utoMLCandidateGenerationConfig。

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

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

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

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

CreateAutoMLJobV2

每个AutoMLJobChannel对象(参见必填参数 A utoMLJob InputDataConfig)都有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),可以在TabularJobConfig对象的SampleWeightAttributeName属性中传递样本权重列的名称。这样可以确保您的目标指标使用这些权重来训练、评估和选择候选模型。

CreateAutoMLJob

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

您可以将 AutoML 作业 V2 配置为在需要额外计算资源来处理大型数据集时自动在 Amazon EMR Serverless 上启动远程作业。通过在需要时EMR无缝过渡到 Serverless,AutoML 作业可以处理原本会超过初始配置资源的数据集,而无需您进行任何手动干预。EMR无服务器适用于表格和时间序列问题类型。我们建议为大于 5 GB 的表格数据集设置此选项。

要允许 AutoML 作业 V2 自动过渡到大型数据集的 EMR Serverless,您需要为 AutoML 作业 V2 输入请求的EmrServerlessComputeConfigAutoMLComputeConfig对象提供一个包含ExecutionRoleARN字段的对象。

ExecutionRoleARN是授予 AutoML 作业 V2 运行EMR无服务器作业所需的权限的IAM角色。ARN

此角色应具有以下信任关系:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "emr-serverless.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

并授予以下权限:

  • 创建、列出和更新EMR无服务器应用程序。

  • 在EMR无服务器应用程序上启动、列出、获取或取消作业运行。

  • 标记EMR无服务器资源。

  • 将IAM角色传递给EMR无服务器服务以供执行。

    通过授予iam:PassRole权限,AutoML 作业 V2 可以临时担任该EMRServerlessRuntimeRole-*角色并将其传递给无服务器服务。EMREMR无服务器任务执行环境使用这些IAM角色来访问运行时所需的其他 AWS 服务和资源,例如 Amazon S3,用于访问数据、 CloudWatch 记录、访问 AWS Glue 数据目录或其他基于您的工作负载要求的服务。

    有关此角色权限的详细信息,请参阅 Amazon EMR Serverless 的作业运行时角色。

提供的JSON文档中定义的IAM策略授予以下权限:

{ "Version": "2012-10-17", "Statement": [{ + "Sid": "EMRServerlessCreateApplicationOperation", + "Effect": "Allow", + "Action": "emr-serverless:CreateApplication", + "Resource": "arn:aws:emr-serverless:*:*:/*", + "Condition": { + "StringEquals": { + "aws:RequestTag/sagemaker:is-canvas-resource": "True", + "aws:ResourceAccount": "${aws:PrincipalAccount}" + } + } + }, + { + "Sid": "EMRServerlessListApplicationOperation", + "Effect": "Allow", + "Action": "emr-serverless:ListApplications", + "Resource": "arn:aws:emr-serverless:*:*:/*", + "Condition": { + "StringEquals": { + "aws:ResourceAccount": "${aws:PrincipalAccount}" + } + } + }, + { + "Sid": "EMRServerlessApplicationOperations", + "Effect": "Allow", + "Action": [ + "emr-serverless:UpdateApplication", + "emr-serverless:GetApplication" + ], + "Resource": "arn:aws:emr-serverless:*:*:/applications/*", + "Condition": { + "StringEquals": { + "aws:ResourceTag/sagemaker:is-canvas-resource": "True", + "aws:ResourceAccount": "${aws:PrincipalAccount}" + } + } + }, + { + "Sid": "EMRServerlessStartJobRunOperation", + "Effect": "Allow", + "Action": "emr-serverless:StartJobRun", + "Resource": "arn:aws:emr-serverless:*:*:/applications/*", + "Condition": { + "StringEquals": { + "aws:RequestTag/sagemaker:is-canvas-resource": "True", + "aws:ResourceAccount": "${aws:PrincipalAccount}" + } + } + }, + { + "Sid": "EMRServerlessListJobRunOperation", + "Effect": "Allow", + "Action": "emr-serverless:ListJobRuns", + "Resource": "arn:aws:emr-serverless:*:*:/applications/*", + "Condition": { + "StringEquals": { + "aws:ResourceTag/sagemaker:is-canvas-resource": "True", + "aws:ResourceAccount": "${aws:PrincipalAccount}" + } + } + }, + { + "Sid": "EMRServerlessJobRunOperations", + "Effect": "Allow", + "Action": [ + "emr-serverless:GetJobRun", + "emr-serverless:CancelJobRun" + ], + "Resource": "arn:aws:emr-serverless:*:*:/applications/*/jobruns/*", + "Condition": { + "StringEquals": { + "aws:ResourceTag/sagemaker:is-canvas-resource": "True", + "aws:ResourceAccount": "${aws:PrincipalAccount}" + } + } + }, + { + "Sid": "EMRServerlessTagResourceOperation", + "Effect": "Allow", + "Action": "emr-serverless:TagResource", + "Resource": "arn:aws:emr-serverless:*:*:/*", + "Condition": { + "StringEquals": { + "aws:RequestTag/sagemaker:is-canvas-resource": "True", + "aws:ResourceAccount": "${aws:PrincipalAccount}" + } + } + }, + { + "Sid": "IAMPassOperationForEMRServerless", + "Effect": "Allow", + "Action": "iam:PassRole", + "Resource": "arn:aws:iam::*:role/EMRServerlessRuntimeRole-*", + "Condition": { + "StringEquals": { + "iam:PassedToService": "emr-serverless.amazonaws.com", + "aws:ResourceAccount": "${aws:PrincipalAccount}" + } + } } ] }

将 a 迁移 CreateAutoMLJob到 CreateAuto MLJobV2

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

本节CreateAutoMLJobV2通过突出显示两个版本之间输入请求的对象CreateAutoMLJob和属性的位置、名称或结构的变化来说明两者之间输入参数的差异。

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

    { "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说明了 A utoMLJob Config 是如何实现的。 CandidateGenerationConfigA 型utoMLCandidateGenerationConfig已移至 A utoMLProblem TypeConfig。 TabularJobConfig。 CandidateGenerationConfigCandidateGenerationConfig在 V2 中属于类型。

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

    下面JSON说明了 V2 中 InputDataConfigA 的数组utoMLChannel)是如何变成 A utoMLJob InputDataConfigA utoMLJob 通道数组)的。请注意,属性 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" } } } ] }