開始使用 (AWS CLI) - Amazon Personalize

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

開始使用 (AWS CLI)

在本練習中,您會使用 AWS Command Line Interface (AWS CLI) 探索 Amazon Personalize。您可以建立一個行銷活動,該活動會傳回針對特定使用者 ID 的電影建議。

開始本練習之前,請執行以下動作:

完成入門練習後,若要避免產生不必要的費用,請刪除您建立的資源。如需詳細資訊,請參閱刪除 Amazon Personalize 化資源的要求

注意

本練習中的 AWS CLI 指令已在 Linux 上進行了測試。若要取得有關在 Windows 上使用指 AWS CLI 令的資訊,請參閱《使用指南》 AWS Command Line Interface中的〈指定參數值。AWS Command Line Interface

依照步驟建立資料集群組、將資料集新增至群組,然後使用電影評等資料填入資料集。

  1. 執行以下命令來建立資料集群組。您可以傳遞AWS Key Management Service金鑰ARN和具有該金鑰存取權限ARN的IAM角色作為輸入參數,藉此加密資料集群組。如需有關的更多資訊API,請參閱CreateDatasetGroup

    aws personalize create-dataset-group --name MovieRatingDatasetGroup --kms-key-arn arn:aws:kms:us-west-2:01234567890:key/1682a1e7-a94d-4d92-bbdf-837d3b62315e --role-arn arn:aws:iam::01234567890:KMS-key-access

    此時會顯示ARN資料集群組,例如:

    { "datasetGroupArn": "arn:aws:personalize:us-west-2:acct-id:dataset-group/MovieRatingDatasetGroup" }

    使用指describe-dataset-group令顯示您建立的資料集群組,並指定傳回的資料集群組ARN。

    aws personalize describe-dataset-group \ --dataset-group-arn arn:aws:personalize:us-west-2:acct-id:dataset-group/MovieRatingDatasetGroup

    這時會顯示資料集群組及其屬性,例如:

    { "datasetGroup": { "name": "MovieRatingDatasetGroup", "datasetGroupArn": "arn:aws:personalize:us-west-2:acct-id:dataset-group/MovieRatingDatasetGroup", "status": "ACTIVE", "creationDateTime": 1542392161.262, "lastUpdatedDateTime": 1542396513.377 } }
    注意

    請等待資料集群組的status顯示,ACTIVE然後再在群組中建立資料集。這個操作通常很快。

    如果您不記得資料集群組ARN,請使用list-dataset-groups指令來顯示您建立的所有資料集群組及其群組ARNs。

    aws personalize list-dataset-groups
    注意

    describe-object和命list-objects令可用於大多數 Amazon Personalize 化對象。這些命令沒有顯示在本練習的剩餘部分中,但它們是可用的。

  2. 通過將以下代碼保存到名為的文件中創建JSON格式的模式文件MovieRatingSchema.json。結構描述符合您之前新增到 ratings.csv 的標頭。結構描述名稱是Interactions,與 Amazon Personalize 識別的其中一種資料集類型相符。如需詳細資訊,請參閱為 Amazon Personalize 結構描述建立結構描述JSON檔案

    { "type": "record", "name": "Interactions", "namespace": "com.amazonaws.personalize.schema", "fields": [ { "name": "USER_ID", "type": "string" }, { "name": "ITEM_ID", "type": "string" }, { "name": "TIMESTAMP", "type": "long" } ], "version": "1.0" }
  3. 執行以下命令來建立結構描述。指定您在上一個步驟中儲存的檔案。此範例會顯示屬於目前資料夾的檔案。如需有關的更多資訊API,請參閱CreateSchema

    aws personalize create-schema \ --name MovieRatingSchema \ --schema file://MovieRatingSchema.json

    將顯示模式 Amazon 資源名稱 (ARN),例如:

    { "schemaArn": "arn:aws:personalize:us-west-2:acct-id:schema/MovieRatingSchema" }
  4. 執行以下命令來建立空的資料集。提供在先前步驟中傳回ARN的資料集群組ARN和結構描述。dataset-type 必須符合前一個步驟中的結構描述 name。如需有關的更多資訊API,請參閱CreateDataset

    aws personalize create-dataset \ --name MovieRatingDataset \ --dataset-group-arn arn:aws:personalize:us-west-2:acct-id:dataset-group/MovieRatingDatasetGroup \ --dataset-type Interactions \ --schema-arn arn:aws:personalize:us-west-2:acct-id:schema/MovieRatingSchema

    此時會ARN顯示資料集,例如:

    { "datasetArn": "arn:aws:personalize:us-west-2:acct-id:dataset/MovieRatingDatasetGroup/INTERACTIONS" }
  5. 將訓練資料新增至資料集。

    1. 執行以下命令來建立資料集匯入任務。提供在先前步驟中傳回的資料集ARN和 Amazon S3 儲存貯體名稱。提供您在中創建ARN的 AWS Identity and Access Management (IAM)角色為 Amazon Personalize 化創建IAM角色。如需有關的更多資訊API,請參閱CreateDatasetImportJob

      aws personalize create-dataset-import-job \ --job-name MovieRatingImportJob \ --dataset-arn arn:aws:personalize:us-west-2:acct-id:dataset/MovieRatingDatasetGroup/INTERACTIONS \ --data-source dataLocation=s3://amzn-s3-demo-bucket/ratings.csv \ --role-arn roleArn

      ARN此時會顯示資料集匯入工作,例如:

      { "datasetImportJobArn": "arn:aws:personalize:us-west-2:acct-id:dataset-import-job/MovieRatingImportJob" }
    2. 使用 describe-dataset-import-job 命令來檢查狀態。提供在上一個步驟中傳回ARN的資料集匯入工作。如需有關的更多資訊API,請參閱DescribeDatasetImportJob

      aws personalize describe-dataset-import-job \ --dataset-import-job-arn arn:aws:personalize:us-west-2:acct-id:dataset-import-job/MovieRatingImportJob

      這時會顯示資料集匯入任務的屬性,包括其狀態。最初,status顯示為 CREATEPENDING,例如:

      { "datasetImportJob": { "jobName": "MovieRatingImportJob", "datasetImportJobArn": "arn:aws:personalize:us-west-2:acct-id:dataset-import-job/MovieRatingImportJob", "datasetArn": "arn:aws:personalize:us-west-2:acct-id:dataset/MovieRatingDatasetGroup/INTERACTIONS", "dataSource": { "dataLocation": "s3://amzn-s3-demo-bucket/ratings.csv" }, "roleArn": "role-arn", "status": "CREATE PENDING", "creationDateTime": 1542392161.837, "lastUpdatedDateTime": 1542393013.377 } }

      當狀態顯示為時,資料集匯入已完成ACTIVE。然後,您就可以使用指定的資料集來訓練模型。

      注意

      匯入需要一些時間。請等到資料集匯入完成,再使用該資料集來訓練模型。

