

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

# Personalized-Ranking 食谱
<a name="native-recipe-search"></a>

**重要**  
我们建议使用 [Personalized-Ranking-v2](native-recipe-personalized-ranking-v2.md) 配方。它可以通过更快的训练考虑多达 500 万个物品，并以更低的延迟生成更准确的排名。

Personalized-Ranking 食谱可生成物品的个性化排名。*个性化排名* 是为特定用户重新排名的推荐物品的列表。如果您有一系列已订购的物品（例如搜索结果、推广或精选列表），且想要为每位用户提供个性化重新排名，则此食谱非常有用。例如，通过 Personalized-Ranking，Amazon Personalize 可以对您通过 [OpenSearch](personalize-opensearch.md) 生成的搜索结果重新排名。

为了训练模型，Personalized-Ranking 配方使用物品交互数据集中的数据，以及（如果您创建了这些数据集）数据集组中的物品数据集和用户数据集（这些数据集是可选项）。使用 Personalized-Ranking，您的物品数据集可以包含[非结构化文本元数据](items-datasets.md#text-data)，物品交互数据集可以包含[上下文元数据](interactions-datasets.md#interactions-contextual-metadata)。要获取个性化排名，请使用 [GetPersonalizedRanking](API_RS_GetPersonalizedRanking.md) API。

 创建解决方案版本后，确保您的解决方案版本和数据为最新状态。使用 Personalized-Ranking 时，您必须手动创建新的解决方案版本（重新训练模型），以便 Amazon Personalize 将新用户纳入用户细分，并更新模型以反映用户的最新行为。然后，您必须使用解决方案版本更新所有市场活动。有关更多信息，请参阅 [维护建议相关性](maintaining-relevance.md)。

**注意**  
 如果您提供的物品没有用于排名的交互数据，则 Amazon Personalize 将在 GetPersonalizedRanking API 响应中返回这些没有建议分数的物品。

该配方具有以下属性：
+  **名称** – `aws-personalized-ranking`
+  **食谱 Amazon 资源名称 (ARN)** - `arn:aws:personalize:::recipe/aws-personalized-ranking`
+  **算法 ARN** - `arn:aws:personalize:::algorithm/aws-personalized-ranking`
+  **特征转换 ARN** - `arn:aws:personalize:::feature-transformation/JSON-percentile-filtering`
+  **食谱类型** - `PERSONALIZED_RANKING`

## 超参数
<a name="personalized-ranking-hyperparameters"></a>

下表描述了个性化排名配方的超参数。*超参数* 是一个算法参数，您可以调整该参数以提高模型性能。算法超参数控制模型的执行方式。特征化超参数控制如何筛选训练中使用的数据。为超参数选择最佳值的过程称为超参数优化 (HPO)。有关更多信息，请参阅 [超级参数和 HPO](customizing-solution-config-hpo.md)。

该表还为每个超参数提供以下信息：
+ **范围**：[上界, 下界]
+ **值类型**：Integer、Continuous（浮点数）、Categorical（布尔值、列表、字符串）
+ **可调 HPO**：该参数是否可以参与超级参数优化 (HPO)？


| 名称 | 描述 | 
| --- | --- | 
| 算法超参数 | 
| hidden\$1dimension |  模型中使用的隐藏变量的数量。*隐藏变量* 重新创建用户的购买历史记录和物品统计数据来生成排名分数。当物品交互数据集包含更复杂的模式时，请指定更多数量的隐藏维度。使用更多隐藏维度需要更大的数据集和更多的处理时间。要确定最佳值，请使用 HPO。要使用 HPO，当您调用 `performHPO` 和 `true` 操作时，请将 [CreateSolution](API_CreateSolution.md) 设置为 [CreateSolutionVersion](API_CreateSolutionVersion.md)。 默认值：149 范围：[32, 256] 值类型：整数 HPO 可调：是  | 
| bptt |  确定是否使用基于时间的反向传播技术。*反向传播* 是一种在基于递归神经网络的算法中更新权重的技术。将 `bptt` 用于长期积分以将延迟奖励与早期事件联系起来。例如，延迟奖励可以是几次点击后进行的购买。早期事件可以是初始点击。即使在相同的事件类型（例如点击）中，最好考虑长期影响并最大化总奖励。要考虑长期效果，请使用较大的 `bptt` 值。使用较大的 `bptt` 值需要更大的数据集和更多的处理时间。 默认值：32 范围：[2, 32] 值类型：整数 HPO 可调：是  | 
| recency\$1mask |  确定模型是否应考虑物品交互数据集中的最新流行趋势。最新流行趋势可能包括交互事件的基本模式的突然变化。要训练一个使最近事件具有更高权重的模型，请将 `recency_mask` 设置为 `true`。要训练一个使所有过往交互占相同权重的模型，请将 `recency_mask` 设置为 `false`。要使用相等权重获得好的建议，您可能需要较大的训练数据集。 默认值：`True` 范围：`True` 或 `False` 值类型：布尔值 HPO 可调：是  | 
| 特征化超参数 | 
| min\$1user\$1history\$1length\$1percentile |  要包含在模型训练中的用户历史记录长度的最小百分位数。*历史记录长度* 是有关用户的数据总量。使用 `min_user_history_length_percentile` 排除历史记录长度较短的一定百分比的用户。历史记录较短的用户通常会根据物品受欢迎程度而不是用户的个人需求或需要来显示模式。删除它们可以在训练模型时更多地关注数据中的基础模式。使用直方图或类似工具查看用户历史记录长度后，请选择适当的值。我们建议您设置一个值，该值将保留大多数用户，但会删除边缘案例。  例如，设置 `min__user_history_length_percentile to 0.05` 和 `max_user_history_length_percentile to 0.95` 将包括除那些历史记录长度在最低或最高 5% 内的用户之外的所有用户。 默认值：0.0 范围：[0.0, 1.0] 值类型：浮点数 HPO 可调：否  | 
| max\$1user\$1history\$1length\$1percentile |  要包含在模型训练中的用户历史记录长度的最大百分位数。*历史记录长度* 是有关用户的数据总量。使用 `max_user_history_length_percentile` 排除具有较长历史记录长度的一定百分比的用户，因为这些用户的数据往往包含噪音。例如，机器人可能有很长的自动交互列表。删除这些用户可限制训练中的噪音。使用直方图或类似工具查看用户历史记录长度后，请选择适当的值。我们建议您设置一个值，该值将保留大多数用户，但会删除边缘案例。 例如，设置 `min__user_history_length_percentile to 0.05` 和 `max_user_history_length_percentile to 0.95` 将包括除那些历史记录长度在最低或最高 5% 内的用户之外的所有用户。 默认值：0.99 范围：[0.0, 1.0] 值类型：浮点数 HPO 可调：否  | 

## Personalized-Ranking 示例笔记本
<a name="personalized-ranking-sample-notebook"></a>

 有关展示如何使用 Personalized-Ranking 食谱的示例 Jupyter 笔记本，请参阅 [Personalize Ranking 示例](https://github.com/aws-samples/amazon-personalize-samples/blob/master/next_steps/core_use_cases/personalized_ranking/personalize_ranking_example.ipynb)。