

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

# 为训练准备操作元数据
<a name="actions-datasets"></a>

 *操作*是指您可能想向用户建议的交互或创收活动。操作可能包括安装您的移动应用、填写会员资料、加入忠诚度计划或注册促销电子邮件。您可以将有关操作的数据导入到 Amazon Personalize *操作*数据集。操作数据的示例包括操作的唯一 ID、操作的估计值或操作的到期时间戳。

如果您使用 [Next-Best-Action](native-recipe-next-best-action.md)，则必须导入操作元数据。使用此配方时，Amazon Personalize 会根据您导入到操作数据集的操作预测下一个最佳操作。没有其他配方或应用场景会使用操作元数据。您不能在域数据集组中创建操作数据集。

 在训练时，Amazon Personalize 不使用非分类字符串操作数据，例如操作标题或标签。但是，导入这些数据仍然可以增强推荐效果。有关更多信息，请参阅 [非分类字符串数据](#action-string-data)。

批量操作数据必须保存在 CSV 文件中。文件中的每一行都应代表一个唯一操作。完成数据准备后，就可以创建架构 JSON 文件。此文件向 Amazon Personalize 提供关于数据结构的信息。有关更多信息，请参阅 [为 Amazon Personalize 架构创建架构 JSON 文件](how-it-works-dataset-schema.md)。

以下各部分提供了有关如何为 Amazon Personalize 准备操作元数据的更多信息。有关所有数据类型的批量数据格式准则，请参阅[批量数据格式准则](preparing-training-data.md#general-formatting-guidelines)

**Topics**
+ [操作数据要求](#action-data-requirements)
+ [操作过期时间戳数据](#action-expiration-timestamp-data)
+ [重复频率数据](#action-repeat-frequency)
+ [Value data](#action-value-data)
+ [创建时间戳数据](#action-creation-timestamp-data)
+ [分类元数据](#action-categorical-data)
+ [非分类字符串数据](#action-string-data)
+ [操作元数据示例](#actions-data-example)

## 操作数据要求
<a name="action-data-requirements"></a>

 以下是 Amazon Personalize 的操作数据要求。
+ 必须有一个 ACTION\_ID 列，用于存储每个操作的唯一标识符。每个操作都必须有一个物品 ID。它必须是 `string`，最大长度为 256 个字符。
+ 您的数据必须至少包含一个分类字符串或数字元数据列。操作元数据列可以包括空值。我们建议这些列的完成度至少为 70%。
+ 在模型训练期间，Amazon Personalize 最多会考虑 1000 个操作。如果您导入的操作超过 1000 个，Amazon Personalize 会决定哪些操作要包含在训练中，并优先考虑新操作（您最近添加的没有交互的操作）和具有最近交互数据的现有操作。
+ 最大列数为 10。

## 操作过期时间戳数据
<a name="action-expiration-timestamp-data"></a>

 操作过期时间戳指定操作不再有效的日期。您可以按 Unix 纪元时间格式提供操作过期时间戳数据（以秒为单位）。如果某操作已过期，Amazon Personalize 将不会将其包含在建议中。

 如果您想将操作在建议中的出现限制在特定的时间范围内，请为操作指定操作过期时间戳。例如，您可能有一个应用程序在某个月份内开展会员资格活动。您可以为该月底的*注册*操作设置一个到期时间戳。到此日期后，Amazon Personalize 会自动停止建议此操作。

 如果您将新操作的过期时间戳设置为过去的某个时间，或者将操作时间戳更新为过去的时间，则从建议中删除该操作最多可能需要 2 个小时。

## 重复频率数据
<a name="action-repeat-frequency"></a>

 重复频率数据根据用户在您的操作交互数据集中的历史记录，指定 Amazon Personalize 在用户与特定操作交互后应等待多少天才能建议该操作。您可以指定操作的重复频率（以天为单位），最多为 30 天。

例如，您可能有一个电子商务应用程序，其中每个用户都创建一个账户和一个配置文件。如果您有一项 `complete profile` 操作，并且想在用户与该操作交互后等待一周后，然后再次建议该操作，则可以指定 7 天作为该操作的 `REPEAT_FREQENCY`。7 天后，Amazon Personalize 才开始考虑建议此操作。

 如果您没有为某项操作提供重复频率，Amazon Personalize 将不会对该操作在建议中出现的次数设置任何限制。

## Value data
<a name="action-value-data"></a>

 值数据是每个操作的商业价值或重要性。操作的 `value` 可以是 1 – 10，其中 10 指数据集中最有价值的操作。

 例如，您可能有两个操作，一个用于注册基本订阅，另一个用于注册高级服务。对于基本服务，您可以指定值 `5`，而对于高级服务，则指定值 `10`。

 在确定向用户建议的最佳操作时，Amazon Personalize 使用值数据作为一项输入。例如，如果用户采取一项或另一项操作的可能性相同，则 Amazon Personalize 会在建议中将值最高的操作排在更高的位置。

## 创建时间戳数据
<a name="action-creation-timestamp-data"></a>

Amazon Personalize 使用创建时间戳数据（采用 Unix 纪元时间格式，以秒为单位），计算操作的使用年限并相应地调整建议。

如果您没有创建时间戳数据，Amazon Personalize 从任何操作交互数据中推断出这些信息。它使用操作的最旧交互数据的时间戳作为操作的创建时间戳。如果某个操作没有交互数据，则其创建时间戳将设置为训练集中最新交互的时间戳，且 Amazon Personalize 会将其视为新操作。

## 分类元数据
<a name="action-categorical-data"></a>

 Amazon Personalize 使用有关操作的分类元数据，例如季节性或操作排他性，来确定能为用户揭示最佳操作的潜在模式。您可以基于自己的使用案例来定义自己的值范围。分类元数据可以是任何语言。

 您可以导入分类数据，并使用它根据操作的属性筛选建议。有关筛选建议的信息，请参阅[筛选建议和用户细分](filter.md)。

分类值最多可以有 1000 个字符。如果操作的分类值超过 1000 个字符，则您的数据集导入作业将失败。

## 非分类字符串数据
<a name="action-string-data"></a>

 除了操作 ID 外，Amazon Personalize 在训练时不使用非分类字符串数据，例如操作的名称、有关操作的关键词或标签。但是，Amazon Personalize 可以在筛选推荐时使用该数据。您可以创建筛选条件，以根据非分类字符串数据在推荐中包括或删除操作。有关筛选条件的更多信息，请参阅[筛选建议和用户细分](filter.md)。非分类值最多可以有 1000 个字符。

## 操作元数据示例
<a name="actions-data-example"></a>

CSV 文件中的前几行操作元数据看起来可能像下面这样。

```
ACTION_ID,VALUE,MEMBERSHIP_LEVEL,CREATION_TIMESTAMP,REPEAT_FREQUENCY
1,10,Deluxe|Premium,1510003267,7
2,5,Basic,1580003267,7
3,5,Preview,1590003267,3
4,10,Deluxe|Platinum,1560003267,4
...
...
```

`ACTION_ID` 列是必填的。`MEMBERSHIP_LEVEL` 列是一个分类字符串字段。`VALUE`、`CREATION_TIMESTAMP` 和 `REPEAT_FREQUENCY` 字段是具有必需类型的保留关键字。

 完成数据准备后，就可以创建架构 JSON 文件。此文件向 Amazon Personalize 提供关于数据结构的信息。有关更多信息，请参阅 [为 Amazon Personalize 架构创建架构 JSON 文件](how-it-works-dataset-schema.md)。上述示例数据的架构 JSON 文件看起来就是这个样子。

```
{
  "type": "record",
  "name": "Actions",
  "namespace": "com.amazonaws.personalize.schema",
  "fields": [
    {
      "name": "ACTION_ID",
      "type": "string"
    },
    {
      "name": "VALUE",
      "type": [
        "null",
        "long"
      ]
    },
    
    {
      "name": "MEMBERSHIP_LEVEL",
      "type": [
        "null",
        "string"
      ],
      "categorical": true
    },
    
    {
      "name": "CREATION_TIMESTAMP",
      "type": "long"
    },
    {
      "name": "REPEAT_FREQUENCY",
      "type": [
        "long",
        "null"
      ]
    }
  ],
  "version": "1.0"
}
```