

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

# 因子分解机算法
<a name="fact-machines"></a>

因子分解机算法是通用的有监督学习算法，可用于分类和回归任务。它是线性模型的扩展，旨在经济地捕获高维稀疏数据集中的各特征之间的交互。例如，在一个点击预测系统中，当特定广告类别的广告放置在特定页面类别的页面上时，因子分解机模型可以捕获所观察到的点击率模式。对于处理高维稀疏数据集的任务 (如点击预测和项目建议)，因子分解机是不错的选择。

**注意**  
分解机算法的 SageMaker Amazon AI 实现仅考虑功能之间的成对（二阶）交互。

**Topics**
+ [因子分解机算法的输入/输出接口](#fm-inputoutput)
+ [因子分解机算法的 EC2 实例建议](#fm-instances)
+ [因子分解机示例笔记本](#fm-sample-notebooks)
+ [因子分解机的工作原理](fact-machines-howitworks.md)
+ [因子分解机超参数](fact-machines-hyperparameters.md)
+ [调整因子分解机模型](fm-tuning.md)
+ [因子分解机响应格式](fm-in-formats.md)

## 因子分解机算法的输入/输出接口
<a name="fm-inputoutput"></a>

因子分解机算法可在二元分类模式或回归模式下运行。在每种模式下，可以向**测试**通道提供数据集以及训练通道数据集。评分取决于使用的模式。在回归模式下，使用均方根误差 (RMSE) 对测试数据集计分。在二元分类模式下，使用二元交叉熵 (记录丢失)、准确度 (阈值=0.5) 和 F1 分数 (阈值=0.5) 对测试数据集计分。

对于**训练**，因子分解机算法目前仅支持具有 `Float32` 张量的 `recordIO-protobuf` 格式。由于使用案例主要针对稀疏数据，`CSV` 并不是合适选项。recordIO 包装的 protobuf 支持文件和管道模式训练。

对于**推理**，因子分解机算法支持 `application/json` 和 `x-recordio-protobuf` 格式。
+ 对于**二元分类**问题，该算法预测分数和标签。标签是一个数字，可以是 `0` 或 `1`。分数是一个数字，它表示该算法认为标签应该为 `1` 的强烈程度。该算法先计算分数，然后从分数值中得出标签。如果分数大于或等于 0.5，则标签为 `1`。
+ 对于**回归**问题，仅返回分数，并且它是预测的值。例如，如果使用因子分解机预测电影评级，则分数是预测的评级值。

有关训练和推理文件格式的更多详细信息，请参阅[因子分解机示例笔记本](#fm-sample-notebooks)。

## 因子分解机算法的 EC2 实例建议
<a name="fm-instances"></a>

Amazon SageMaker AI 分解机器算法具有高度可扩展性，可以跨分布式实例进行训练。建议对稀疏和密集数据集使用包含 CPU 实例的训练和推理。在某些情况下，使用一个或多个密集数据 GPUs 进行训练可能会带来一些好处。使用训练 GPUs 仅适用于密集数据。对稀疏数据使用 CPU 实例。因子分解机算法支持使用 P2、P3、G4dn 和 G5 实例进行训练和推理。

## 因子分解机示例笔记本
<a name="fm-sample-notebooks"></a>

有关使用 SageMaker AI 分解机算法分析 MNIST 数据集中从零到九的手写数字图像的示例笔记本，请参阅 MNIST [分解机简介。](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/factorization_machines_mnist/factorization_machines_mnist.html)有关如何创建和访问可用于在 SageMaker AI 中运行示例的 Jupyter 笔记本实例的说明，请参阅。[Amazon SageMaker 笔记本实例](nbi.md)创建并打开笔记本实例后，选择 “**SageMaker AI 示例**” 选项卡以查看所有 SageMaker AI 示例的列表。使用因子分解机算法的示例笔记本位于 **Amazon 算法简介**部分中。要打开笔记本，请单击**使用** 选项卡，然后选择**创建副本**。