用于表格数据建模的新内置 Amazon SageMaker 算法:LightGBM、CatBoost、AutoGluon-Tabular 和 TabTransformer

源节点: 1541386

亚马逊SageMaker 提供了一套 内置算法, 预训练模型预建的解决方案模板 帮助数据科学家和机器学习 (ML) 从业者快速开始训练和部署 ML 模型。 您可以将这些算法和模型用于有监督和无监督学习。 它们可以处理各种类型的输入数据,包括表格、图像和文本。

从今天开始,SageMaker 提供了四种新的内置表格数据建模算法:LightGBM、CatBoost、AutoGluon-Tabular 和 TabTransformer。 您可以将这些流行的、最先进的算法用于表格分类和回归任务。 它们可通过 内置算法 在 SageMaker 控制台上以及通过 亚马逊SageMaker JumpStart 内部用户界面 亚马逊SageMaker Studio.

以下是四种新的内置算法的列表,以及指向它们的文档、示例笔记本和源代码的链接。

配套文档 示例笔记本 来源
LightGBM 算法 数据复原测试, 分类 轻型GBM
CatBoost 算法 数据复原测试, 分类 猫助推器
AutoGluon-Tabular 算法 数据复原测试, 分类 AutoGluon-表格
TabTransformer 算法 数据复原测试, 分类 标签转换器

在以下部分中,我们提供了每种算法的简要技术说明,以及如何通过 SageMaker SDK 或 SageMaker Jumpstart 训练模型的示例。

轻型GBM

轻型GBM 是梯度提升决策树 (GBDT) 算法的流行且高效的开源实现。 GBDT 是一种监督学习算法,它试图通过组合来自一组更简单和更弱模型的估计值来准确预测目标变量。 LightGBM 使用额外的技术来显着提高传统 GBDT 的效率和可扩展性。

猫助推器

猫助推器 是 GBDT 算法的流行且高性能的开源实现。 CatBoost 中引入了两个关键的算法进步:有序提升的实现、经典算法的置换驱动替代方案以及用于处理分类特征的创新算法。 这两种技术都是为了对抗由目前所有现有的梯度提升算法实现中存在的一种特殊目标泄漏引起的预测偏移。

AutoGluon-表格

AutoGluon-表格 是由 Amazon 开发和维护的开源 AutoML 项目,它执行高级数据处理、深度学习和多层堆栈集成。 它会自动识别每列中的数据类型,以进行稳健的数据预处理,包括对文本字段的特殊处理。 AutoGluon 适合各种模型,从现成的增强树到定制的神经网络模型。 这些模型以一种新颖的方式集成:模型堆叠在多个层中,并以分层方式进行训练,以保证原始数据可以在给定的时间限制内转化为高质量的预测。 在整个过程中,通过仔细跟踪非折叠示例以各种方式拆分数据,可以缓解过度拟合。 AutoGluon 针对性能进行了优化,其开箱即用的使用在数据科学竞赛中获得了多个前 3 和前 10 的位置。

标签转换器

标签转换器 是一种用于监督学习的新型深度表格数据建模架构。 TabTransformer 建立在基于自注意力的 Transformer 之上。 Transformer 层将分类特征的嵌入转换为鲁棒的上下文嵌入,以实现更高的预测精度。 此外,从 TabTransformer 学习的上下文嵌入对于缺失和嘈杂的数据特征都具有高度鲁棒性,并提供更好的可解释性。 该模型是最近的产品 亚马逊科学 研究( 和官方 博客文章 这里)并已被 ML 社区广泛采用,并具有各种第三方实现(Keras自动胶,) 和社交媒体功能,例如 鸣叫走向数据科学, 中, 和 Kaggle.

SageMaker 内置算法的优势

在为特定类型的问题和数据选择算法时,使用 SageMaker 内置算法是最简单的选择,因为这样做有以下主要好处:

  • 内置算法无需编码即可开始运行实验。 您需要提供的唯一输入是数据、超参数和计算资源。 这使您可以更快地运行实验,并减少跟踪结果和代码更改的开销。
  • 内置算法具有跨多个计算实例的并行化,并且 GPU 支持所有适用算法开箱即用(由于固有限制,某些算法可能不包括在内)。 如果您有大量数据可用于训练模型,大多数内置算法都可以轻松扩展以满足需求。 即使您已经有一个预训练的模型,在 SageMaker 中使用它的推论并输入您已经知道的超参数可能仍然更容易,而不是移植它并自己编写训练脚本。
  • 您是生成的模型工件的所有者。 您可以采用该模型并将其部署在 SageMaker 上,以获得多种不同的推理模式(查看所有 可用的部署类型) 和简单的端点扩展和管理,或者您可以将它部署在您需要的任何地方。

现在让我们看看如何训练这些内置算法之一。

使用 SageMaker SDK 训练内置算法

要训​​练选定的模型,我们需要获取该模型的 URI,以及用于训练的训练脚本和容器映像的 URI。 值得庆幸的是,这三个输入仅取决于模型名称、版本(有关可用模型的列表,请参阅 JumpStart 可用型号表),以及您要训练的实例类型。 下面的代码片段演示了这一点:

