

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 準備項目互動資料以進行訓練
<a name="interactions-datasets"></a>

 *項目互動*是使用者與目錄中項目之間的正面互動事件。例如，使用者觀看電影、檢視清單或購買一雙鞋子。您可以將有關使用者與項目互動的資料匯入*項目互動資料集*。您可以記錄多個事件類型，例如*點擊*、*觀看*或*購買*。

例如，如果使用者*按一下*特定項目，然後*喜歡*該項目，您可以讓 Amazon Personalize 使用這些事件做為訓練資料。對於每個事件，您會記錄使用者的 ID、項目的 ID、時間戳記 （以 Unix time epoch 格式） 和事件類型 (*按一下* **等）。然後，您可以將兩個項目互動事件新增至*項目互動資料集*。

對於所有網域使用案例和自訂配方，您的大量項目互動資料必須位於 CSV 檔案中。每一列都應該代表使用者與項目之間的單一互動。完成資料準備後，您就可以建立結構描述 JSON 檔案。此檔案會告知 Amazon Personalize 您資料的結構。如需詳細資訊，請參閱[為 Amazon Personalize 結構描述建立結構描述 JSON 檔案](how-it-works-dataset-schema.md)。

下列各節提供如何準備 Amazon Personalize 項目互動資料的詳細資訊。如需所有資料類型的大量資料格式準則，請參閱[大量資料格式準則](preparing-training-data.md#general-formatting-guidelines)

**Topics**
+ [項目互動資料需求](#item-interaction-requirements)
+ [時間戳記資料](#timestamp-data)
+ [事件類型和事件值資料](#event-type-and-event-value-data)
+ [內容中繼資料](#interactions-contextual-metadata)
+ [印象資料](#interactions-impressions-data)
+ [互動資料範例](#interactions-data-schema-example)

## 項目互動資料需求
<a name="item-interaction-requirements"></a>

下列各節列出 Amazon Personalize 的項目互動資料需求。如需其他配額，請參閱 [Amazon Personalize 端點和配額](limits.md)。



### 最低訓練需求
<a name="item-interaction-min"></a>

對於所有網域使用案例和自訂配方，您的大量項目互動資料必須具有下列項目：
+ 至少 1000 個項目互動記錄來自與目錄中項目互動的使用者。這些互動可以來自大量匯入、串流事件或兩者。
+ 至少 25 個唯一的使用者 IDs，每個 ID 至少有兩個項目互動。

 對於品質建議，我們建議您從至少 1，000 個使用者中至少有 50，000 個項目互動，每個使用者有兩個或更多項目互動。

 若要建立推薦者或自訂解決方案，您至少必須建立*項目互動資料集*。

### 資料欄需求
<a name="item-interaction-columns"></a>

您的項目互動資料必須具有下列資料欄。
+ USER\_ID – 與項目互動之使用者的唯一識別符。每個事件都必須有 USER\_ID。它必須是長度`string`上限為 256 個字元的 。
+ ITEM\_ID – 使用者互動項目的唯一識別符。每個事件都必須有項目 ID。它必須是長度`string`上限為 256 個字元的 。
+ TIMESTAMP – 事件發生的時間 （以秒為單位的 Unix epoch 時間格式）。每個互動都必須有 TIMESTAMP。如需詳細資訊，請參閱[時間戳記資料](#timestamp-data)。
+ EVENT\_TYPE – 項目互動事件的性質，例如*點選*、*觀看*或*購買*。對於網域建議者，您必須有事件類型資料欄，而且每個互動都必須有事件類型。對於所有自訂配方，建議使用 EVENT\_TYPE 資料欄，但為選用。如果您新增它，則每個事件都必須有 事件類型。如需更多資訊，請參閱[事件類型和事件值資料](#event-type-and-event-value-data)。

您可以根據您的使用案例和資料，自由新增其他自訂資料欄。選用中繼資料資料欄的數量上限為 5。這些欄可以包含空值/空值。我們建議這些資料欄至少完成 70%。

## 時間戳記資料
<a name="timestamp-data"></a>

 時間戳記資料必須是以秒為單位的 Unix epoch 時間格式。例如，2020 年 7 月 31 日以秒為單位的 Epoch 時間戳記為 1596238243。若要將日期轉換為 Unix epoch 時間戳記，請使用 [Epoch 轉換器 - Unix 時間戳記轉換器](https://www.epochconverter.com)。

Amazon Personalize 使用時間戳記資料來計算延遲，並識別任何以時間為基礎的模式。它有助於 Amazon Personalize 將建議與使用者不斷變化的偏好設定保持up-to-date狀態。

## 事件類型和事件值資料
<a name="event-type-and-event-value-data"></a>

項目互動資料集可以儲存每個互動的事件類型和事件值資料。只有自訂資源會使用事件值資料。

### 事件類型資料
<a name="item-interact-event-type"></a>

項目互動的事件類型提供有關其性質和重要性的內容。事件類型範例可能是*按一下*、*觀看*或*購買*。Amazon Personalize 使用事件類型資料，例如*點選*或*購買*資料，來識別使用者意圖和興趣。項目互動資料集中，不同事件類型與選用中繼資料資料欄總數結合的數目上限為 10。

對於網域建議者，您必須有事件類型資料欄，而且每個互動都必須有事件類型。對於所有自訂配方，建議使用 EVENT\_TYPE 資料欄，但為選用。如果您新增它，則每個事件都必須有 事件類型。

如果您建立自訂資源，您可以選擇用於依事件類型進行訓練的事件。如果您的資料集在 EVENT\_TYPE 欄中有多個事件類型，而且您在設定自訂解決方案時未提供事件類型，則無論類型為何，Amazon Personalize 都會使用所有項目互動資料進行同等權重的訓練。如需詳細資訊，請參閱[選擇用於訓練的項目互動資料](event-values-types.md)。

如果您有多個事件類型，並使用 User-Personalization-v2 配方或 Personalized-Ranking-v2 配方，當您設定自訂解決方案時，您可以為不同類型的指定不同的權重。例如，您可以設定解決方案，給予比點擊事件更多的購買事件權重。如需詳細資訊，請參閱[使用事件組態最佳化解決方案](optimizing-solution-events-config.md)。

下列使用案例有特定的事件類型需求：

VIDEO\_ON\_DEMAND 網域使用案例
+ 因為您觀看 X 至少需要 1000 個`Watch`事件。
+ 最熱門需要至少 1000 個`Watch`事件。

ECOMMERCE 網域使用案例
+ 大多數檢視至少需要 1000 個`View`事件。
+ 最佳賣家至少需要 1000 個`Purchase`事件。

#### 正面和負面事件類型
<a name="negative-event-types"></a>

 Amazon Personalize 假設任何互動都是正面的互動。與負面事件類型的互動，例如*不喜歡*，不一定會使項目不會出現在使用者未來的建議中。

以下是具有負面事件和使用者不感興趣影響建議的方法：
+  對於所有網域使用案例和[使用者個人化](native-recipe-new-item-USER_PERSONALIZATION.md)配方，Amazon Personalize 可以使用印模資料。當項目出現在印模資料中且使用者未選擇它時，該項目不太可能出現在建議中。如需詳細資訊，請參閱[印象資料](#interactions-impressions-data)。
+ 如果您使用自訂資源並匯入正面和負面事件類型，您只能針對正面事件類型進行訓練，然後篩選出使用者與負面互動的項目。如需詳細資訊，請參閱[選擇用於訓練的項目互動資料](event-values-types.md)及[篩選建議和使用者客群](filter.md)。

### 事件值資料 （自訂資源）
<a name="event-value-data"></a>

 事件值資料可能是使用者觀看的電影百分比，或 10 分中的評分。如果您建立自訂解決方案，則可以根據 EVENT\_TYPE 和 EVENT\_VALUE 欄中的資料，選擇用於訓練的記錄。透過網域建議程式，Amazon Personalize 不會使用事件值資料，而且您無法在訓練之前篩選事件。

若要根據類型和值選擇記錄，請記錄事件類型和事件的事件值資料。並非所有事件都必須有事件值。您為每個事件選擇的值取決於您要排除的資料，以及您要記錄的事件類型。例如，您可能符合使用者活動，例如使用者監看*監看事件*類型的視訊百分比。

 當您設定解決方案時，您可以將特定值設定為閾值，以排除訓練中的記錄。例如，如果具有 EVENT\_TYPE *監*看事件的 EVENT\_VALUE 資料是使用者監看的影片百分比，如果您將事件值閾值設定為 0.5，且要*監看*的事件類型，Amazon Personalize 只會使用 EVENT\_VALUE 大於或等於 0.5 的*監看*互動事件來訓練模型。

 如需詳細資訊，請參閱[選擇用於訓練的項目互動資料](event-values-types.md) 

## 內容中繼資料
<a name="interactions-contextual-metadata"></a>

 在某些配方和建議者使用案例中，Amazon Personalize 可以在識別基礎模式時使用內容中繼資料，這些模式會為您的使用者顯示最相關的項目。內容中繼資料是您在事件發生時在使用者環境中收集的互動資料，例如其位置或裝置類型。您也可以在取得使用者建議時指定使用者的內容。

包含內容中繼資料，為您的使用者提供更個人化的體驗，並減少新使用者的冷啟動階段。冷啟動階段是由於缺乏歷史使用者資料而導致建議不相關的情況。

 例如，如果您的項目互動 CSV 檔案包含含 `tablet`和 `phone`值的 DEVICE\_TYPE 欄，Amazon Personalize 可以了解客戶在不同裝置上以不同方式購物的方式。當您取得使用者的建議時，您可以指定其裝置，即使使用者沒有互動歷史記錄，建議也會更相關。

 以下顯示如何使用 DEVICE\_TYPE 資料欄將項目互動 CSV 檔案格式化為內容中繼資料。

```
ITEM_ID,USER_ID,TIMESTAMP,DEVICE_TYPE,EVENT_TYPE
shoe12345,12,1428624000,Tablet,CLICK
shoe12346,12,1420416000,Tablet,CLICK
shoe12347,12,1410652800,Tablet,BUY
shoe4444,13,1409961600,Phone,CLICK
shoe4445,13,1402876800,Phone,BUY
shoe4336,13,1402185600,Phone,CLICK
.....
```

對於網域資料集群組，下列推薦者使用案例可以使用內容中繼資料：
+ [為您推薦](ECOMMERCE-use-cases.md#recommended-for-you-use-case) (ECOMMERCE 網域）
+ [您的最佳選擇](VIDEO_ON_DEMAND-use-cases.md#top-picks-use-case) (VIDEO\_ON\_DEMAND 網域）

 對於自訂資源，使用內容中繼資料的配方包括下列項目：
+  [User-Personalization-v2](native-recipe-user-personalization-v2.md) 和 [使用者個人化](native-recipe-new-item-USER_PERSONALIZATION.md) 
+  [Personalized-Ranking-v2](native-recipe-personalized-ranking-v2.md) 和 [個人化排名](native-recipe-search.md)

如需有關在取得建議時包含內容的資訊，請參閱 [提高與內容中繼資料的建議相關性](contextual-metadata.md)。如需顯示如何使用內容中繼資料的端對端範例，請參閱下列 AWS Machine Learning部落格文章：[利用內容資訊提高 Amazon Personalize 建議的相關性](https://aws.amazon.com/blogs/machine-learning/increasing-the-relevance-of-your-amazon-personalize-recommendations-by-leveraging-contextual-information/)。

## 印象資料
<a name="interactions-impressions-data"></a>

印模是使用者與特定項目互動 （例如，點按或觀看） 時可見的項目清單。如果您使用提供個人化或[使用者個人化](native-recipe-new-item-USER_PERSONALIZATION.md)配方的網域使用案例，Amazon Personalize 可以使用曝光資料來引導探勘。

 透過探勘，建議包括一些通常較不建議使用者使用的項目或動作，例如新項目或動作、很少互動的項目或動作，或根據使用者先前的行為，與使用者較不相關的項目或動作。項目在印模資料中發生的頻率越高，Amazon Personalize 在探勘中包含項目的可能性就越低。

 當您建立推薦者或解決方案時，Amazon Personalize 一律會將曝光資料排除在訓練之外。這是因為 Amazon Personalize 不會使用曝光資料來訓練您的模型。反之，它會在您取得建議時用它來引導使用者探勘。

 印模值最多可有 1000 個字元 （包括垂直長條字元）。對於網域資料集群組，以下推薦者使用案例可以使用印模資料：
+ [為您推薦](ECOMMERCE-use-cases.md#recommended-for-you-use-case) (ECOMMERCE 網域）
+ [您的最佳選擇](VIDEO_ON_DEMAND-use-cases.md#top-picks-use-case) (VIDEO\_ON\_DEMAND 網域）

如需探索的詳細資訊，請參閱 [探勘](use-case-recipe-features.md#about-exploration)。Amazon Personalize 可以建立兩種類型的曝光模型： [隱含印象](#implicit-impressions-info)和 [明確印模](#explicit-impressions-info)。

### 明確印模
<a name="explicit-impressions-info"></a>

*明確印模*是您手動記錄並傳送至 Amazon Personalize 的印模。使用明確印模來操作 Amazon Personalize 的結果。項目的順序沒有影響。

 例如，您可能有一個提供鞋子建議的購物應用程式。如果您只建議目前有庫存的鞋子，您可以使用明確曝光來指定這些項目。您使用明確印模的建議工作流程可能如下所示：

1. 您可以使用 Amazon Personalize [GetRecommendations](API_RS_GetRecommendations.md) API 為您的其中一個使用者請求建議。

1. Amazon Personalize 會使用模型 （解決方案版本） 為使用者產生建議，並在 API 回應中傳回建議。

1. 您只向使用者顯示庫存中建議的鞋子。

1. 對於即時增量資料匯入，當您的使用者與一雙鞋子互動 （例如，按一下） 時，您可以在 API 的呼叫中記錄選擇，[PutEvents](API_UBS_PutEvents.md)並在 `impression` 參數中列出有庫存的建議項目。如需程式碼範例，請參閱 [使用印模資料記錄項目互動事件](putevents-including-impressions-data.md)。

   若要在歷史項目互動資料中匯入印模，您可以在 csv 檔案中列出明確的印模，並以 '\|' 字元分隔每個項目。垂直長條字元會計入 1000 個字元的限制。如需範例，請參閱[格式化明確印模](#data-prep-including-explicit-impressions)。

1. Amazon Personalize 使用印模資料來引導探勘，其中未來的建議包括較少互動資料或相關性的新鞋子。

#### 格式化明確印模
<a name="data-prep-including-explicit-impressions"></a>

若要在 CSV 檔案中包含明確印模，請新增 IMPRESSION 欄。對於每個項目互動，新增以垂直長條 '\|'、字元分隔的 itemIds 清單。垂直長條字元會計入曝光資料的 1000 個字元限制。如果您在 [PutEvents](API_UBS_PutEvents.md) 操作中包含明確印模，您可以在字串陣列中指定項目。

以下是 CSV 檔案的簡短摘錄，其中包含 `IMPRESSION`欄中的明確印模。


| EVENT\_TYPE | 印象 | ITEM\_ID | TIMESTAMP | USER\_ID | 
| --- | --- | --- | --- | --- | 
| 按一下 | 73\|70\|17\|95\|96 | 73 | 1586731606 | USER\_1 | 
| 按一下 | 35\|82\|78\|57\|20\|63\|1\|90\|76\|75\|49\|71\|26\|24\|25\|6 | 35 | 1586735164 | USER\_2 | 
| ... | ... | ... | ... | ... | 

應用程式顯示使用者`USER_1`項目 `73`、`70`、`95`、 和 `17`，`96`使用者最終選擇項目 `73`。當您根據此資料建立新的解決方案版本時，使用者 `96`會較不常建議項目 `95`、、 `70` `17`和 `USER_1`。

### 隱含印象
<a name="implicit-impressions-info"></a>

*隱含印象*是您向使用者顯示從 Amazon Personalize 擷取的建議。您的 CSV 檔案不需要包含 IMPRESSION 或 RECOMMENDATION\_ID 資料欄，即可使用隱含印模。反之，您可以在[PutEvents](API_UBS_PutEvents.md)請求中包含 `RecommendationId`（由 [GetRecommendations](API_RS_GetRecommendations.md)和 [GetPersonalizedRanking](API_RS_GetPersonalizedRanking.md)操作傳回）。Amazon Personalize 會根據您的建議資料衍生隱含印模。

 例如，您可能有一個應用程式，提供串流影片的建議。您使用隱含印模的建議工作流程可能如下所示：

1. 您可以使用 Amazon Personalize [GetRecommendations](API_RS_GetRecommendations.md) API 操作請求其中一個使用者的影片建議。

1. Amazon Personalize 會使用模型 （解決方案版本） 為使用者產生建議，並在 API 回應`recommendationId`中使用 傳回建議。

1. 您可以在應用程式中向使用者顯示影片建議。

1. 當您的使用者與視訊互動 （例如按一下） 時，請在 API 的呼叫中記錄選擇，[PutEvents](API_UBS_PutEvents.md)並將 包含`recommendationId`為參數。如需程式碼範例，請參閱 [使用印模資料記錄項目互動事件](putevents-including-impressions-data.md)。

1. Amazon Personalize 使用 從先前的影片建議中`recommendationId`衍生印模資料，然後使用印模資料來引導探勘，其中未來的建議包括較少互動資料或相關性的新影片。

   如需使用隱含印模資料記錄事件的詳細資訊，請參閱 [使用印模資料記錄項目互動事件](putevents-including-impressions-data.md)。

## 互動資料範例
<a name="interactions-data-schema-example"></a>

下列互動資料代表來自串流影片網站的歷史使用者活動。您可以使用資料來訓練模型，根據使用者的互動資料提供電影建議。請注意，EVENT\_VALUE 的某些值為 null。

```
USER_ID,ITEM_ID,EVENT_TYPE,EVENT_VALUE,TIMESTAMP
196,242,watch,.50,881250949
186,302,watch,.75,891717742
22,377,click,,878887116
244,51,click,,880606923
166,346,watch,.50,886397596
298,474,watch,.25,884182806
115,265,click,,881171488
253,465,watch,.50,891628467
305,451,watch,.75,886324817
```

Amazon Personalize 需要 `USER_ID`、 `ITEM_ID`和 `TIMESTAMP`欄。 `USER_ID` 是您應用程式使用者的識別符。 `ITEM_ID` 是電影的識別符。 `EVENT_TYPE`和 `EVENT_VALUE`是使用者互動的識別符。在範例資料中，事件是 `watch`和 `click`事件，而值是使用者觀看的影片百分比。`TIMESTAMP` 代表電影購買發生的 Unix epoch 時間。

完成資料準備後，您就可以建立結構描述 JSON 檔案。此檔案會告知 Amazon Personalize 您資料的結構。如需詳細資訊，請參閱[為 Amazon Personalize 結構描述建立結構描述 JSON 檔案](how-it-works-dataset-schema.md)。這是範例資料的結構描述 JSON 檔案的外觀。

```
{
  "type": "record",
  "name": "Interactions",
  "namespace": "com.amazonaws.personalize.schema",
  "fields": [
    {
      "name": "USER_ID",
      "type": "string"
    },
    {
      "name": "ITEM_ID",
      "type": "string"
    },
    { "name": "EVENT_TYPE",
      "type": "string"
    },
    {
      "name": "EVENT_VALUE",
      "type": "float"
    },
    {
      "name": "TIMESTAMP",
      "type": "long"
    }
  ],
  "version": "1.0"
}
```