

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

# 线性学习器算法
<a name="linear-learner"></a>

*线性模型* 是用于求解分类或回归问题的指导式学习算法。对于输入，向模型提供带标记的示例 (*x*, *y*)。*x* 是一个高维度向量，*y* 是一个数字标签。对于二元分类问题，该标签必须是 0 或 1。对于多元分类问题，标签必须在 0 到 `num_classes` - 1 之间。对于回归问题，*y* 是一个实数。该算法学习线性函数或线性阈值函数（对于分类问题）进行分类，并将向量 *x* 映射到标签 *y* 的近似值。

Amazon SageMaker AI 线性学习器算法为分类和回归问题提供了解决方案。借助 SageMaker AI 算法，您可以同时探索不同的训练目标，并从验证集中选择最佳解决方案。您还可以探索大量模型并选择最佳模型。最佳模型优化以下任一项：
+ 连续目标，如均方根误差、交叉熵损失、绝对误差。
+ 适合分类的离散目标，例如 F1 度量、查准率、查全率或准确率。

与仅为连续目标提供解决方案的方法相比，与天真的超参数优化技术相比， SageMaker 人工智能线性学习器算法的速度显著提高。它也更为方便。

线性学习器算法需要一个数据矩阵，其中行表示观察，列表示特征的维度。它还需要一个包含与数据点匹配的标签的附加列。至少，Amazon SageMaker AI 线性学习器要求您指定输入和输出数据位置以及目标类型（分类或回归）作为参数。特征维度也是必需的。有关更多信息，请参阅 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)。您可以在请求正文的 `HyperParameters` 字符串映射中指定其他参数。这些参数控制优化过程，或您训练的目标函数的细节。例如，纪元数、正则化和损失类型。

如果您在使用[托管竞价型训练](https://docs.aws.amazon.com/sagemaker/latest/dg/model-managed-spot-training.html)，线性学习器算法支持[使用检查点来获取模型状态的快照](https://docs.aws.amazon.com/sagemaker/latest/dg/model-checkpoints.html)。

**Topics**
+ [线性学习器算法的输入/输出接口](#ll-input_output)
+ [线性学习器算法的 EC2 实例建议](#ll-instances)
+ [线性学习器示例笔记本](#ll-sample-notebooks)
+ [线性学习器工作方式](ll_how-it-works.md)
+ [线性学习器超参数](ll_hyperparameters.md)
+ [调整线性学习器模型](linear-learner-tuning.md)
+ [线性学习器响应格式](LL-in-formats.md)

## 线性学习器算法的输入/输出接口
<a name="ll-input_output"></a>

Amazon SageMaker AI 线性学习器算法支持三个数据通道：训练、验证（可选）和测试（可选）。如果您提供验证数据，`S3DataDistributionType` 应该为 `FullyReplicated`。该算法记录每个纪元中的验证损失，并使用验证数据的样本来校准和选择最佳模型。如果您不提供验证数据，该算法会使用训练数据的样本来校准和选择该模型。如果您提供了测试数据，则算法日志会包含最终模型的测试分数。

**对于训练**，线性学习器算法支持 `recordIO-wrapped protobuf` 和 `CSV` 格式。对于 `application/x-recordio-protobuf` 输入类型，只支持 Float32 张量。对于 `text/csv` 输入类型，第一列假定为标签，即预测的目标变量。您可以使用文件模式或管道模式，针对格式为 `recordIO-wrapped-protobuf` 或 `CSV` 的数据训练线性学习器模型。

**对于推理**，线性学习器算法支持 `application/json`、`application/x-recordio-protobuf` 和 `text/csv` 格式。在对新数据进行预测时，响应格式取决于模型类型。**对于回归** (`predictor_type='regressor'`)，`score` 是模型生成的预测。**对于分类**（`predictor_type='binary_classifier'` 或 `predictor_type='multiclass_classifier'`），模型返回 `score` 以及 `predicted_label`。`predicted_label` 是模型预测的类别，`score` 测量该预测的强度。
+ **对于二元分类**，`predicted_label` 是 `0` 或 `1`，而 `score` 是单个浮点数，表示算法认为标签应为 1 的强度。
+ **对于多元分类**，`predicted_class` 是从 `0` 到 `num_classes-1` 的整数，而 `score` 是一个浮点数列表，每个类别对应一个浮点数。

要解释分类问题中的 `score`，您必须考虑使用的损失函数。如果 `loss` 超参数值为 `logistic`（对于二元分类）或 `softmax_loss`（对于多元分类），则可以将 `score` 解释为相应类别的概率。这些是在 `loss` 值为 `auto` 默认值时线性学习器使用的损失值。但如果将 loss 设置为 `hinge_loss`，则不能将 score 解释为概率。这是因为铰链损失对应于支持向量分类器，该分类器不会生成概率估计值。

有关输入和输出文件格式的更多信息，请参阅 [线性学习器响应格式](LL-in-formats.md)。有关推理格式的更多信息，请参阅 [线性学习器示例笔记本](#ll-sample-notebooks)。

## 线性学习器算法的 EC2 实例建议
<a name="ll-instances"></a>

线性学习器算法支持使用 CPU 和 GPU 实例进行训练和推理。对于 GPU，线性学习器算法支持 P2、P3、G4dn 和 G5 GPU 系列。

在测试过程中，我们没有发现实质性证据表明多 GPU 实例比单 GPU 实例更快。结果可能会有所不同，具体取决于您的使用案例。

## 线性学习器示例笔记本
<a name="ll-sample-notebooks"></a>

 下表概述了各种示例笔记本，这些笔记本解决了 Amazon A SageMaker I 线性学习器算法的不同用例。


| **笔记本标题** | **描述** | 
| --- | --- | 
|  [MNIST 数据集简介](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/linear_learner_mnist/linear_learner_mnist.html)  |   使用 MNIST 数据集，我们训练二元分类器来预测一位数字。  | 
|  [如何构建多元分类器？](https://sagemaker-examples.readthedocs.io/en/latest/scientific_details_of_algorithms/linear_learner_multiclass_classification/linear_learner_multiclass_classification.html)  |   我们使用 UCI 的 Covertype 数据集，演示如何训练多元分类器。  | 
|  [如何构建机器学习 (ML) 管道用于推理？](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-python-sdk/scikit_learn_inference_pipeline/Inference%20Pipeline%20with%20Scikit-learn%20and%20Linear%20Learner.html)  |   我们使用 Scikit-Learn 容器演示如何构建 ML 管道。 end-to-end  | 

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