若要訓練模型,您可以建立使用CreateSolution操作訓練模型的組態,並保持開啟自動訓練。解決方案會在一小時內自動開始訓練第一個解決方案。

您可以使用方案和訓練資料來訓練模型。Amazon Personalize 化提供了一組預定義的食譜。如需詳細資訊,請參閱選擇一個食譜。在本練習中,您會使用使用者個人化 V2 方法。

  1. 執行下列命令,以建立用來訓練模型的組態。此指令會建立使用自動訓練的解決方案。它會每七天自動建立一個新的解決方案版本 (預設值)。

    aws personalize create-solution \ --name MovieSolution \ --dataset-group-arn arn:aws:personalize:us-west-2:acct-id:dataset-group/MovieRatingDatasetGroup \ --recipe-arn arn:aws:personalize:::recipe/aws-user-personalization-v2 \ --perform-auto-training \ --solution-config "{\"autoTrainingConfig\": {\"schedulingExpression\": \"rate(7 days)\"}}"

    此時會顯ARN示解決方案,例如:

    { "solutionArn": "arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution" }
  2. 使用describe-solution指令檢查建立狀態。提供在上一個步驟中傳回的解決方案ARN。如需有關的更多資訊API,請參閱DescribeSolution

    aws personalize describe-solution \ --solution-arn arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution

    這時會顯示解決方案的屬性和建立 status。例如:

    { "solution": { "name": "MovieSolution", "solutionArn": "arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution", "performHPO": false, "performAutoML": false, "recipeArn": "arn:aws:personalize:::recipe/aws-user-personalization-v2", "datasetGroupArn": "arn:aws:personalize:us-west-2:acct-id:dataset-group/MovieRatingDatasetGroup", "solutionConfig": { "algorithmHyperParameters": { "apply_recency_bias": "true" }, "featureTransformationParameters": {}, "autoTrainingConfig": { "schedulingExpression": "rate(7 days)" } }, "status": "ACTIVE", "creationDateTime": "2021-05-12T16:27:59.819000-07:00", "lastUpdatedDateTime": "2021-05-12T16:27:59.819000-07:00" } }
  3. 透過自動訓練,解決方案版本訓練會在解決方案完成後開始ACTIVE。訓練開始後,您可以使用下列ListSolutionVersions命令取得解決方案版本的 Amazon 資源名稱 (ARN):

    aws personalize list-solution-versions --solution-arn arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution
  4. 使用describe-solution-version指令檢查解決方案版本的訓練狀態。提供在上一個步驟中傳回的解決方案版本ARN。如需有關的更多資訊API,請參閱DescribeSolutionVersion

    aws personalize describe-solution-version \ --solution-version-arn arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution/version-id

    這時會顯示解決方案版本的屬性和訓練 status。最初,狀態會顯示為 CREATEPENDING,例如:

    { "solutionVersion": { "solutionVersionArn": "arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution/<version-id>", ..., "status": "CREATE PENDING" } }
  5. 當解決方案版本status為時ACTIVE,訓練即完成。

    現在您可以檢閱訓練指標,並使用解決方案版本建立行銷活動。

    注意

    訓練需要一些時間。請等到訓練完成 (解決方案版本的訓練狀態顯示為ACTIVE),然後才能在促銷活動中使用此版本的解決方案。

  6. 您可以檢閱其指標來驗證解決方案版本的效能。執行以下命令來取得解決方案版本的指標。提供先前傳回的解決方案版本ARN。如需有關的更多資訊API,請參閱GetSolutionMetrics

    aws personalize get-solution-metrics \ --solution-version-arn arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution/version-id

    這時會顯示範例回應:

    { "solutionVersionArn": "arn:aws:personalize:us-west-2:acct-id:solution/www-solution/<version-id>", "metrics": { "coverage": 0.0485, "mean_reciprocal_rank_at_25": 0.0381, "normalized_discounted_cumulative_gain_at_10": 0.0363, "normalized_discounted_cumulative_gain_at_25": 0.0984, "normalized_discounted_cumulative_gain_at_5": 0.0175, "precision_at_10": 0.0107, "precision_at_25": 0.0207, "precision_at_5": 0.0107 } }

