

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

# 建立解決方案
<a name="create-solution"></a>

您可以使用 Amazon Personalize 主控台、 AWS Command Line Interface (AWS CLI) 或 AWS SDKs建立自訂解決方案。以下包含使用 Amazon Personalize 主控台建立解決方案的詳細步驟，以及示範如何僅以必要欄位建立解決方案的程式碼範例。

**Topics**
+ [建立解決方案 （主控台）](#configure-solution-console)
+ [建立解決方案 (AWS CLI)](#configure-solution-cli)
+ [建立解決方案AWS SDKs)](#configure-solution-sdk)

## 建立解決方案 （主控台）
<a name="configure-solution-console"></a>

**重要**  
根據預設，所有新解決方案都會使用自動訓練。透過自動訓練，您會在解決方案處於作用中狀態時產生訓練成本。為了避免不必要的成本，您可以在完成後[更新解決方案](updating-solution.md)以關閉自動訓練。如需訓練成本的相關資訊，請參閱 [Amazon Personalize 定價](https://aws.amazon.com/personalize/pricing/)。

 若要在主控台中建立解決方案，請選擇資料集群組，然後指定解決方案名稱、配方和選用的訓練組態。

**設定解決方案 （主控台）**

1. 在 [https://console.aws.amazon.com/personalize/home](https://console.aws.amazon.com/personalize/home)：// 開啟 Amazon Personalize 主控台，並登入您的帳戶。

1. 在**資料集群組**頁面上，選擇您的資料集群組。

1. 在**概觀**頁面上，針對**步驟 3**，執行下列其中一項操作：
   + 如果您建立了網域資料集群組，請選擇**使用自訂資源**，然後選擇**建立解決方案**。
   + 如果您建立了自訂資料集群組，請選擇**建立解決方案**。

1. 對於 **Solution name (解決方案名稱)**，為您的解決方案指定名稱。

1. 針對**解決方案類型**，選擇您要建立的解決方案類型。您選擇的類型會決定可用的配方。
   + 選擇**項目建議**，為您的使用者取得項目建議。例如，個人化電影建議。
   + 選擇**動作建議**，為您的使用者取得動作建議。例如，為使用者產生下一個最佳動作，例如下載您的應用程式。
   + 選擇**使用者分割**，根據您的項目資料取得使用者區段 （使用者群組）。

1. 針對**配方**，選擇配方 （請參閱 [選擇配方](working-with-predefined-recipes.md))。

1. 對於**標籤**，選擇性地新增任何標籤。如需標記 Amazon Personalize 資源的詳細資訊，請參閱 [標記 Amazon Personalize 資源](tagging-resources.md)。

1. 選擇**下一步**。

1. 在**訓練組態**頁面上，自訂解決方案以符合您的業務需求。
   + 在**自動訓練**中，選擇解決方案是否使用自動訓練。如果您使用自動訓練，您可以變更 `Automatic training frequency`。預設訓練頻率為每 7 天一次。

     建議使用自動訓練。它可讓您更輕鬆地維持建議相關性。您的訓練頻率取決於您的業務需求、您使用的配方，以及您匯入資料的頻率。如需詳細資訊，請參閱[設定自動訓練](solution-config-auto-training.md)。如需維護相關性的資訊，請參閱 [維持建議相關性](maintaining-relevance.md)。
   + 在**超參數組態**中，根據您的配方和業務需求設定任何超參數選項。不同的配方使用不同的超參數。如需可用的超參數，請參閱 中的個別配方[選擇配方](working-with-predefined-recipes.md)。
   + 在**訓練資料欄中**，如果您的配方產生項目建議或使用者區段，可選擇選擇 Amazon Personalize 在建立解決方案版本時考慮的資料欄。如需詳細資訊，請參閱[設定訓練時使用的資料欄](custom-config-columns.md)。
   + 在**事件組態**中，如果您的項目互動資料集具有 EVENT\$1TYPE 或 EVENT\$1TYPE 和 EVENT\$1VALUE 資料欄，可選擇使用**事件類型**和**事件值閾值**欄位來選擇 Amazon Personalize 在訓練模型時所使用的項目互動資料。如需詳細資訊，請參閱[選擇用於訓練的項目互動資料](event-values-types.md)。

      如果您有多個事件類型，並使用 User-Personalization-v2 配方或 Personalized-Ranking-v2 配方，您也可以為不同類型的指定不同的權重。例如，您可以設定解決方案，給予比點擊事件更多的購買事件權重。如需詳細資訊，請參閱[使用事件組態最佳化解決方案](optimizing-solution-events-config.md)。
   + 如果您使用 [使用者個人化配方](native-recipe-new-item-USER_PERSONALIZATION.md)或 [個人化執行配方](native-recipe-search.md)配方，除了相關性之外，還可以選擇性地指定**目標**，並選擇**目標敏感度**來最佳化目標的解決方案。目標敏感度設定 Amazon Personalize 如何根據目標與互動資料的相關性來平衡建議項目。如需詳細資訊，請參閱[針對其他目標最佳化解決方案](optimizing-solution-for-objective.md)。

1. 選擇**下一步**並檢閱解決方案詳細資訊。您無法在建立解決方案之後變更其組態。

1. 選擇 **Create solution (建立解決方案)**。建立解決方案後，Amazon Personalize 會在一小時內開始建立您的第一個解決方案版本。訓練開始時，您可以在 解決方案的詳細資訊頁面上**的解決方案版本**區段中監控它。自動建立的解決方案版本具有 AUTOMATIC **的訓練類型**。

    當解決方案版本為 ACTIVE 時，您就可以使用它來取得建議。如何使用作用中解決方案版本取決於如何取得建議：
   +  如需即時建議，您可以使用 Amazon Personalize 行銷活動部署 ACTIVE 解決方案版本。您可以使用行銷活動來取得使用者的建議。請參閱 [使用行銷活動部署 Amazon Personalize 解決方案版本建立行銷活動](campaigns.md)。
   + 對於批次建議，您可以在建立批次推論任務或批次區段任務時指定 ACTIVE 解決方案版本。請參閱 [取得批次項目建議](getting-batch-recommendations.md) 或 [取得批次使用者區段](getting-user-segments.md)。

## 建立解決方案 (AWS CLI)
<a name="configure-solution-cli"></a>

**重要**  
根據預設，所有新解決方案都會使用自動訓練。透過自動訓練，您會在解決方案處於作用中狀態時產生訓練成本。為了避免不必要的成本，您可以在完成後[更新解決方案](updating-solution.md)以關閉自動訓練。如需訓練成本的資訊，請參閱 [Amazon Personalize 定價](https://aws.amazon.com/personalize/pricing/)。

若要使用 建立解決方案 AWS CLI，請使用 `create-solution`命令。此命令使用 [CreateSolution](API_CreateSolution.md) API 操作。下列程式碼說明如何建立使用自動訓練的解決方案。它會每五天自動建立新的解決方案版本。

若要使用程式碼，請將其更新為解決方案的名稱、指定資料集群組的 Amazon Resource Name (ARN)、選擇性地變更訓練頻率，以及指定要使用的配方 ARN。如需配方的詳細資訊，請參閱[選擇配方](working-with-predefined-recipes.md)。

```
aws personalize create-solution \
--name solution name \
--dataset-group-arn dataset group ARN \
--recipe-arn recipe ARN \
--perform-auto-training \
--solution-config "{\"autoTrainingConfig\": {\"schedulingExpression\": \"rate(5 days)\"}}"
```
+ 我們建議您使用自動訓練。它可讓您更輕鬆地維護和改善建議相關性。根據預設，所有新解決方案都會使用自動訓練。預設訓練頻率為每 7 天一次。您的訓練頻率取決於您的業務需求、您使用的配方，以及您匯入資料的頻率。如需詳細資訊，請參閱[設定自動訓練](solution-config-auto-training.md)。
+ 根據您的配方，您可以修改程式碼來設定配方特定的屬性和超參數 （請參閱 [超參數和 HPO](customizing-solution-config-hpo.md))、設定用於訓練的資料欄 （請參閱 [設定訓練時使用的資料欄 (AWS CLI)](custom-config-columns.md#custom-config-columns-cli))，或篩選用於訓練的項目互動資料 （請參閱 [選擇用於訓練的項目互動資料](event-values-types.md))。
+ 如果您使用 [使用者個人化配方](native-recipe-new-item-USER_PERSONALIZATION.md)或 [個人化執行配方](native-recipe-search.md)配方，除了相關性之外，您還可以最佳化目標的解決方案。如需詳細資訊，請參閱[針對其他目標最佳化解決方案](optimizing-solution-for-objective.md)。

建立解決方案之後，請記錄解決方案 ARN 以供日後使用。透過自動訓練，解決方案版本建立會在解決方案為 ACTIVE 後的一小時內開始。如果您在一小時內手動建立解決方案版本，解決方案會略過第一個自動訓練。訓練開始後，您可以使用 [ListSolutionVersions](https://docs.aws.amazon.com/personalize/latest/dg/API_ListSolutionVersions.html) API 操作取得解決方案版本的 Amazon Resource Name (ARN)。若要取得其狀態，請使用 [DescribeSolutionVersion](https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeSolutionVersion.html) API 操作。

 當解決方案版本為 ACTIVE 時，您就可以使用它來取得建議。如何使用作用中解決方案版本取決於如何取得建議：
+  如需即時建議，您可以使用 Amazon Personalize 行銷活動部署 ACTIVE 解決方案版本。您可以使用行銷活動來取得使用者的建議。請參閱 [使用行銷活動部署 Amazon Personalize 解決方案版本建立行銷活動](campaigns.md)。
+ 對於批次建議，您可以在建立批次推論任務或批次區段任務時指定 ACTIVE 解決方案版本。請參閱 [取得批次項目建議](getting-batch-recommendations.md) 或 [取得批次使用者區段](getting-user-segments.md)。

## 建立解決方案AWS SDKs)
<a name="configure-solution-sdk"></a>

**重要**  
根據預設，所有新解決方案都會使用自動訓練。透過自動訓練，您會在解決方案處於作用中狀態時產生訓練成本。為了避免不必要的成本，您可以在完成後[更新解決方案](updating-solution.md)以關閉自動訓練。如需訓練成本的資訊，請參閱 [Amazon Personalize 定價](https://aws.amazon.com/personalize/pricing/)。

若要使用 AWS SDKs建立解決方案，請使用 [CreateSolution](API_CreateSolution.md) API 操作。下列程式碼說明如何建立使用自動訓練的解決方案。它會每五天自動建立新的解決方案版本。

若要使用程式碼，請將其更新為解決方案的名稱、指定資料集群組的 Amazon Resource Name (ARN)、選擇性變更訓練頻率，以及指定您要使用的配方 ARN。如需配方的詳細資訊，請參閱[選擇配方](working-with-predefined-recipes.md)。

------
#### [ SDK for Python (Boto3) ]

```
import boto3

personalize = boto3.client('personalize')

create_solution_response = personalize.create_solution(
  name = 'solution name',
  recipeArn = 'recipe ARN',
  datasetGroupArn = 'dataset group ARN',
  performAutoTraining = True,
  solutionConfig = {
    "autoTrainingConfig": {
      "schedulingExpression": "rate(5 days)"
    }
  }
)
solution_arn = create_solution_response['solutionArn']
print('solution_arn: ', solution_arn)
```

------
#### [ SDK for JavaScript v3 ]

```
import {
  CreateSolutionCommand,
  PersonalizeClient,
} from "@aws-sdk/client-personalize";

// create client
const personalizeClient = new PersonalizeClient({ region: "REGION" });

// set the solution parameters
export const solutionParam = {
  datasetGroupArn: "DATASET_GROUP_ARN" /* required */,
  recipeArn: "RECIPE_ARN" /* required */,
  name: "SOLUTION_NAME" /* required */,
  performAutoTraining: true /* optional, default is true */,
  solutionConfig: {
    autoTrainingConfig: {
      schedulingExpression:
        "rate(5 days)" /* optional, default is every 7 days */,
    },
  },
};

export const run = async () => {
  try {
    const response = await personalizeClient.send(
      new CreateSolutionCommand(solutionParam)
    );
    console.log("Success", response);
    return response; // For unit tests.
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

------
+ 我們建議您使用自動訓練。它可讓您更輕鬆地維護和改善建議相關性。根據預設，所有新解決方案都會使用自動訓練。預設訓練頻率為每 7 天一次。您的訓練頻率取決於您的業務需求、您使用的配方，以及您匯入資料的頻率。如需詳細資訊，請參閱[設定自動訓練](solution-config-auto-training.md)。
+ 根據您的配方，您可以修改程式碼來設定配方特定的屬性和超參數 （請參閱 [超參數和 HPO](customizing-solution-config-hpo.md))、設定用於訓練的資料欄 （請參閱 [設定訓練時使用的資料欄AWS SDKs)](custom-config-columns.md#custom-configure-columns-sdk))，或篩選用於訓練的項目互動資料 （請參閱 [選擇用於訓練的項目互動資料](event-values-types.md))。
+ 如果您使用 [使用者個人化配方](native-recipe-new-item-USER_PERSONALIZATION.md)或 [個人化執行配方](native-recipe-search.md)配方，除了相關性之外，您還可以最佳化目標的解決方案。如需詳細資訊，請參閱[針對其他目標最佳化解決方案](optimizing-solution-for-objective.md)。

建立解決方案之後，請記錄解決方案 ARN 以供日後使用。透過自動訓練，解決方案版本建立會在解決方案為 ACTIVE 後的一小時內開始。如果您在一小時內手動建立解決方案版本，解決方案會略過第一個自動訓練。訓練開始後，您可以使用 [ListSolutionVersions](https://docs.aws.amazon.com/personalize/latest/dg/API_ListSolutionVersions.html) API 操作取得解決方案版本的 Amazon Resource Name (ARN)。若要取得其狀態，請使用 [DescribeSolutionVersion](https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeSolutionVersion.html) API 操作。

您可以使用下列 Python 程式碼等待自動訓練開始。`wait_for_training_to_start` 方法會傳回第一個解決方案版本的 ARN。

```
import time
import boto3


def wait_for_training_to_start(new_solution_arn):
    max_time = time.time() + 3 * 60 * 60    # 3 hours
    while time.time() < max_time:
        list_solution_versions_response = personalize.list_solution_versions(
            solutionArn=new_solution_arn
        )
        solution_versions = list_solution_versions_response.get('solutionVersions', [])
        if solution_versions:
            new_solution_version_arn = solution_versions[0]['solutionVersionArn']
            print(f"Solution version ARN: {new_solution_version_arn}")
            return new_solution_version_arn
        else:
            print(f"Training hasn't started yet. Training will start within the next hour.")
            time.sleep(60)


personalize = boto3.client('personalize')

solution_arn = "solution_arn"
solution_version_arn = wait_for_training_to_start(solution_arn)
```

 當解決方案版本為 ACTIVE 時，您就可以使用它來取得建議。如何使用作用中解決方案版本取決於如何取得建議：
+  如需即時建議，您可以使用 Amazon Personalize 行銷活動部署 ACTIVE 解決方案版本。您可以使用行銷活動來取得使用者的建議。請參閱 [使用行銷活動部署 Amazon Personalize 解決方案版本建立行銷活動](campaigns.md)。
+ 對於批次建議，您可以在建立批次推論任務或批次區段任務時指定 ACTIVE 解決方案版本。請參閱 [取得批次項目建議](getting-batch-recommendations.md) 或 [取得批次使用者區段](getting-user-segments.md)。