

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

# 选择食谱
<a name="working-with-predefined-recipes"></a>

 当您创建自定义解决方案时，您需指定食谱并配置训练参数。*食谱* 是针对特定使用案例准备的 Amazon Personalize 算法。Amazon Personalize 根据常见使用案例为训练模型提供食谱。当您为解决方案创建解决方案版本时，Amazon Personalize 会根据食谱和训练配置训练支持该解决方案版本的模型。

Amazon Personalize 食谱在训练期间使用以下内容：
+ 数据的预定义属性
+ 预定义特征转换
+ 预定义算法
+ 算法的初始参数设置

为了优化模型，您可以在创建解决方案时覆盖上述多个参数。有关更多信息，请参阅 [超级参数和 HPO](customizing-solution-config-hpo.md)。

**Topics**
+ [按使用案例划分的 Amazon Personalize 食谱类型](#use-cases)
+ [Amazon Personalize 食谱](#recipe-categories)
+ [查看可用的 Amazon Personalize 食谱](#listing-recipes)
+ [User-Personalization-v2 配方](native-recipe-user-personalization-v2.md)
+ [User-Personalization 食谱](native-recipe-new-item-USER_PERSONALIZATION.md)
+ [Trending-Now 食谱](native-recipe-trending-now.md)
+ [Popularity-Count 食谱](native-recipe-popularity.md)
+ [Personalized-Ranking-v2 配方](native-recipe-personalized-ranking-v2.md)
+ [Personalized-Ranking 食谱](native-recipe-search.md)
+ [语义相似度配方](native-recipe-semantic-similarity.md)
+ [Similar-Items 食谱](native-recipe-similar-items.md)
+ [SIMS 配方](native-recipe-sims.md)
+ [Next-Best-Action 配方](native-recipe-next-best-action.md)
+ [Item-Affinity 食谱](item-affinity-recipe.md)
+ [Item-Attribute-Affinity 食谱](item-attribute-affinity-recipe.md)
+ [旧版 HRNN 配方](legacy-user-personalization-recipes.md)

## 按使用案例划分的 Amazon Personalize 食谱类型
<a name="use-cases"></a>

要选择您的食谱，请先从以下内容中选择您的使用案例，并记下其对应的食谱类型。
+ 向用户推荐物品（USER\$1PERSONALIZATION 食谱）

  要向用户提供个性化建议，请使用 USER\$1PERSONALIZATION 食谱训练您的模型。个性化建议有助于提高参与度和转化率。
+ 对用户物品排名（PERSONALIZED\$1RANKING 食谱） 

  要对用户的精选列表或搜索结果顺序进行个性化处理，请使用 PERSONALIZED\$1RANKING 食谱训练您的模型。PERSONALIZED\$1RANKING 食谱根据给定用户的预测兴趣水平，对一组输入项进行重新排名，从而创建个性化列表。个性化列表可改善客户体验，提高客户忠诚度和参与度。
+  推荐趋势或热门物品（POPULAR\$1ITEMS 食谱） 

  要推荐趋势或热门物品，请使用 POPULAR\$1ITEMS 食谱。如果您的客户高度重视与其他用户交互的内容，则您可以使用 POPULAR\$1ITEMS。常见用途包括推荐病毒式社交媒体内容、突发新闻文章或最近的体育视频。
+  推荐类似物品（RELATED\$1ITEMS 食谱）

  要推荐类似物品（例如，经常一起购买的物品或其他用户也看过的电影），您应该使用 RELATED\$1ITEMS 食谱。推荐类似物品可以帮助您的客户发现物品，还可以提高用户转化率。
+  建议下一个最佳操作（PERSONALIZED\$1ACTIONS 配方）

  要实时向用户建议下一个最佳操作，例如注册忠诚度计划或申请信用卡，您应该使用 PERSONALIZED\$1ACTIONS 配方。建议下一个最佳操作可以提高客户忠诚度、创造更多收入并改善用户体验。
+  获取用户细分（USER\$1SEGMENTATION 食谱）

  要根据物品输入数据获取用户细分（例如，最有可能与具有特定属性的物品进行交互的用户），您应该使用 USER\$1SEGMENTATION 食谱。获取用户细分可以帮助您创建高级市场活动，根据不同的用户细分采取行动的可能性，将不同的物品推广给这类用户细分。

## Amazon Personalize 食谱
<a name="recipe-categories"></a>

Amazon Personalize 提供以下类型的食谱。除了行为差异外，每种类型对获取推荐都有不同的要求，如下表所示。


| 食谱类型 | 配方 | API | API 要求 | 
| --- | --- | --- | --- | 
| USER\$1PERSONALIZATION |  [User-Personalization-v2](native-recipe-user-personalization-v2.md) [User-Personalization](native-recipe-new-item-USER_PERSONALIZATION.md) [HRNN 食谱（旧版）](native-recipe-hrnn.md) [HRNN-Metadata 食谱（旧版）](native-recipe-hrnn-metadata.md) [HRNN-Coldstart 食谱（旧版）](native-recipe-hrnn-coldstart.md)  | [GetRecommendations](API_RS_GetRecommendations.md) |  `userId`：必需 `itemId`：未使用 `inputList`：不适用  | 
| POPULAR\$1ITEMS |  [Trending-Now](native-recipe-trending-now.md) [热门程度-计数](native-recipe-popularity.md)  | [GetRecommendations](API_RS_GetRecommendations.md) |  `userId`：仅在您应用了需要它的过滤器时才是必需的 `itemId`：未使用 `inputList`：不适用  | 
| PERSONALIZED\$1RANKING |  [Personalized-Ranking-v2](native-recipe-personalized-ranking-v2.md) [Personalized-Ranking](native-recipe-search.md)  | [GetPersonalizedRanking](API_RS_GetPersonalizedRanking.md) |  `userId`：必需 `itemId`：不适用 `inputList`：itemId 的列表  | 
| RELATED\$1ITEMS |  [Similar-Items](native-recipe-similar-items.md) [SIMS](native-recipe-sims.md) [语义相似度配方](native-recipe-semantic-similarity.md)  | [GetRecommendations](API_RS_GetRecommendations.md) |  `userId`：仅在您应用了需要它的过滤器时才是必需的 `itemId`：必需 `inputList`：不适用  | 
| PERSONALIZED\$1ACTIONS |  [Next-Best-Action](native-recipe-next-best-action.md)  | [GetActionRecommendations](API_RS_GetActionRecommendations.md) |  `userId`：必需 `actionId`：未使用 `itemId`：未使用 `inputList`：不适用  | 
| USER\$1SEGMENTATION |  [Item-Affinity](item-affinity-recipe.md) [Item-Attribute-Affinity](item-attribute-affinity-recipe.md)  | [CreateBatchSegmentJob](API_CreateBatchSegmentJob.md) |  有关批量工作流程的要求，请参阅[使用批量细分作业来获取用户细分](creating-batch-seg-job.md)。  | 

## 查看可用的 Amazon Personalize 食谱
<a name="listing-recipes"></a>

查看可用配方列表：
+ 在 Amazon Personalize 控制台中，选择一个数据集组。在导航窗格中，选择**解决方案和配方**，然后选择**配方**选项卡。
+ 使用后 适用于 Python (Boto3) 的 AWS SDK，调用 [ListRecipes](API_ListRecipes.md) API。
+ 对于 AWS CLI，使用以下命令。

  ```
  aws personalize list-recipes
  ```

要使用 SDK for Python (Boto3) 获取有关食谱的信息，请调用 [DescribeRecipe](API_DescribeRecipe.md) API。要使用获取有关配方的信息 AWS CLI，请使用以下命令。

```
aws personalize describe-recipe --recipe-arn recipe_arn
```

# User-Personalization-v2 配方
<a name="native-recipe-user-personalization-v2"></a>

User-Personalization-v2（aws-user-personalization-v2）配方会根据用户的偏好推荐他们将与之交互的物品。例如，您可以使用 User-Personalization-v2 为流式传输应用程序生成个性化影片推荐，或者为零售应用程序生成个性化产品推荐。其他应用场景包括为新闻网站生成实时推荐或为个性化营销活动生成批量推荐。

 User-Personalization-v2 可以对物品交互数据集和物品数据集中的多达 500 万个物品进行训练。而且，它以比 [User-Personalization](native-recipe-new-item-USER_PERSONALIZATION.md) 更低的延迟生成更相关的推荐。

 因为 User-Personalization-v2 会根据您的数据向用户推荐最相关的物品，所以它会更频繁地推荐带有交互数据的现有物品。为确保推荐中包括新物品，您可以根据创建时间戳使用包括一些物品的推广。有关推广的更多信息，请参阅[通过实时推荐推广物品](promoting-items.md)。

 此配方使用基于转换器的架构来训练一个模型，该模型可以了解上下文并跟踪数据中的关系和模式。*转换器*是一种神经网络架构，可将输入序列转换或更改为输出序列。对于 Amazon Personalize，输入序列是用户在您的数据中的物品交互历史记录。输出序列是他们的个性化推荐。有关转换器的更多信息，请参阅 AWS 云计算概念中心的[什么是人工智能中的转换器？](https://aws.amazon.com/what-is/transformers-in-artificial-intelligence/)。

User-Personalization-v2 使用与其他配方不同的定价模式。有关定价的更多信息，请参阅 [Amazon Personalize 定价](https://aws.amazon.com/personalize/pricing/)。

**Topics**
+ [配方特征](#user-personalization-v2-features)
+ [必需和可选数据集](#user-personalization-v2-datasets)
+ [属性和超参数](#user-personalization-v2-hyperparameters)

## 配方特征
<a name="user-personalization-v2-features"></a>

User-Personalization-v2 在生成物品推荐时使用以下 Amazon Personalize 配方特征：
+ 实时个性化 - 使用实时个性化时，Amazon Personalize 会根据用户不断变化的兴趣来更新和调整物品推荐。有关更多信息，请参阅 [实时个性化](use-case-recipe-features.md#about-real-time-personalization)。
+ 浏览 - 使用浏览时，推荐包括的物品具有更少的交互数据或用户相关性。使用 User-Personalization-v2 时，Amazon Personalize 会为您处理浏览配置。为确保推荐中包括新物品，您可以根据其创建时间戳使用包括新物品的推广。有关推广的更多信息，请参阅[通过实时推荐推广物品](promoting-items.md)。
+ 自动更新 - 通过自动更新，Amazon Personalize 每两小时自动更新一次最新模型（解决方案版本），以便为推荐考虑新物品。有关更多信息，请参阅 [自动更新](use-case-recipe-features.md#automatic-updates)。
+  推荐元数据 - 使用 User-Personalization-v2 配方时，如果您的物品数据集包含至少一列元数据，则市场活动可以自动选择在推荐结果中包括物品元数据。您没有手动为市场活动启用元数据。您可以使用元数据来丰富用户界面中的建议，例如将电影的类型添加到轮播中。有关更多信息，请参阅 [推荐中的物品元数据](campaigns.md#create-campaign-return-metadata)。

## 必需和可选数据集
<a name="user-personalization-v2-datasets"></a>

要使用 User-Personalization-v2，您必须创建一个物品交互数据集，并导入至少 1000 个物品交互。Amazon Personalize 主要根据物品交互数据生成推荐。有关更多信息，请参阅 [物品交互数据](interactions-datasets.md)。User-Personalization-v2 可以对物品交互数据集和物品数据集中的多达 500 万个物品进行训练。

使用 User-Personalization-v2 时，Amazon Personalize 可以使用包含以下内容的物品交互数据：
+ 事件类型和事件值数据 - Amazon Personalize 使用事件类型数据（例如点击或观看事件类型），通过用户行为中的任何模式来识别用户的意图和兴趣。此外，您还可以在训练前使用事件类型和事件值数据来筛选记录。有关更多信息，请参阅 [事件类型和事件值数据](interactions-datasets.md#event-type-and-event-value-data)。
**注意**  
使用 User-Personalization-v2 时，在按事件类型或值进行筛选之前，训练费用将基于交互数据。有关定价的更多信息，请参阅 [Amazon Personalize 定价](https://aws.amazon.com/personalize/pricing/)。
+ 上下文元数据 - 上下文元数据是您在事件发生时在用户环境中收集的交互数据，例如其位置或设备类型。有关更多信息，请参阅 [上下文元数据](interactions-datasets.md#interactions-contextual-metadata)。

 以下数据集是可选的，可以用于改进推荐：
+ 用户数据集 - Amazon Personalize 可以使用您的用户数据集中的数据来更好地了解您的用户及其兴趣。您还可以使用用户数据集中的数据来筛选推荐。有关您可以导入的用户数据的信息，请参阅[用户元数据](users-datasets.md)。
+ 物品数据集 - Amazon Personalize 可以使用您的物品数据集中的数据来识别其行为中的关联和模式。这有助于 Amazon Personalize 了解您的用户及其兴趣。您还可以使用物品数据集中的数据来筛选推荐。有关您可以导入的物品数据的信息，请参阅[物品元数据](items-datasets.md)。

## 属性和超参数
<a name="user-personalization-v2-hyperparameters"></a>

User-Personalization-v2 配方有以下属性：
+  **名称** – `aws-user-personalization-v2`
+  **食谱 Amazon 资源名称 (ARN)** - `arn:aws:personalize:::recipe/aws-user-personalization-v2`
+  **算法 ARN** - `arn:aws:personalize:::algorithm/aws-user-personalization-v2`

有关更多信息，请参阅 [选择食谱](working-with-predefined-recipes.md)。

下表描述了 User-Personalization-v2 配方的超参数。*超参数* 是一个算法参数，您可以调整该参数以提高模型性能。算法超参数控制模型的执行方式。为超参数选择最佳值的过程称为超参数优化 (HPO)。使用 User-Personalization-v2 时，如果开启自动训练，则 Amazon Personalize 将每 90 天自动执行一次 HPO。如果没有开启自动训练，就不会执行 HPO。

该表为每个超参数提供以下信息：
+ **范围**：[上界, 下界]
+ **值类型**：Integer、Continuous（浮点数）、Categorical（布尔值、列表、字符串）


| 名称 | 描述 | 
| --- | --- | 
| 算法超参数 | 
| apply\$1recency\$1bias |  确定模型是否应为物品交互数据集中的最新物品交互数据赋予更多权重。最新的交互数据可能包括交互事件底层模式的突然变化。  要训练一个使最近事件具有更高权重的模型，请将 `apply_recency_bias` 设置为 `true`。要训练一个使所有过往交互占相同权重的模型，请将 `apply_recency_bias` 设置为 `false`。 默认值：`true` 范围：`true` 或 `false` 值类型：布尔值 HPO 可调：否  | 

# User-Personalization 食谱
<a name="native-recipe-new-item-USER_PERSONALIZATION"></a>

**重要**  
我们建议使用 [User-Personalization-v2](native-recipe-user-personalization-v2.md) 配方。它可以通过更快的训练考虑多达 500 万个物品，并以更低的延迟生成相关的推荐。

用户个性化 (aws-user-personalization) 配方针对所有个性化推荐场景进行了优化。它可预测用户最有可能与之交互的物品。您可以使用 User-Personalization 为流式传输应用程序生成个性化影片推荐，或者为零售应用程序生成个性化产品推荐。

使用 User-Personalization 时，Amazon Personalize 主要根据物品交互数据集中的用户物品交互数据来生成推荐。它还可以使用物品数据集和用户数据集中的任何物品和用户元数据。有关它使用的数据的更多信息，请参阅[必需和可选数据集](#user-personalization-datasets)。

**Topics**
+ [配方特征](#user-personalization-features)
+ [必需和可选数据集](#user-personalization-datasets)
+ [属性和超参数](#bandit-hyperparameters)
+ [使用 User-Personalization 食谱进行训练（控制台）](#training-user-personalization-recipe-console)
+ [使用 User-Personalization 食谱进行训练 (Python SDK)](#training-user-personalization-recipe)
+ [获取建议并记录展示次数 (SDK for Python (Boto3))](#user-personalization-get-recommendations-recording-impressions)
+ [示例 Jupyter 笔记本](#bandits-sample-notebooks)

## 配方特征
<a name="user-personalization-features"></a>

User-Personalization 在生成物品推荐时使用以下 Amazon Personalize 配方特征：
+ 实时个性化 - 使用实时个性化时，Amazon Personalize 会根据用户不断变化的兴趣来更新和调整物品推荐。有关更多信息，请参阅 [实时个性化](use-case-recipe-features.md#about-real-time-personalization)。
+ 浏览 - 通过浏览，推荐包括新物品或交互数据较少的物品。当您目录的更新速度非常快，或者当新物品（如新闻文章或推广）在上架之初时与用户更相关时，这可以提高物品的发现率和参与度。有关浏览的更多信息，请参阅[探索](use-case-recipe-features.md#about-exploration)。
+ 自动更新 - 通过自动更新，Amazon Personalize 每两小时自动更新一次最新模型（解决方案版本），以便为推荐考虑新物品。有关更多信息，请参阅 [自动更新](use-case-recipe-features.md#automatic-updates)。

## 必需和可选数据集
<a name="user-personalization-datasets"></a>

要使用 User-Personalization，您必须创建一个[物品交互数据集](interactions-datasets.md)，并导入至少 1000 个物品交互。Amazon Personalize 主要根据物品交互数据生成推荐。

使用 User-Personalization 时，Amazon Personalize 可以使用包含以下内容的物品交互数据：
+ 事件类型和事件值数据 - Amazon Personalize 使用事件类型数据（例如点击或观看事件类型），通过用户行为中的任何模式来识别用户的意图和兴趣。此外，您还可以在训练前使用事件类型和事件值数据来筛选记录。有关更多信息，请参阅 [事件类型和事件值数据](interactions-datasets.md#event-type-and-event-value-data)。
+ 上下文元数据 - 上下文元数据是您在事件发生时在用户环境中收集的交互数据，例如其位置或设备类型。有关更多信息，请参阅 [上下文元数据](interactions-datasets.md#interactions-contextual-metadata)。
+ 展示数据 - 展示是用户与特定物品交互（点击、观看、购买等）时可见的物品列表。有关更多信息，请参阅 [展示数据](interactions-datasets.md#interactions-impressions-data)。

 以下数据集是可选的，可以用于改进推荐：
+ 用户数据集 - Amazon Personalize 可以使用您的用户数据集中的数据来更好地了解您的用户及其兴趣。您还可以使用用户数据集中的数据来筛选推荐。有关您可以导入的用户数据的信息，请参阅[用户元数据](users-datasets.md)。
+ 物品数据集 - Amazon Personalize 可以使用您的物品数据集中的数据来识别其行为中的关联和模式。这有助于 Amazon Personalize 了解您的用户及其兴趣。您还可以使用物品数据集中的数据来筛选推荐。有关您可以导入的物品数据的信息，请参阅[物品元数据](items-datasets.md)。

## 属性和超参数
<a name="bandit-hyperparameters"></a>

User-Personalization 食谱具有以下属性：
+  **名称** – `aws-user-personalization`
+  **食谱 Amazon 资源名称 (ARN)** - `arn:aws:personalize:::recipe/aws-user-personalization`
+  **算法 ARN** - `arn:aws:personalize:::algorithm/aws-user-personalization`

有关更多信息，请参阅 [选择食谱](working-with-predefined-recipes.md)。

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

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


| 名称 | 说明 | 
| --- | --- | 
| 算法超参数 | 
| hidden\$1dimension |  模型中使用的隐藏变量的数量。*隐藏变量* 重新创建用户的购买历史记录和物品统计数据来生成排名分数。当物品交互数据集包含更复杂的模式时，请指定更多数量的隐藏维度。使用更多隐藏维度需要更大的数据集和更多的处理时间。要确定最佳值，请使用 HPO。要使用 HPO，当您调用 [CreateSolution](API_CreateSolution.md) 和 [CreateSolutionVersion](API_CreateSolutionVersion.md) 操作时，请将 `performHPO` 设置为 `true`。 默认值：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 可调：否  | 
| 物品浏览市场活动配置超参数 | 
| exploration\$1weight |  确定建议包含物品交互数据较少或相关性较低的物品的频率。值越接近 1.0，浏览次数就越多。如果值为零，则表示没有浏览，建议基于当前数据（相关性）。有关更多信息，请参阅 [CampaignConfig](API_CampaignConfig.md)。 默认值：0.3 范围：[0.0, 1.0] 值类型：浮点数 HPO 可调：否  | 
| exploration\$1item\$1age\$1cut\$1off |  指定自物品交互数据集中所有物品最近一次交互以来的最大物品使用期限（以天为单位）。这会根据物品使用期限定义物品浏览的范围。Amazon Personalize 根据物品的创建时间戳或物品交互数据（如果缺少创建时间戳数据）来确定物品使用期限。有关 Amazon Personalize 如何确定物品使用期限的更多信息，请参阅[创建时间戳数据](items-datasets.md#creation-timestamp-data)。 要增加 Amazon Personalize 在浏览期间考虑的物品数量，请输入更大的值。最小值为 1 天，默认值为 30 天。建议可能包括比您指定的物品使用期限截止时间更早的物品。这是因为这些物品与用户相关，而浏览并未识别出它们。 默认值：30.0 范围：正浮点数 值类型：浮点数 HPO 可调：否  | 

## 使用 User-Personalization 食谱进行训练（控制台）
<a name="training-user-personalization-recipe-console"></a>

要使用 User-Personalization 食谱在控制台中生成建议，请先使用食谱训练新的解决方案版本。然后，使用解决方案版本部署市场活动并使用市场活动获取建议。

**使用 User-Personalization 食谱训练新解决方案版本（控制台）**

1. 在[https://console.aws.amazon.com/personalize/家](https://console.aws.amazon.com/personalize/home)中打开 Amazon Personalize 控制台并登录您的账户。

1. 使用新架构创建自定义数据集组，然后上传包含展示数据的数据集。（可选）在物品数据集中包含 [CREATION\$1TIMESTAMP]() 和[非结构化文本元数据](items-datasets.md#text-data)数据，这样，Amazon Personalize 就可以更准确地计算物品的使用期限并识别冷物品。

   有关导入数据的更多信息，请参阅[将训练数据导入 Amazon Personalize 数据集](import-data.md)。

1. 在**数据集组**页面上，选择包含一个或多个带有展示数据的数据集的新数据集组。

1. 在导航窗格中，选择**解决方案和食谱**，然后选择**创建解决方案**。

1. 在**创建解决方案**页面上，对于**解决方案名称**，输入新解决方案的名称。

1. 对于**解决方案类型**，选择**物品建议**，为用户获取物品建议。

1. 在**配方**中，选择 **aws-user-personalization**。这时，将显示**解决方案配置**部分，其中提供了几个配置选项。

1. 在**事件配置**中，如果您的项目交互数据集包含 EVENT\$1TYPE 或同时包含 EVENT\$1TYPE 和 EVENT\$1VALUE 列，则可以选择使用**事件类型**和**事件值阈值**字段，来选择 Amazon Personalize 在训练模型时使用的项目交互数据。有关更多信息，请参阅 [选择用于训练的物品交互数据](event-values-types.md)。

    如果您有多个事件类型并使用 User-Personalization-v 2 个配方或 Personalized-Ranking-v 2 个配方，则也可以为不同的类型指定不同的权重。例如，您可以配置一个解决方案，为购买事件赋予高于点击事件的权重。有关更多信息，请参阅 [使用事件配置优化解决方案](optimizing-solution-events-config.md)。

1. （可选）为您的解决方案配置超参数。有关 User-Personalization 食谱属性和超参数的列表，请参阅[属性和超参数](#bandit-hyperparameters)。

1. 选择**创建并训练解决方案**以开始训练。此时，将显示**控制面板**页面。

   您可以导航到解决方案详情页面，在**解决方案版本** 部分跟踪训练进度。训练完成时，状态会变为**活动**。

**创建市场活动并获取建议（控制台）**

 当您的解决方案版本状态为**活动**时，您就可以按如下方式创建市场活动并获得建议了：

1. 在解决方案详细信息页面或**市场活动** 页面上，选择**创建新的市场活动**。

1.  在**创建新的市场活动**页面上，对于**市场活动详细信息**，提供以下信息：
   + **市场活动名称**：输入市场活动的名称。您在此处输入的文本将显示在市场活动控制面板和详细信息页面上。
   + **解决方案**：选择您刚刚创建的解决方案。
   + **解决方案版本 ID**：选择您刚刚创建的解决方案版本 ID。
   + **最低预调配每秒事务数**：设置 Amazon Personalize 支持的最低预调配每秒事务数。有关更多信息，请参阅 [CreateCampaign](API_CreateCampaign.md) 操作。

1. 对于**活动配置**，提供以下信息：
   + **浏览权重：**配置要浏览的程度，其中，建议包含的物品交互数据越少或相关性越低，您所指定的浏览频率就越高。值越接近 1，浏览次数就越多。如果值为零，则表示没有浏览，建议基于当前数据（相关性）。
   + **浏览物品期限截止**：输入自上次交互以来的最大物品期限（以天为单位），以定义物品浏览的范围。要增加 Amazon Personalize 在浏览期间考虑的物品数量，请输入更大的值。

      例如，如果您输入 10，则在浏览期间仅考虑数据集中自最近一次交互以来 10 天内具有物品交互数据的物品。
**注意**  
建议可能包括没有来自该时间范围之外的物品交互数据的物品。这是因为这些物品与用户兴趣相关，但不需要浏览识别它们。

1. 选择**创建市场活动**。

1. 在市场活动详细信息页面上，当市场活动状态变为**活动** 时，您可以使用市场活动来获取建议并记录展示量。有关更多信息，请参阅“入门”中的[步骤 5：获得建议](getting-started-console.md#getting-started-console-get-recommendations)。

    Amazon Personalize 会每两小时自动更新一次最新解决方案版本，以包含新数据。您的市场活动会自动使用更新的解决方案版本。有关更多信息，请参阅 [自动更新](use-case-recipe-features.md#automatic-updates)。

   要手动更新市场活动，请先使用控制台或 [CreateSolutionVersion](API_CreateSolutionVersion.md) 操作创建和训练新的解决方案版本，并将 `trainingMode` 设置为 `update`。然后，在控制台的**市场活动** 页面或使用 [UpdateCampaign](API_UpdateCampaign.md) 操作，手动更新市场活动。
**注意**  
 Amazon Personalize 不会自动更新您在 2020 年 11 月 17 日之前创建的解决方案版本。

## 使用 User-Personalization 食谱进行训练 (Python SDK)
<a name="training-user-personalization-recipe"></a>

当您创建了数据集组并上传了包含展示数据的数据集后，您可以使用 User-Personalization 食谱训练解决方案。（可选）在物品数据集中包含 [CREATION\$1TIMESTAMP]() 和[非结构化文本元数据](items-datasets.md#text-data)数据，这样，Amazon Personalize 就可以更准确地计算物品的使用期限并识别冷物品。有关创建数据集组和上传训练数据的更多信息，请参阅[为 Amazon Personalize 架构创建架构 JSON 文件](how-it-works-dataset-schema.md)。

**使用 SDK 使用用户个性化配方训练解决方案 AWS**

1. 使用 `create_solution` 方法创建新的解决方案。

   将 `solution name` 替换为您的解决方案名称，将 `dataset group arn` 替换为数据集组的 Amazon 资源名称 (ARN)。

   ```
   import boto3
   
   personalize = boto3.client('personalize')
   
   print('Creating solution')
   create_solution_response = personalize.create_solution(name = 'solution name', 
                               recipeArn = 'arn:aws:personalize:::recipe/aws-user-personalization', 
                               datasetGroupArn = 'dataset group arn',
                               )
   solution_arn = create_solution_response['solutionArn']
   print('solution_arn: ', solution_arn)
   ```

   有关 aws-user-personalization配方属性和超参数的列表，请参见[属性和超参数](#bandit-hyperparameters)。

1. 使用更新的训练数据创建新的*解决方案版本*，并使用以下代码片段将 `trainingMode` 设置为 `FULL`。将 `solution arn` 替换为您的解决方案 ARN。

   ```
   import boto3
           
   personalize = boto3.client('personalize')
           
   create_solution_version_response = personalize.create_solution_version(solutionArn = 'solution arn', 
                                                                  trainingMode='FULL')
   
   new_solution_version_arn = create_solution_version_response['solutionVersionArn']
   print('solution_version_arn:', new_solution_version_arn)
   ```

1. 当 Amazon Personalize 创建完解决方案版本后，使用以下参数创建市场活动：
   + 提供新的 `campaign name` 及步骤 2 中生成的 `solution version arn`。
   + 修改 `explorationWeight` 物品浏览配置超参数以配置要浏览的程度。值越接近 1.0，建议物品交互数据较少或相关性较低的物品的频率就越高。默认值为 0.3。
   + 修改 `explorationItemAgeCutOff` 物品浏览配置超参数，以提供应浏览物品的最大持续时间（相对于最新交互的天数）。该值越大，浏览期间考虑的物品就越多。

   使用以下 Python 片段创建新市场活动，其以浏览为重点，浏览截止日期为 30 天。创建市场活动通常需要几分钟，但也可能需要一个多小时。

   ```
   import boto3
           
   personalize = boto3.client('personalize')
   
   create_campaign_response = personalize.create_campaign(
       name = 'campaign name',
       solutionVersionArn = 'solution version arn',
       minProvisionedTPS = 1,
       campaignConfig = {"itemExplorationConfig": {"explorationWeight": "0.3", "explorationItemAgeCutOff": "30"}}
   )
   
   campaign_arn = create_campaign_response['campaignArn']
   print('campaign_arn:', campaign_arn)
   ```

    通过 User-Personalization，Amazon Personalize 每两小时自动更新一次解决方案版本，以包含新数据。您的市场活动会自动使用更新的解决方案版本。有关更多信息，请参阅 [自动更新](use-case-recipe-features.md#automatic-updates)。

   要手动更新市场活动，请先使用控制台或 [CreateSolutionVersion](API_CreateSolutionVersion.md) 操作创建和训练新的解决方案版本，并将 `trainingMode` 设置为 `update`。然后，在控制台的**市场活动** 页面或使用 [UpdateCampaign](API_UpdateCampaign.md) 操作，手动更新市场活动。
**注意**  
 Amazon Personalize 不会自动更新您在 2020 年 11 月 17 日之前创建的解决方案版本。

## 获取建议并记录展示次数 (SDK for Python (Boto3))
<a name="user-personalization-get-recommendations-recording-impressions"></a>

创建市场活动后，您可以使用它为用户获取建议并记录展示次数。有关使用获取批次推荐的信息， AWS SDKs 请参阅[创建批量推理作业 (AWS SDKs)](creating-batch-inference-job.md#batch-sdk)。



**获取建议并记录展示次数**

1. 调用 `get_recommendations` 方法。将 `campaign arn` 更改为新市场活动的 ARN，将 `user id` 更改为用户的 userId。

   ```
   import boto3
               
   rec_response = personalize_runtime.get_recommendations(campaignArn = 'campaign arn', userId = 'user id')
   print(rec_response['recommendationId'])
   ```

1. 创建用于发送 PutEvents 请求的新事件跟踪器。将 `event tracker name` 替换为事件跟踪器的名称，将 `dataset group arn` 替换为数据集组的 ARN。

   ```
   import boto3
           
   personalize = boto3.client('personalize')
   
   event_tracker_response = personalize.create_event_tracker( 
       name = 'event tracker name',
       datasetGroupArn = 'dataset group arn'
   )
   event_tracker_arn = event_tracker_response['eventTrackerArn']
   event_tracking_id = event_tracker_response['trackingId']
   print('eventTrackerArn:{},\n eventTrackingId:{}'.format(event_tracker_arn, event_tracking_id))
   ```

1.  使用步骤 1 中的 `recommendationId` 和步骤 2 中的 `event tracking id` 来创建新 `PutEvents` 请求。此请求记录来自用户会话的新展示数据。将 `user id` 更改为用户的 ID。

   ```
   import boto3
               
   personalize_events.put_events(
        trackingId = 'event tracking id',
        userId= 'user id',
        sessionId = '1',
        eventList = [{
        'sentAt': datetime.now().timestamp(),
        'eventType' : 'click',
        'itemId' : rec_response['itemList'][0]['itemId'],        
        'recommendationId': rec_response['recommendationId'],
        'impression': [item['itemId'] for item in rec_response['itemList']],
        }]
   )
   ```

## 示例 Jupyter 笔记本
<a name="bandits-sample-notebooks"></a>

有关展示如何使用 User-Personalization 食谱的示例 Jupyter 笔记本，请参阅[具有浏览的 User Personalization](https://github.com/aws-samples/amazon-personalize-samples/blob/master/next_steps/core_use_cases/user_personalization/user-personalization-with-exploration.ipynb)。

# Trending-Now 食谱
<a name="native-recipe-trending-now"></a>

 Trending-Now 配方 (aws-trending-now) 会针对在用户中迅速变得越来越受欢迎的商品生成推荐。如果越来越受欢迎的物品与您的客户更相关，则您可以使用 Trending-Now 食谱。例如，您的客户可能高度重视其他用户交互的内容。常见用途包括推荐病毒式社交媒体内容、突发新闻文章或最近的体育视频。

Trending-Now 通过计算每个物品在可配置的时间间隔内的交互增加量来自动识别热门物品。增长率最高的物品被视为热门物品。时间基于物品交互数据集中的时间戳数据。考虑的物品来自您批量和增量导入的交互数据。您无需为 Trending-Now 手动创建新的解决方案版本，即可考虑交互数据中的新物品。

您可以在创建解决方案时提供 `Trend discovery frequency`，以指定时间间隔。例如，如果您为 `Trend discovery frequency` 指定 `30 minutes`，则对于每 30 分钟的数据，Amazon Personalize 会识别自上次评估以来交互增长率最高的物品。可能的频率包括 30 分钟、1 小时、3 小时和 1 天。选择与您的交互数据分布一致的频率。在您选择的时间间隔内缺少数据会降低建议的准确性。如果您在过去两个时间间隔内导入的交互数据为零，则 Amazon Personalize 将只推荐受欢迎的物品，而不推荐热门物品。

 使用 Trending-Now，您可以在 Amazon Personalize 控制台的**测试市场活动**页面上，调用 [GetRecommendations](API_RS_GetRecommendations.md) 操作或获取建议。Amazon Personalize 会返回最热门的物品。只有在您应用需要 `userId` 的筛选器时，才需在请求中传递该 ID。使用 GetRecommendations API，您可以使用`numResults`参数配置返回的热门项目数量。您无法通过 Trending-Now 食谱获得批量建议。

 要使用 Trending-Now，您必须创建一个项目交互数据集，其中包含至少 1000 个唯一的历史和事件互动（按事件类型筛选后，如果提供）。 eventValueThreshold在生成热门物品推荐时，Trending-Now 不使用物品或用户数据集中的数据。但是，您仍然可以根据这些数据集中的数据筛选建议。有关更多信息，请参阅 [筛选建议和用户细分](filter.md)。

**Topics**
+ [属性和超参数](#trending-now-hyperparameters)
+ [创建解决方案 (SDK for Python (Boto3))](#trending-now-python)
+ [示例 Jupyter 笔记本](#trending-now-sample-notebooks)

## 属性和超参数
<a name="trending-now-hyperparameters"></a>

Trending-Now 食谱具有以下属性：
+  **名称** – `aws-trending-now`
+  **食谱 Amazon 资源名称 (ARN)** - `arn:aws:personalize:::recipe/aws-trending-now`
+  **算法 ARN** - `arn:aws:personalize:::algorithm/aws-trending-now-custom`

有关更多信息，请参阅 [选择食谱](working-with-predefined-recipes.md)。

下表描述 Trending-Now 食谱的超参数。*超参数* 是一个算法参数，您可以调整该参数以提高模型性能。算法超参数控制模型的执行方式。为超参数选择最佳值的过程称为超参数优化 (HPO)。有关更多信息，请参阅 [超级参数和 HPO](customizing-solution-config-hpo.md)。

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


| 名称 | 说明 | 
| --- | --- | 
| 特征转换超参数 | 
| Trend discovery frequency |  指定 Amazon Personalize 评估交互数据并识别热门物品的频率。例如，如果您为 `Trend discovery frequency` 指定 `30 minutes`，则每隔 30 分钟，Amazon Personalize 就会识别 30 分钟时间间隔内交互增长率最高的物品。 可用的频率包括 30 分钟、1 小时、2 小时、3 小时和 1 天。选择与您的交互数据分布一致的频率。在您选择的时间间隔内缺少数据会降低建议的准确性。如果您使用 CreateSolution API 操作但未指定值，则默认值为每 2 小时一次。  对于所有大于 2 小时的参数值，Amazon Personalize 会每 2 小时自动刷新一次热门项目推荐，以涵盖新交互和新项目。  默认值：2 小时 可能的值：30 分钟、1 小时、2 小时、3 小时和 1 天。 值类型：字符串 HPO 可调：否  | 

## 创建解决方案 (SDK for Python (Boto3))
<a name="trending-now-python"></a>

以下代码显示了如何使用 SDK for Python (Boto3) 创建具有 Trending-Now 食谱的解决方案。`trend_discovery_frequency` 的可能值为 `30 minutes`、`1 hour`、`3 hours` 和 `1 day`。有关使用控制台创建解决方案的信息，请参阅[创建解决方案（控制台）](create-solution.md#configure-solution-console)。

```
import boto3
            
personalize = boto3.client("personalize")

create_solution_response = personalize_client.create_solution(
    name="solution name",
    recipeArn="arn:aws:personalize:::recipe/aws-trending-now",
    datasetGroupArn="dataset group ARN",
    solutionConfig={
        "featureTransformationParameters": {
            "trend_discovery_frequency": "1 hour"
         }
    }
)
print(create_solution_response['solutionArn'])
```

## 示例 Jupyter 笔记本
<a name="trending-now-sample-notebooks"></a>

有关展示如何使用 Trending-Now 食谱的 Jupyter 笔记本示例，请参阅 Amazon Personalize 示例存储库中的 trending [\$1now\$1example.](https://github.com/aws-samples/amazon-personalize-samples/blob/master/next_steps/core_use_cases/trending_now/trending_now_example.ipynb) ipynb。 GitHub 

# Popularity-Count 食谱
<a name="native-recipe-popularity"></a>

Popularity-Count 根据您的交互数据推荐最受欢迎的物品。最受欢迎的物品是唯一用户交互数据最多的物品。配方为所有用户返回相同的热门项目。Popularity-Count 是一个不错的基准，用于使用 Amazon Personalize 在您创建解决方案版本时生成的评估指标与其他食谱进行比较。有关更多信息，请参阅 [通过指标评估 Amazon Personalize 解决方案版本](working-with-training-metrics.md)。

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

此预定义配方具有以下属性：
+  **名称** – `aws-popularity-count`
+  **食谱 ARN** - `arn:aws:personalize:::recipe/aws-popularity-count`
+  **算法 ARN** - `arn:aws:personalize:::algorithm/aws-popularity-count`
+  **特征转换 ARN** - `arn:aws:personalize:::feature-transformation/sims`
+  **食谱类型** - `USER_PERSONALIZATION`

Popularity-Count 没有公开的超参数。

# Personalized-Ranking-v2 配方
<a name="native-recipe-personalized-ranking-v2"></a>

Personalized-Ranking-v2 配方可生成物品的个性化排名。*个性化排名* 是为特定用户按相关性重新排名的推荐物品的列表。如果您有一系列已订购的物品（例如搜索结果、推广或精选列表），且想要为每位用户提供个性化重新排名，则此食谱非常有用。

 Personalized-Ranking-v2 可以对物品交互数据集和物品数据集中的多达 500 万个物品进行训练。而且它以比[Personalized-Ranking](native-recipe-search.md)更低的延迟生成更准确的排名。

 使用 Personalized-Ranking-v2 时，您可以在 [GetPersonalizedRanking](API_RS_GetPersonalizedRanking.md) API 操作中指定要排名的物品。如果您指定的物品没有交互数据，则 Amazon Personalize 将在 GetPersonalizedRanking API 响应中返回这些没有推荐分数的物品。

 此配方使用基于转换器的架构来训练一个模型，该模型可以了解上下文并跟踪数据中的关系和模式。*转换器*是一种神经网络架构，可将输入序列转换或更改为输出序列。对于 Amazon Personalize，输入序列是用户在您的数据中的物品交互历史记录。输出序列是他们的个性化推荐。有关转换器的更多信息，请参阅 AWS 云计算概念中心的[什么是人工智能中的转换器？](https://aws.amazon.com/what-is/transformers-in-artificial-intelligence/)。

Personalized-Ranking-v2 使用与其他配方不同的定价模式。有关定价的更多信息，请参阅 [Amazon Personalize 定价](https://aws.amazon.com/personalize/pricing/)。

**Topics**
+ [配方特征](#personalized-ranking-v2-features)
+ [必需和可选数据集](#personalized-ranking-v2-datasets)
+ [属性和超参数](#personalized-ranking-v2-hyperparameters)

## 配方特征
<a name="personalized-ranking-v2-features"></a>

Personalized-Ranking-v2 在对物品进行排名时使用以下 Amazon Personalize 配方特征：
+ 实时个性化 - 使用实时个性化时，Amazon Personalize 会根据用户不断变化的兴趣来更新和调整物品推荐。有关更多信息，请参阅 [实时个性化](use-case-recipe-features.md#about-real-time-personalization)。
+  推荐元数据 - 使用 Personalized-Ranking-v2 配方时，如果您的物品数据集包含至少一列元数据，则市场活动可以自动选择在推荐结果中包括物品元数据。您没有手动为市场活动启用元数据。您可以使用元数据来丰富用户界面中的建议，例如将电影的类型添加到轮播中。有关更多信息，请参阅 [推荐中的物品元数据](campaigns.md#create-campaign-return-metadata)。

## 必需和可选数据集
<a name="personalized-ranking-v2-datasets"></a>

要使用 Personalized-Ranking-v2，您必须创建一个物品交互数据集，并导入至少 1000 个物品交互。Amazon Personalize 主要根据物品交互数据生成排名。有关更多信息，请参阅 [物品交互数据](interactions-datasets.md)。Personalized-Ranking-v2 可以对物品交互数据集和物品数据集中的多达 500 万个物品进行训练。

使用 Personalized-Ranking-v2 时，Amazon Personalize 可以使用包含以下内容的物品交互数据：
+ 事件类型和事件值数据 - Amazon Personalize 使用事件类型数据（例如点击或观看事件类型），通过用户行为中的任何模式来识别用户的意图和兴趣。此外，您还可以在训练前使用事件类型和事件值数据来筛选记录。有关更多信息，请参阅 [事件类型和事件值数据](interactions-datasets.md#event-type-and-event-value-data)。
**注意**  
使用 Personalized-Ranking-v2 时，在按事件类型或值进行筛选之前，训练费用将基于交互数据。有关定价的更多信息，请参阅 [Amazon Personalize 定价](https://aws.amazon.com/personalize/pricing/)。
+ 上下文元数据 - 上下文元数据是您在事件发生时在用户环境中收集的交互数据，例如其位置或设备类型。有关更多信息，请参阅 [上下文元数据](interactions-datasets.md#interactions-contextual-metadata)。

 以下数据集是可选的，可以用于改进推荐：
+ 用户数据集 - Amazon Personalize 可以使用您的用户数据集中的数据来更好地了解您的用户及其兴趣。您还可以使用用户数据集中的数据来筛选推荐。有关您可以导入的用户数据的信息，请参阅[用户元数据](users-datasets.md)。
+ 物品数据集 - Amazon Personalize 可以使用您的物品数据集中的数据来识别其行为中的关联和模式。这有助于 Amazon Personalize 了解您的用户及其兴趣。您还可以使用物品数据集中的数据来筛选推荐。有关您可以导入的物品数据的信息，请参阅[物品元数据](items-datasets.md)。

## 属性和超参数
<a name="personalized-ranking-v2-hyperparameters"></a>

Personalized-Ranking-v2 配方具有以下属性：
+  **名称** – `aws-personalized-ranking-v2`
+  **食谱 Amazon 资源名称 (ARN)** - `arn:aws:personalize:::recipe/aws-personalized-ranking-v2`
+  **算法 ARN** - `arn:aws:personalize:::algorithm/aws-personalized-ranking-v2`

有关更多信息，请参阅 [选择食谱](working-with-predefined-recipes.md)。

下表描述了 Personalized-Ranking-v2 配方的超参数。*超参数* 是一个算法参数，您可以调整该参数以提高模型性能。算法超参数控制模型的执行方式。为超参数选择最佳值的过程称为超参数优化 (HPO)。使用 Personalized-Ranking-v2 时，如果开启自动训练，则 Amazon Personalize 将每 90 天自动执行一次 HPO。如果没有开启自动训练，就不会执行 HPO。

该表为每个超参数提供以下信息：
+ **范围**：[上界, 下界]
+ **值类型**：Integer、Continuous（浮点数）、Categorical（布尔值、列表、字符串）


| 名称 | 描述 | 
| --- | --- | 
| 算法超参数 | 
| apply\$1recency\$1bias |  确定模型是否应为物品交互数据集中的最新物品交互数据赋予更多权重。最新的交互数据可能包括交互事件底层模式的突然变化。  要训练一个使最近事件具有更高权重的模型，请将 `apply_recency_bias` 设置为 `true`。要训练一个使所有过往交互占相同权重的模型，请将 `apply_recency_bias` 设置为 `false`。 默认值：`true` 范围：`true` 或 `false` 值类型：布尔值 HPO 可调：否  | 

# 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)。

# 语义相似度配方
<a name="native-recipe-semantic-similarity"></a>

语义相似度配方 (aws-semantic-similarity) 根据文本内容为语义上与给定项目相似的项目生成推荐。与依赖用户-项目交互的传统相似度配方不同，此配方分析物品的文本描述和属性，以生成嵌入并识别语义上相似的项目

此食谱非常适合您想要根据内容相似性推荐项目的场景，例如推荐主题相似的图书、相关主题的文章或描述相似的产品。它特别适用于交互历史记录有限的新项目（冷启动场景），以及语义关系比共现模式更重要的目录。

使用 Semantic-Similarity，您可以在[GetRecommendations](https://docs.aws.amazon.com/personalize/latest/dg/API_RS_GetRecommendations.html)操作（或 Amazon Personalize 控制台）中提供商品编号，Amazon Personalize 会返回类似商品的清单。或者，您可以使用批量工作流程获取库存中所有商品的类似商品（请参阅[获取批量商品推荐](https://docs.aws.amazon.com/personalize/latest/dg/getting-batch-recommendations.html)）。

**Topics**
+ [配方特征](#semantic-similarity-features)
+ [必需和可选数据集](#semantic-similarity-datasets)
+ [属性和超参数](#semantic-similarity-hyperparameters)

## 配方特征
<a name="semantic-similarity-features"></a>

Semantic-Similarity 在生成商品推荐时使用以下 Amazon Personalize 食谱功能：
+ 实时个性化 — 借助语义相似度配方，Amazon Personalize 会自动更新您的商品目录。当您向 Items 数据集添加新项目或更新现有项目元数据时，使用增量训练时，这些更改将在大约 30 分钟内反映在您的推荐中。这样可以确保您的客户始终看到您目录中最新的可用商品，而无需人工干预或等待完整的再培训周期。这对于经常变化的目录（例如新闻文章、博客文章或季节性产品）尤其有价值。要启用增量更新，客户必须：
  + 在 API 中将解决方案设置为 `performIncrementalUpdate` `true`
  + 在用户界面的 “训练方法” 下选择 “完整和增量训练” 或 “增量训练” 选项

  请注意，每当执行更新时，启用增量更新都会产生额外费用。
+  带有推荐的元数据 — 借助语义相似度配方，广告系列可以自动选择在推荐结果中包含商品元数据。您没有手动为市场活动启用元数据。您可以使用元数据来丰富用户界面中的建议，例如将电影的类型添加到轮播中。有关更多信息，请参阅[推荐中的商品元数据](https://docs.aws.amazon.com/personalize/latest/dg/campaigns.html#create-campaign-return-metadata)。

## 必需和可选数据集
<a name="semantic-similarity-datasets"></a>

要使用语义相似度配方，必须创建 Items 数据集。Amazon Personalize 根据商品元数据的语义含义生成推荐。有关更多信息，请参阅[项目元数据](https://docs.aws.amazon.com/personalize/latest/dg/items-datasets.html)。语义相似度可以对项目数据集中多达 1000 万个项目进行训练。

借助语义相似性，Amazon Personalize 需要包含以下内容的商品数据
+ itemName 字段-一个字符串字段，`itemName`设置为。`true`此字段应包含商品的标题或名称。
+ 文本描述字段-至少一个标记为`textual`包含项目描述的字符串字段。这应该是最能描述和代表该项目的字段。

Amazon Personalize 使用此字段生成语义嵌入，以捕捉您的商品的含义和内容。

此外，如果您想使用基于新鲜度的排名，则应设置保留的 CREATION\$1TIMESTAMP 字段。有关更多信息，请参阅 [属性和超参数](#semantic-similarity-hyperparameters)。

 以下数据集是可选的，可以用于改进推荐：
+ 互动数据集 — Amazon Personalize 可以使用互动数据集中的数据，根据用户对项目的参与度计算人气分数。你可以使用人气分数根据类似物品在用户中的受欢迎程度对它们进行排名。如果要使用基于人气的排名，则必须提供互动数据集。您也可以使用互动数据集中的数据来筛选推荐。有关您可以导入的交互数据的信息，请参阅[项目交互数据](https://docs.aws.amazon.com/personalize/latest/dg/interactions-datasets.html)

## 属性和超参数
<a name="semantic-similarity-hyperparameters"></a>

语义相似度配方具有以下特性：
+  **名称** – `aws-semantic-similarity`
+  **食谱 Amazon 资源名称 (ARN)** - `arn:aws:personalize:::recipe/aws-semantic-similarity`
+  **算法 ARN** - `arn:aws:personalize:::algorithm/aws-semantic-similarity`
+ **特征转换 ARN** - `arn:aws:personalize:::feature-transformation/aws-semantic-similarity`
+ **食谱类型** - `RELATED_ITEMS`

有关更多信息，请参阅 [选择食谱](working-with-predefined-recipes.md)。

Semantic-Similarity 配方没有公开的超参数，但你可以在创建活动时配置受欢迎程度和新鲜度因子来影响相似物品的排名。

该表提供了每个因子的以下信息：
+ **范围**：[上界, 下界]
+ **值类型**：Integer、Continuous（浮点数）、Categorical（布尔值、列表、字符串）


| Name | 说明 | 
| --- | --- | 
| 新鲜度 |  新鲜度系数表示一件物品的最新程度。新鲜度是通过根据物品的 CREATION\$1TIMESTAMP 对物品的使用寿命进行标准化来计算的。要使用新鲜度系数，您必须在 Items 数据集架构中包含 CREATION\$1TIMESTAMP 字段。较高的新鲜度系数值将在语义上相似的推荐中优先考虑较新的项目 默认值：`0.0` 射程:` [0.0, 1.0]` 值类型：双精度  | 
| 人气 |  受欢迎程度系数根据用户互动来表示某件商品的受欢迎程度。受欢迎程度是通过标准化每件物品收到的互动次数来计算的。要使用人气因子，在创建数据集组时必须包含交互数据集。受欢迎程度因子值越高，在语义相似的推荐中，优先考虑与客户互动较多的项目。 默认值：`0.0` 射程:` [0.0, 1.0]` 值类型：双精度  | 

请注意，新鲜度和受欢迎程度分数是在训练时计算的，增量更新不会更新受欢迎程度和新鲜度分数。要了解影响推荐项目排名的最新受欢迎程度和新鲜度因素，请使用自动再训练，或者手动重新训练解决方案，然后使用新的解决方案版本更新广告系列。

# Similar-Items 食谱
<a name="native-recipe-similar-items"></a>

**注意**  
 所有 RELATED\$1ITEMS 食谱都使用交互数据。如果您还有物品元数据并希望 Amazon Personalize 使用它来查找类似物品，可选择 Similar-Items。或者，在您想为模型配置更多超参数时，选择 [SIMS 配方](native-recipe-sims.md)。

 Simalar-Item aws-similar-items s () 配方会为与您指定的物品相似的项目生成推荐。使用 Similar-Items，可帮助客户根据他们之前的行为和物品元数据发现您目录中的新物品。推荐类似物品可以提高您应用程序的用户参与度、点击率和转化率。

Similar-Items 根据交互数据和您提供的任何物品元数据计算相似度。它会考虑交互数据集用户历史记录中物品的共存情况，以及任何物品元数据的相似度。例如，对于 Similar-Items，Amazon Personalize 可以推荐客户经常购买的具有相似风格的物品（[分类元数据](items-datasets.md#item-categorical-data)），或者不同用户也观看过类似描述的电影（[非结构化文本元数据](items-datasets.md#text-data)）。

对于 Similar-Items，您可以在 [GetRecommendations](API_RS_GetRecommendations.md) 操作（或 Amazon Personalize 控制台）中提供物品 ID，Amazon Personalize 会返回类似物品的列表。或者，您可以使用批量工作流程针对库存中的所有物品获取相似物品（请参阅[获取批量物品推荐](getting-batch-recommendations.md)）。当您获得类似物品时，您可以根据您在请求中指定的物品的属性筛选物品。为此，请将 `CurrentItem`.`attribute` 元素添加到您的筛选器。有关示例，请参阅[item data filter examples](item-recommendation-filter-examples.md#item-examples)。

 要使用 Similar-Items，您必须创建一个包含至少 1000 个唯一历史和事件交互（组合）的物品交互数据集。为了获得更准确的预测，我们建议您同时创建物品数据集并导入有关目录中物品的元数据。Similar-Items 在生成建议时不使用用户数据集中的数据。您仍然可以根据用户数据集中的数据筛选建议。有关更多信息，请参阅 [筛选建议和用户细分](filter.md)。

 如果您的物品数据集包含文本数据和物品标题数据，则可以在批量建议中为相关物品生成主题。有关更多信息，请参阅 [内容生成器中带有主题的批量建议](themed-batch-recommendations.md)。

 您可以获得与冷物品（交互次数少于五次的物品）相似的物品的建议。如果 Amazon Personalize 找不到您在建议请求或批量输入文件中指定的物品 ID，则食谱会将热门物品作为建议返回。

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

## 属性和超参数
<a name="similar-items-hyperparameters"></a>

Similar-Items 食谱具有以下属性：
+  **名称** – `aws-similar-items`
+  **食谱 Amazon 资源名称 (ARN)** - `arn:aws:personalize:::recipe/aws-similar-items`
+  **算法 ARN** - `arn:aws:personalize:::algorithm/aws-similar-items`

有关更多信息，请参阅 [选择食谱](working-with-predefined-recipes.md)。

下表描述 Similar-Items 食谱的超参数。*超参数* 是一个算法参数，您可以调整该参数以提高模型性能。算法超参数控制模型的执行方式。为超参数选择最佳值的过程称为超参数优化 (HPO)。有关更多信息，请参阅 [超级参数和 HPO](customizing-solution-config-hpo.md)。

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


| 名称 | 说明 | 
| --- | --- | 
| 算法超参数 | 
| popularity\$1discount\$1factor |   配置受欢迎程度如何影响建议。指定一个接近 0 的值可包含更受欢迎的物品。指定一个更接近 1 的值可减少对受欢迎程度的关注。 默认值：0.0 范围：[0.0, 1.0] 值类型：浮点数 HPO 可调：否  | 
| item\$1id\$1hidden\$1dim |  Amazon Personalize 根据交互数据对物品 ID 嵌入进行建模时使用的隐藏变量的数量。*隐藏变量* 重新创建用户的购买历史记录和物品统计数据来生成排名分数。要使用 `item_id_hidden_dim`，您必须使用 HPO 并提供最小和最大范围值。Amazon Personalize 使用 HPO 来查找您指定范围内的最佳值。当物品交互数据集较大时，指定更大的最大值。使用较大的最大值需要更多处理时间。  要使用 HPO，请在您调用 [CreateSolution](API_CreateSolution.md) 操作时，将 `performHPO` 设置为 `true`。 默认值：100 范围：[30、200] 值类型：整数 HPO 可调：是  | 
| item\$1metadata\$1hidden\$1dim |  Amazon Personalize 用来对物品元数据建模的隐藏变量的数量。要使用 `item_metadata_hidden_dim`，您必须使用 HPO 并提供最小和最大范围值。Amazon Personalize 使用 HPO 来查找您指定范围内的最佳值。当物品交互数据集较大时，指定更大的最大值。使用较大的最大值需要更多处理时间。  要使用 HPO，请在您调用 [CreateSolution](API_CreateSolution.md) 操作时，将 `performHPO` 设置为 `true`。 默认值：100 范围：[30、200] 值类型：整数 HPO 可调：是  | 

# SIMS 配方
<a name="native-recipe-sims"></a>

**注意**  
 所有 RELATED\$1ITEMS 食谱都使用交互数据。在您想为模型配置更多超参数时，选择 SIMS。如果您有物品元数据并希望 Amazon Personalize 使用它来查找类似物品，可选择 [Similar-Items 食谱](native-recipe-similar-items.md)。

 Item-to-item相似之处 (SIMS) 配方使用协作筛选来推荐与你获得推荐时指定的项目最相似的项目。SIMS 使用您的物品交互数据集（而不是颜色或价格等物品元数据）来确定相似度。SIMS 会识别交互数据集用户历史记录中物品的共存情况，以推荐相似物品。例如，借助 SIMS，Amazon Personalize 可以推荐客户经常一起购买的咖啡店物品或不同用户也观看的电影。

 当您获得类似物品建议时，您可以根据您在请求中指定的物品的属性筛选物品。为此，请将 `CurrentItem`.`attribute` 元素添加到您的筛选器。有关示例，请参阅[item data filter examples](item-recommendation-filter-examples.md#item-examples)。

 要使用 SIMS，您必须创建一个包含至少 1000 个唯一历史和事件交互（组合）的物品交互数据集。SIMS 在生成建议时不使用用户或物品数据集中的数据。您仍然可以根据这些数据集中的数据筛选建议。有关更多信息，请参阅 [筛选建议和用户细分](filter.md)。

 如果某件物品的用户行为数据不足，或者找不到您提供的物品 ID，则 SIMS 会推荐热门物品。创建解决方案版本后，确保您的解决方案版本和数据为最新状态。使用 SIMS 时，您必须手动创建新的解决方案版本（重新训练模型），以便 Amazon Personalize 将新用户纳入用户细分，并更新模型以反映用户的最新行为。然后，您必须使用解决方案版本更新所有市场活动。有关更多信息，请参阅 [维护建议相关性](maintaining-relevance.md)。

SIMS 食谱具有以下属性：
+  **名称** – `aws-sims`
+  **食谱 Amazon 资源名称 (ARN)** - `arn:aws:personalize:::recipe/aws-sims`
+  **算法 ARN** - `arn:aws:personalize:::algorithm/aws-sims`
+  **特征转换 ARN** - `arn:aws:personalize:::feature-transformation/sims`
+  **食谱类型** - `RELATED_ITEMS`

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

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


| Name | 说明 | 
| --- | --- | 
| 算法超参数 | 
| popularity\$1discount\$1factor |   配置受欢迎程度如何影响建议。指定一个接近 0 的值可包含更受欢迎的物品。指定一个更接近 1 的值可减少对受欢迎程度的关注。 默认值：0.5 范围：[0.0, 1.0] 值类型：浮点数 HPO 可调：是  | 
| min\$1cointeraction\$1count |  计算一对物品之间的相似性所需的最小共同交互次数。例如，值 `3` 表示您需要三个或更多与这两个物品进行交互的用户以供算法计算其相似性。 默认值：3 范围：[0, 10] 值类型：整数 HPO 可调：是  | 
| 特征化超参数 | 
| min\$1user\$1history\$1length\$1percentile |  要包含在模型训练中的用户历史记录长度的最小百分位数。*历史记录长度* 是用户的可用数据总量。使用 `min_user_history_length_percentile` 排除历史记录长度较短的一定百分比的用户。历史记录较短的用户通常会根据物品受欢迎程度而不是用户的个人需求或需要来显示模式。删除它们可以在训练模型时更多地关注数据中的基础模式。使用直方图或类似工具查看用户历史记录长度后，请选择适当的值。我们建议您设置一个值，该值将保留大多数用户，但会删除边缘案例。 默认值：0.005 范围：[0.0, 1.0] 值类型：浮点数 HPO 可调：否  | 
| max\$1user\$1history\$1length\$1percentile |  要包含在模型训练中的用户历史记录长度的最大百分位数。历史记录长度 是用户的可用数据总量。使用 `max_user_history_length_percentile` 排除历史记录长度较长的一定百分比的用户。具有较长历史记录的用户往往包含噪音。例如，机器人可能有很长的自动交互列表。删除这些用户可限制训练中的噪音。使用直方图或类似工具查看用户历史记录长度后，请选择适当的值。我们建议您设置一个值，该值将保留大多数用户，但会删除边缘案例。 例如，`min_hist_length_percentile = 0.05` 和 `max_hist_length_percentile = 0.95` 将包括除那些历史记录长度在最低或最高 5% 内的用户之外的所有用户。 默认值：0.995 范围：[0.0, 1.0] 值类型：浮点数 HPO 可调：否  | 
| min\$1item\$1interaction\$1count\$1percentile |  要包含在模型训练中的物品交互计数的最小百分位数。使用 `min_item_interaction_count_percentile` 排除交互历史记录较短的百分比的物品。历史记录较短的物品通常是新物品。删除它们可以在训练模型时更多地关注具有已知历史记录的物品。使用直方图或类似工具查看用户历史记录长度后，请选择适当的值。我们建议您设置一个值，该值将保留大多数物品，但会删除边缘案例。 默认值：0.01 范围：[0.0, 1.0] 值类型：浮点数 HPO 可调：否  | 
| max\$1item\$1interaction\$1count\$1percentile |  要包含在模型训练中的物品交互计数的最大百分位数。使用 `max_item_interaction_count_percentile` 排除交互历史记录较长的百分比的物品。具有较长的历史记录的物品往往较旧，可能已过时。例如，已绝版的电影发行版本。删除这些物品可以专注于相关性更高的物品。使用直方图或类似工具查看用户历史记录长度后，请选择适当的值。我们建议您设置一个值，该值将保留大多数物品，但会删除边缘案例。 例如，`min_item_interaction_count_percentile = 0.05` 和 `max_item_interaction_count_percentile = 0.95` 将包括除交互计数在最低或最高 5% 内的物品之外的所有物品。 默认值：0.9 范围：[0.0, 1.0] 值类型：浮点数 HPO 可调：否  | 

## SIMS 示例笔记本
<a name="native-recipe-sims-more-info"></a>

有关演示如何使用 SIMS 配方的 Jupyter 笔记本示例，请参阅[查找类似物品 \$1 HPO](https://github.com/aws-samples/amazon-personalize-samples/blob/master/next_steps/core_use_cases/related_items/personalize_sims_example.ipynb)。

# Next-Best-Action 配方
<a name="native-recipe-next-best-action"></a>

Next-Best-Action (aws-next-best-action) 配方为您的用户生成下一个最佳操作的实时建议。用户的下一个最佳操作是他们最有可能采取的操作。例如，注册您的忠诚度计划、下载您的应用或申请信用卡。

 借助 Next-Best-Action，您可以在用户使用您的应用程序时为他们提供个性化的操作建议。为用户建议正确的操作可能会导致更多用户采取您的操作。根据您要建议的操作，您可以提高客户忠诚度、创造更多收入并改善应用程序的用户体验。有关描述个性化操作建议如何有利于电子商务应用程序的使用案例示例，请参阅[使用案例示例](#nba-use-case-example)。

 Amazon Personalize 会根据您导入到操作数据集的操作预测下一个最佳操作。它根据用户与操作和物品的交互来确定他们最可能采取的操作。如果您的操作数据包含操作的值，则 Amazon Personalize 会将该操作的值计算在内。如果用户执行两个不同操作的可能性相同，则 Amazon Personalize 会使值越高的操作排名越高。

当您收到用户的实时操作建议时，Amazon Personalize 会返回用户最有可能在可配置的时间段内执行的操作列表 (`action optimization period`)。例如，他们在接下来的 14 天内最有可能采取的操作。该列表按倾向分数以降序排序。该分数表示用户将执行此操作的可能性。

 在您导入操作交互数据之前，Amazon Personalize 会在您的操作数据集中推荐不进行个性化的操作，倾向分数为 0.0。在操作达到以下条件后，该操作将获得分数：
+  至少 50 次 TAKEN 事件类型的操作交互。
+  至少 50 次 NOT\$1TAKEN 或 VIEWED 事件类型的操作交互。

这些操作交互必须出现在最新的解决方案版本训练中，并且必须在操作交互数据集中的最新交互时间戳后的 6 周内发生。

有关 Next-Best-Action 配方使用的数据的更多信息，请参阅[必需和可选数据集](#nba-datasets)。

当您使用 Next-Best-Action 配方创建解决方案时，您可以使用 `action optimization period` 特征化超参数配置 Amazon Persalization 在预测操作时使用的时间窗口。有关更多信息，请参阅 [属性和超参数](#nba-hyperparameters)。

**Topics**
+ [使用案例示例](#nba-use-case-example)
+ [配方特征](#nba-recipe-features)
+ [必需和可选数据集](#nba-datasets)
+ [属性和超参数](#nba-hyperparameters)

## 使用案例示例
<a name="nba-use-case-example"></a>

为用户建议正确的操作可能会导致更多用户采取您的操作。根据您要建议的操作，您可以潜在提高客户忠诚度、创造更多收入并改善应用程序的用户体验。

例如，您可能有一个电子商务应用程序建议执行以下不同操作：
+ 订阅忠诚度计划
+ 下载移动应用
+ 在*珠宝*类别中购买 
+ 在*美容和美发*类别中购买

您的用户可能经常在您的网站上购物，并且反复执行*珠宝*以及*美容和美发*购买操作。对于该用户，Amazon Personalize 操作建议及其分数可能包括以下内容：
+ 订阅忠诚度计划

  倾向分数 – 1.00
+ 在*珠宝*类别中购买

  倾向分数 – 0.86
+ 在*美容和美发*类别中购买

  倾向分数 – 0.85

有了这些操作建议，您就知道要提示用户注册您的忠诚度计划。此操作的倾向分数最高，也是用户最有可能采取的操作。这是因为用户经常在您的商店购物，并且很可能会从您的忠诚度计划中获得好处。

## 配方特征
<a name="nba-recipe-features"></a>

 Next-Best-Action 配方在生成操作建议时使用以下 Amazon Personalize 配方特征：
+ 实时个性化：Amazon Personalize 使用实时个性化功能，根据用户不断变化的兴趣来更新和调整操作建议。有关更多信息，请参阅 [实时个性化](use-case-recipe-features.md#about-real-time-personalization)。
+ 浏览：通过浏览，建议包括新的操作或交互数据较少的操作。有关浏览的更多信息，请参阅[探索](use-case-recipe-features.md#about-exploration)。
+ 自动更新：通过自动更新，Amazon Personalize 每两小时自动更新一次最新模型（解决方案版本），以便通过浏览将新操作纳入到建议中。有关更多信息，请参阅 [自动更新](use-case-recipe-features.md#automatic-updates)。

## 必需和可选数据集
<a name="nba-datasets"></a>

要使用 Next-Best-Action 配方，必须创建以下数据集：
+ 操作：您将有关您的操作的数据（例如其值）导入到 Amazon Personalize 操作数据集中。

   在您的操作数据中，您可以为每个操作提供一个 EXPIRATION\$1TIMESTAMP。如果某操作已过期，Amazon Personalize 将不会将其包含在建议中。您也可以为每个操作提供 REPEAT\$1FREQUENCY。这表示在用户与操作交互后，Amazon Personalize 应等待多长时间才能再次建议该操作。有关操作数据集可以存储的数据的信息，请参阅[操作元数据](actions-datasets.md)。
+ 物品交互：您的物品交互数据集必须至少有 1000 次物品交互。Amazon Personalize 使用物品交互来了解用户的当前状态及其兴趣。有关物品交互数据的信息，请参阅[物品交互数据](interactions-datasets.md)。

 以下数据集是可选的：
+ 操作交互数据集：*操作交互*是指涉及用户和操作数据集中的操作的交互。您可以导入“已执行”、“未执行”和“已查看”的操作交互。尽管此数据是可选的，但我们建议您导入操作交互数据以获得高质量的建议。如果您没有操作交互数据，则可以创建一个空的操作交互数据集，并使用 [PutActionInteractions](API_UBS_PutActionInteractions.md) API 操作记录客户与操作的交互。

   在您导入操作交互数据之前，Amazon Personalize 会在您的操作数据集中推荐不进行个性化的操作，倾向分数为 0.0。在操作达到以下条件后，该操作将获得分数：
  +  至少 50 次 TAKEN 事件类型的操作交互。
  +  至少 50 次 NOT\$1TAKEN 或 VIEWED 事件类型的操作交互。

  这些操作交互必须出现在最新的解决方案版本训练中，并且必须在操作交互数据集中的最新交互时间戳后的 6 周内发生。

   有关您可以导入的操作交互数据的信息，请参阅[操作交互数据](action-interactions-datasets.md)。有关记录操作交互事件的信息，请参阅[记录实时操作交互事件记录操作交互事件](recording-action-interaction-events.md)。
**注意**  
 使用 Next-Best-Action 时，Amazon Personalize 不会在操作交互数据集中使用展示数据或上下文元数据。
+ 用户：Amazon Personalize 使用您的用户数据集中的任何数据来更好地了解您的用户及其兴趣。您还可以使用用户数据集中的数据来筛选操作建议。有关您可以导入的用户数据的信息，请参阅[用户元数据](users-datasets.md)。
+ 物品：Amazon Personalize 使用您的物品数据集以及您的物品交互数据集中的任何数据来识别其行为中的关联和模式。这有助于 Amazon Personalize 了解您的用户及其兴趣。有关您可以导入的物品数据的信息，请参阅[物品元数据](items-datasets.md)。

## 属性和超参数
<a name="nba-hyperparameters"></a>

Next-Best-Action 配方不支持超参数优化。Next-Best-Action 配方具有以下属性：
+  **名称** – `aws-next-best-action`
+  **食谱 Amazon 资源名称 (ARN)** - `arn:aws:personalize:::recipe/aws-next-best-action`
+  **算法 ARN** - `arn:aws:personalize:::algorithm/aws-next-best-action`

下表描述了 aws-next-best-action 配方的特征化超参数。*超参数* 是一个算法参数，您可以调整该参数以提高模型性能。特征化超参数控制如何筛选训练中使用的数据。

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


| 名称 | 描述 | 
| --- | --- | 
| 特征化超参数 | 
| action\$1optimization\$1period |  Amazon Personalize 在预测用户的下一个最佳操作时使用的时间窗口。例如，用户在接下来的 14 天内最有可能采取的操作。 如果您没有太多操作交互数据，请指定较大的值。如果您不确定要指定什么值，请使用默认值。 默认值：14 范围：[7、28] 值类型：整数 HPO 可调：否  | 

# Item-Affinity 食谱
<a name="item-affinity-recipe"></a>

Item-Affinity (aws-item-affinity) 食谱是一个 USER\$1SEGMENTATION 食谱，可为您指定的每个物品创建一个用户细分（用户组）。Amazon Personalize 预测这些用户最有可能与每件物品交互。使用 Item-Affinity 进一步了解您的用户，并根据他们各自的用户细分执行操作。

例如，您可能想根据用户对目录中物品的偏好为零售应用程序创建市场活动。Item-Affinity 将根据交互和物品数据集中的数据为每个物品创建一个用户细分。您可以使用此类细分，根据不同的用户细分执行操作（例如，单击物品或购买物品）的可能性向这些细分推广不同的物品。其他用途可能包括向不同的用户群交叉销售产品或识别潜在的求职者。

 要根据物品获取用户细分，您需使用 Item-Affinity 食谱创建解决方案和解决方案版本，然后将 JSON 格式的物品列表添加到 Amazon S3 存储桶并创建[批量细分作业](creating-batch-seg-job.md)。Amazon Personalize 将每件物品的用户细分输出到您在 Amazon S3 中的输出位置。您的输入数据最多可有 500 个用于获取用户细分的物品。有关为批量细分作业准备输入数据的信息，请参阅[为批量建议准备输入数据](batch-data-upload.md)。

您必须拥有物品交互数据集才能使用 Item-Affinity。物品和用户数据集是可选项。您可以使用批量细分作业来获取用户细分。有关更多信息，请参阅 [获取批量用户细分](getting-user-segments.md)。

创建解决方案版本后，确保您的解决方案版本和数据为最新状态。使用 Item-Affinity 时，您必须创建新的解决方案版本，以便 Amazon Personalize 将新用户纳入用户细分，并更新模型以反映用户的最新行为。要获取物品的用户细分，物品必须在您创建解决方案版本时存在。

Item-Affinity 食谱具有以下属性：
+  **名称** – `aws-item-affinity`
+  **食谱 Amazon 资源名称 (ARN)** - `arn:aws:personalize:::recipe/aws-item-affinity`
+  **算法 ARN** - `arn:aws:personalize:::algorithm/aws-item-affinity`
+  **特征转换 ARN** - `arn:aws:personalize:::feature-transformation/item-affinity`
+  **食谱类型** - `USER_SEGMENTATION`

下表描述 Item-Affinity 食谱的超参数。*超参数* 是一个算法参数，您可以调整该参数以提高模型性能。算法超参数控制模型的执行方式。您不能在 Item-Affinity 食谱中使用超参数优化 (HPO)。

该表还为每个超参数提供以下信息：
+ **范围**：[上界, 下界]
+ **值类型**：Integer、Continuous（浮点数）、Categorical（布尔值、列表、字符串）


| 名称 | 描述 | 
| --- | --- | 
| 算法超参数 | 
| hidden\$1dimension |  模型中使用的隐藏变量的数量。*隐藏变量* 重新创建用户的购买历史记录和物品统计数据来生成排名分数。当交互数据集包含更复杂的模式时，请指定更多数量的隐藏维度。使用更多隐藏维度需要更大的数据集和更多的处理时间。 默认值：149 范围：[32, 256] 值类型：整数  | 

# Item-Attribute-Affinity 食谱
<a name="item-attribute-affinity-recipe"></a>

Item-Attribute-Affinity (aws-item-attribute-affinity) 食谱是一个 USER\$1SEGMENTATION 食谱，可为您指定的每个物品属性创建一个用户细分（用户组）。Amazon Personalize 预测这些用户最有可能与物品特定属性交互。使用 Item-Attribute-Affinity 进一步了解您的用户，并根据他们各自的用户细分执行操作。

例如，您可能想根据用户对目录中鞋子类型的偏好为零售应用程序创建市场活动。Item-Attribute-Affinity 将根据交互和物品数据集中的数据为每个类型的鞋子创建一个用户细分。您可以使用此类细分，根据不同的用户细分执行操作（例如，单击鞋子或购买鞋子）的可能性向这些细分推广不同的鞋子。其他用途可能包括向不同的用户推广不同的电影类型，或者根据工作类型识别潜在的求职者。

 要根据物品属性获取用户细分，您需使用 Item-Attribute-Affinity 食谱创建解决方案和解决方案版本，然后将 JSON 格式的物品属性列表添加到 Amazon S3 存储桶并创建[批量细分作业](creating-batch-seg-job.md)。Amazon Personalize 将每件物品的用户细分输出到您在 Amazon S3 中的输出位置。您的输入数据最多可以有 10 个查询，其中每个查询都是一个或多个物品属性。有关为批量细分作业准备输入数据的信息，请参阅[为批量建议准备输入数据](batch-data-upload.md)。

您必须拥有物品交互数据集和物品数据集才能使用 Item-Attribute-Affinity。您的物品数据集必须至少有一列是非文本、非保留的元数据列。您可以使用批量细分作业来获取用户细分。有关更多信息，请参阅 [使用自定义资源获取批量用户细分](getting-user-segments.md)。

创建解决方案版本后，确保您的解决方案版本和数据为最新状态。使用 Item-Attribute-Affinity 时，您必须创建新的解决方案版本，以便 Amazon Personalize 将新用户纳入用户细分，并更新模型以反映用户的最新行为。要获取物品属性的用户细分，物品属性必须在您创建解决方案版本时存在。

Item-Attribute-Affinity 食谱具有以下属性：
+  **名称** – `aws-item-attribute-affinity`
+  **食谱 Amazon 资源名称 (ARN)** - `arn:aws:personalize:::recipe/aws-item-attribute-affinity`
+  **算法 ARN** - `arn:aws:personalize:::algorithm/aws-item-attribute-affinity`
+  **特征转换 ARN** - `arn:aws:personalize:::feature-transformation/item-attribute-affinity`
+  **食谱类型** - `USER_SEGMENTATION`

下表描述 Item-Attribute-Affinity 食谱的超参数。*超参数* 是一个算法参数，您可以调整该参数以提高模型性能。算法超参数控制模型的执行方式。您不能在 Item-Attribute-Affinity 食谱中使用超参数优化 (HPO)。

该表还为每个超参数提供以下信息：
+ **范围**：[上界, 下界]
+ **值类型**：Integer、Continuous（浮点数）、Categorical（布尔值、列表、字符串）


| 名称 | 描述 | 
| --- | --- | 
| 算法超参数 | 
| hidden\$1dimension |  模型中使用的隐藏变量的数量。*隐藏变量* 重新创建用户的购买历史记录和物品统计数据来生成排名分数。当交互数据集包含更复杂的模式时，请指定更多数量的隐藏维度。使用更多隐藏维度需要更大的数据集和更多的处理时间。 默认值：149 范围：[32, 256] 值类型：整数  | 

# 旧版 HRNN 配方
<a name="legacy-user-personalization-recipes"></a>

旧版 HRNN 食谱不再可用。此文档仅供参考。

 我们建议使用 aws-user-personalizaton（用户个性化）配方，而不是传统的 HRNN 配方。User-Personalization 改进并统一了 HRNN 食谱提供的功能。有关更多信息，请参阅 [User-Personalization 食谱](native-recipe-new-item-USER_PERSONALIZATION.md)。

Amazon Personalize 可以根据其输入数据的分析自动选择最合适的分层递归神经网络 (HRNN) 食谱。该选项称为 AutoML。有关更多信息，请参阅 [使用 AutoML 选择 HRNN 食谱（仅限 API）](training-solution-auto-ml.md)。

**Topics**
+ [使用 AutoML 选择 HRNN 食谱（仅限 API）](training-solution-auto-ml.md)
+ [HRNN 食谱（旧版）](native-recipe-hrnn.md)
+ [HRNN-Metadata 食谱（旧版）](native-recipe-hrnn-metadata.md)
+ [HRNN-Coldstart 食谱（旧版）](native-recipe-hrnn-coldstart.md)

# 使用 AutoML 选择 HRNN 食谱（仅限 API）
<a name="training-solution-auto-ml"></a>

Amazon Personalize 可以根据其输入数据的分析自动选择最合适的分层递归神经网络 (HRNN) 食谱。该选项称为 AutoML。要执行 AutoML，请在调用 [CreateSolution](API_CreateSolution.md) API 时将 `performAutoML` 参数设置为 `true`。

您还可以指定 Amazon Personalize 检查的食谱列表，以根据您指定的指标决定最佳食谱。在这种情况下，您调用 `CreateSolution` 操作，为 `performAutoML` 参数指定 `true`，忽略 `recipeArn` 参数，包含 `solutionConfig` 参数，并指定 `metricName` 和 `recipeList` 作为 `autoMLConfig` 对象的一部分。

下表显示了选择配方的方式。必须指定 `performAutoML` 或 `recipeArn`，但不能同时指定二者。仅使用 HRNN 配方执行 AutoML。


| performAutoML | recipeArn | solutionConfig | 结果 | 
| --- | --- | --- | --- | 
| true | 忽略 | 已忽略 | Amazon Personalize 选择食谱 | 
| true | 忽略 | autoMLConfig：指定了 metricName 和 recipeList | Amazon Personalize 从列表中选择优化指标的食谱 | 
| 忽略 | 满足指定 | 已忽略 | 您指定配方 | 
| 忽略 | 满足指定 | 满足指定 | 您指定配方并覆盖默认训练属性 | 

**注意**  
当 `performAutoML` 为 `true` 时，将忽略 `solutionConfig` 对象的所有参数，`autoMLConfig` 除外。

# HRNN 食谱（旧版）
<a name="native-recipe-hrnn"></a>

**注意**  
旧版 HRNN 食谱不再可用。此文档仅供参考。  
 我们建议使用 aws-user-personalization (User-Personalization) 食谱，而不是旧版 HRNN 食谱。User-Personalization 改进并统一了 HRNN 食谱提供的功能。有关更多信息，请参阅 [User-Personalization 食谱](native-recipe-new-item-USER_PERSONALIZATION.md)。

Amazon Personalize 分层递归神经网络 (HRNN) 食谱模型改变用户行为以在会话期间提供建议。会话是给定时间范围内的一组用户交互，例如，其目标是找到满足需求的特定物品。通过将用户最近交互的权重提高，您可以在会话期间提供更相关的建议。

HRNN 适用于可随时间变化的用户意图和兴趣。它获取有序的用户历史记录并自动对它们进行加权以做出更好的推论。HRNN 使用门控机制将折扣权重建模为物品和时间戳的可学习函数。

Amazon Personalize 从数据集中为每个用户派生特征。如果您已完成实时数据集成，则会根据用户活动实时更新这些特征。要获取建议，您只需提供 `USER_ID`。如果您还提供了 `ITEM_ID`，则 Amazon Personalize 会将其忽略。

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

下表描述 HRNN 配方的超参数。*超参数* 是一个算法参数，您可以调整该参数以提高模型性能。算法超参数控制模型的执行方式。特征化超参数控制如何筛选训练中使用的数据。为超参数选择最佳值的过程称为超参数优化 (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)。 默认值：43 范围：[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 可调：否  | 

# HRNN-Metadata 食谱（旧版）
<a name="native-recipe-hrnn-metadata"></a>

**注意**  
旧版 HRNN 食谱不再可用。此文档仅供参考。  
 我们建议使用 aws-user-personalization (User-Personalization) 食谱，而不是旧版 HRNN 食谱。User-Personalization 改进并统一了 HRNN 食谱提供的功能。有关更多信息，请参阅 [User-Personalization 食谱](native-recipe-new-item-USER_PERSONALIZATION.md)。

HRNN 元数据配方可预测用户将与之交互的物品。它与具有从上下文、用户和物品元数据派生的附加功能（分别来自交互、用户和物品数据集）的 [HRNN](native-recipe-hrnn.md) 配方相似。当有高质量的元数据可用时，HRNN 元数据可提供高于非元数据模型的准确性。使用该配方可能需要更长的训练时间。

HRNN 元数据配方具有以下属性：
+  **名称** – `aws-hrnn-metadata`
+  **食谱 Amazon 资源名称 (ARN)** - `arn:aws:personalize:::recipe/aws-hrnn-metadata`
+  **算法 ARN** - `arn:aws:personalize:::algorithm/aws-hrnn-metadata`
+  **特征转换 ARN** - `arn:aws:personalize:::feature-transformation/featurize_metadata`
+  **食谱类型** - `USER_PERSONALIZATION`

下表描述 HRNN 元数据配方的超参数。*超参数* 是一个算法参数，您可以调整该参数以提高模型性能。算法超参数控制模型的执行方式。特征化超参数控制如何筛选训练中使用的数据。为超参数选择最佳值的过程称为超参数优化 (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)。 默认值：43 范围：[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 可调：否  | 

# HRNN-Coldstart 食谱（旧版）
<a name="native-recipe-hrnn-coldstart"></a>

**注意**  
旧版 HRNN 食谱不再可用。此文档仅供参考。  
 我们建议使用 aws-user-personalization (User-Personalization) 食谱，而不是旧版 HRNN 食谱。User-Personalization 改进并统一了 HRNN 食谱提供的功能。有关更多信息，请参阅 [User-Personalization 食谱](native-recipe-new-item-USER_PERSONALIZATION.md)。

当您经常添加新物品和交互并希望立即获得有关这些物品的建议时，可以使用 HRNN-Coldstart 食谱来预测用户将与之交互的物品。HRNN 冷启动配方类似于 [HRNN 元数据](native-recipe-hrnn-metadata.md)配方，但它允许您获取有关新物品的建议。

此外，当您由于最近的流行趋势或由于交互可能极不寻常并且在训练中引入噪音而希望从训练物品中排除具有长交互列表的物品时，也可以使用 HRNN 冷启动配方。使用 HRNN 冷启动，您可以筛选掉相关性较弱的物品以创建用于训练的子集。该物品子集称为*冷物品*，是在物品交互数据集中具有相关交互事件的物品。如果物品符合以下条件，则该物品被视为冷物品：
+ 交互数量少于指定的最大交互数量。您在配方的 `cold_start_max_interactions` 超参数中指定此值。
+ 相对持续时间短于最大持续时间。您在配方的 `cold_start_max_duration` 超参数中指定此值。

要减少冷物品的数量，请为 `cold_start_max_interactions` 或 `cold_start_max_duration` 设置较低的值。要增加冷物品的数量，请为 `cold_start_max_interactions` 或 `cold_start_max_duration` 设置较大的值。



HRNN-Coldstart 具有以下冷物品限制：
+ `Maximum cold start items`：80,000
+ `Minimum cold start items`：100

如果冷物品的数量超出此范围，则尝试创建解决方案将失败。

HRNN-Coldstart 配方具有以下属性：
+  **名称** – `aws-hrnn-coldstart`
+  **食谱 Amazon 资源名称 (ARN)** - `arn:aws:personalize:::recipe/aws-hrnn-coldstart`
+  **算法 ARN** - `arn:aws:personalize:::algorithm/aws-hrnn-coldstart`
+  **特征转换 ARN** - `arn:aws:personalize:::feature-transformation/featurize_coldstart`
+  **食谱类型** - `USER_PERSONALIZATION`

有关更多信息，请参阅 [选择食谱](working-with-predefined-recipes.md)。

下表描述 HRNN-Coldstart 配方的超参数。*超参数* 是一个算法参数，您可以调整该参数以提高模型性能。算法超参数控制模型的执行方式。特征化超参数控制如何筛选训练中使用的数据。为超参数选择最佳值的过程称为超参数优化 (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 可调：是  | 
| 特征化超参数 | 
| cold\$1start\$1max\$1interactions |  物品可能必须被视为冷物品的最大用户-物品交互次数。 默认值：15 范围：正整数 值类型：整数 HPO 可调：否  | 
| cold\$1start\$1max\$1duration | 用户-物品交互被视为冷启动物品的相对于起点的最大持续时间（以天为单位）。要设置用户-物品交互的起点，请设置 `cold_start_relative_from` 超参数。 默认值：5.0 范围：正浮点数 值类型：浮点数 HPO 可调：否  | 
| cold\$1start\$1relative\$1from |  确定 HRNN 冷启动配方计算 `cold_start_max_duration` 的起点。要从当前时间计算，请选择 `currentTime`。 要从物品交互数据集中最新物品的时间戳计算 `cold_start_max_duration`，请选择 `latestItem`。如果您经常添加新物品，该设置将非常有用。 默认值：`latestItem` 范围：`currentTime`、`latestItem` 值类型：字符串 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 可调：否  | 