您必須先部署解決方案版本,才能取得建議。部署解決方案也稱為建立行銷活動。建立行銷活動後,您的用戶端應用程式可以使用 GetRecommendationsAPI.

  1. 執行以下命令來建立行銷活動。提供在上一個步驟中傳回的解決方案版本ARN。如需有關的更多資訊API,請參閱CreateCampaign

    aws personalize create-campaign \ --name MovieRecommendationCampaign \ --solution-version-arn arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution/version-id \ --min-provisioned-tps 1

    這時會顯示範例回應:

    { "campaignArn": "arn:aws:personalize:us-west-2:acct-id:campaign/MovieRecommendationCampaign" }
  2. 執行下列命令來檢查部署狀態。提供在上一個步驟中傳回的促銷活動ARN。如需有關的更多資訊API,請參閱DescribeCampaign

    aws personalize describe-campaign \ --campaign-arn arn:aws:personalize:us-west-2:acct-id:campaign/MovieRecommendationCampaign

    這時會顯示範例回應:

    { "campaign": { "name": "MovieRecommendationCampaign", "campaignArn": "arn:aws:personalize:us-west-2:acct-id:campaign/MovieRecommendationCampaign", "solutionVersionArn": "arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution/<version-id>", "minProvisionedTPS": "1", "creationDateTime": 1543864775.923, "lastUpdatedDateTime": 1543864791.923, "status": "CREATE IN_PROGRESS" } }
    注意

    等到status節目,ACTIVE然後再從廣告系列中獲得建議。

執行下列 get-recommendations 命令來取得建議。提供在上一個步驟中傳回的促銷活動ARN。您可以在請求中,指定來自電影評等資料集的使用者 ID。如需有關的更多資訊API,請參閱GetRecommendations

注意

並非所有食譜都支援 GetRecommendationsAPI. 如需詳細資訊,請參閱選擇一個食譜

您在此步驟中呼叫的 AWS CLI 指令與先前步驟不同。personalize-runtime

aws personalize-runtime get-recommendations \ --campaign-arn arn:aws:personalize:us-west-2:acct-id:campaign/MovieRecommendationCampaign \ --user-id 123

作為回應,促銷活動會傳回使用者可能會喜歡的項目推薦 (影片IDs) 清單。清單是依使用者相關性的遞減順序排序。

{ "itemList": [ { "itemId": "14" }, { "itemId": "15" }, { "itemId": "275" }, { "itemId": "283" }, { "itemId": "273" }, ... ] }