from sagemaker import image_uris, model_uris, script_uris train_model_id, train_model_version, train_scope = "lightgbm-classification-model", "*", "training"
training_instance_type = "ml.m5.xlarge" # 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
)
# Retrieve the model artifact; in the tabular case, the model is not pre-trained train_model_uri = model_uris.retrieve( model_id=train_model_id, model_version=train_model_version, model_scope=train_scope
)

train_model_id 改变为 lightgbm-regression-model 如果我们正在处理回归问题。 本文介绍的所有其他模型的 ID 列在下表中。

型号 问题类型 型号ID
轻型GBM 分类 lightgbm-classification-model
. 数据复原测试 lightgbm-regression-model
猫助推器 分类 catboost-classification-model
. 数据复原测试 catboost-regression-model
AutoGluon-表格 分类 autogluon-classification-ensemble
. 数据复原测试 autogluon-regression-ensemble
标签转换器 分类 pytorch-tabtransformerclassification-model
. 数据复原测试 pytorch-tabtransformerregression-model

然后我们定义我们的输入在哪里 亚马逊简单存储服务 (亚马逊 S3)。 我们在此示例中使用公共示例数据集。 我们还定义了我们希望输出的位置,并检索训练所选模型所需的默认超参数列表。 您可以根据自己的喜好更改它们的值。

import sagemaker
from sagemaker import hyperparameters sess = sagemaker.Session()
region = sess.boto_session.region_name # URI of sample training dataset
training_dataset_s3_path = f"s3:///jumpstart-cache-prod-{region}/training-datasets/tabular_multiclass/" # URI for output artifacts output_bucket = sess.default_bucket()
s3_output_location = f"s3://{output_bucket}/jumpstart-example-tabular-training/output" # Retrieve the default hyper-parameters for training
hyperparameters = hyperparameters.retrieve_default( model_id=train_model_id, model_version=train_model_version
) # [Optional] Override default hyperparameters with custom values
hyperparameters[ "num_boost_round"
] = "500" # The same hyperparameter is named as "iterations" for CatBoost

最后,我们实例化一个 SageMaker Estimator 使用所有检索到的输入并启动训练作业 .fit,将我们的训练数据集 URI 传递给它。 这 entry_point 提供的脚本被命名 transfer_learning.py (其他任务和算法相同),输入数据通道传递给 .fit 必须命名 training.

from sagemaker.estimator import Estimator
from sagemaker.utils import name_from_base # Unique training job name
training_job_name = name_from_base(f"built-in-example-{model_id}") # Create SageMaker Estimator instance
tc_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 s3 path of the training data
tc_estimator.fit({"training": training_dataset_s3_path}, logs=True)

请注意,您可以使用以下方法训练内置算法 SageMaker自动模型调整 选择最佳超参数并进一步提高模型性能。

使用 SageMaker JumpStart 训练内置算法

您还可以通过 SageMaker JumpStart UI 只需单击几下即可训练任何这些内置算法。 JumpStart 是 SageMaker 的一项功能,可让您通过图形界面从各种 ML 框架和模型中心训练和部署内置算法和预训练模型。 它还允许您部署成熟的 ML 解决方案,将 ML 模型和各种其他 AWS 服务串联在一起,以解决目标用例。

有关更多信息,请参阅 使用 TensorFlow Hub 和 Hugging Face 模型通过 Amazon SageMaker JumpStart 运行文本分类.

结论

在这篇文章中,我们宣布在 SageMaker 上提供的表格数据集上推出四种强大的新内置 ML 算法。 我们提供了这些算法的技术描述,以及使用 SageMaker SDK 的 LightGBM 训练作业示例。

带上您自己的数据集并在 SageMaker 上尝试这些新算法,并查看示例笔记本以使用可用的内置算法 GitHub上.


作者简介

黄鑫博士 是 Amazon SageMaker JumpStart 和 Amazon SageMaker 内置算法的应用科学家。 他专注于开发可扩展的机器学习算法。 他的研究兴趣是自然语言处理、表格数据的可解释深度学习以及非参数时空聚类的稳健分析。 他在 ACL、ICDM、KDD 会议和皇家统计学会:A 系列期刊上发表了多篇论文。

Ashish Khetan 博士 是 Amazon SageMaker JumpStart 和 Amazon SageMaker 内置算法的高级应用科学家,帮助开发机器学习算法。 他是机器学习和统计推断领域的活跃研究员,在 NeurIPS、ICML、ICLR、JMLR、ACL 和 EMNLP 会议上发表了多篇论文。

若昂·莫拉 是 Amazon Web Services 的 AI/ML 专家解决方案架构师。 他主要专注于 NLP 用例并帮助客户优化深度学习模型训练和部署。 他还是低代码 ML 解决方案和 ML 专用硬件的积极支持者。

时间戳记:

更多来自 AWS机器学习