本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
開始使用 (AWS CLI)
在本練習中,您會使用 AWS Command Line Interface (AWS CLI) 探索 Amazon Personalize。您可以建立一個行銷活動,該活動會傳回針對特定使用者 ID 的電影建議。
開始本練習之前,請執行以下動作:
-
檢閱入門入門先決條件。
-
按 AWS CLI照中的指定設置正在設定 AWS CLI。
完成入門練習後,若要避免產生不必要的費用,請刪除您建立的資源。如需詳細資訊,請參閱刪除 Amazon Personalize 化資源的要求。
注意
本練習中的 AWS CLI 指令已在 Linux 上進行了測試。若要取得有關在 Windows 上使用指 AWS CLI 令的資訊,請參閱《使用指南》 AWS Command Line Interface中的〈指定參數值〉。AWS Command Line Interface
依照步驟建立資料集群組、將資料集新增至群組,然後使用電影評等資料填入資料集。
-
執行以下命令來建立資料集群組。您可以傳遞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-arnarn: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 化對象。這些命令沒有顯示在本練習的剩餘部分中,但它們是可用的。 -
通過將以下代碼保存到名為的文件中創建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" }
-
執行以下命令來建立結構描述。指定您在上一個步驟中儲存的檔案。此範例會顯示屬於目前資料夾的檔案。如需有關的更多資訊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" }
-
執行以下命令來建立空的資料集。提供在先前步驟中傳回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" }
-
將訓練資料新增至資料集。
-
執行以下命令來建立資料集匯入任務。提供在先前步驟中傳回的資料集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-arnroleArn
ARN此時會顯示資料集匯入工作,例如:
{ "datasetImportJobArn": "arn:aws:personalize:us-west-2:acct-id:dataset-import-job/MovieRatingImportJob" }
-
使用
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 方法。
-
執行下列命令,以建立用來訓練模型的組態。此指令會建立使用自動訓練的解決方案。它會每七天自動建立一個新的解決方案版本 (預設值)。
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" }
-
使用
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" } }
-
透過自動訓練,解決方案版本訓練會在解決方案完成後開始ACTIVE。訓練開始後,您可以使用下列ListSolutionVersions命令取得解決方案版本的 Amazon 資源名稱 (ARN):
aws personalize list-solution-versions --solution-arn arn:aws:personalize:us-west-2:
acct-id
:solution/MovieSolution -
使用
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" } }
-
當解決方案版本
status
為時ACTIVE,訓練即完成。現在您可以檢閱訓練指標,並使用解決方案版本建立行銷活動。
注意
訓練需要一些時間。請等到訓練完成 (解決方案版本的訓練狀態顯示為ACTIVE),然後才能在促銷活動中使用此版本的解決方案。
-
您可以檢閱其指標來驗證解決方案版本的效能。執行以下命令來取得解決方案版本的指標。提供先前傳回的解決方案版本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.
-
執行以下命令來建立行銷活動。提供在上一個步驟中傳回的解決方案版本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" }
-
執行下列命令來檢查部署狀態。提供在上一個步驟中傳回的促銷活動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。
注意
並非所有食譜都支援 GetRecommendations
API. 如需詳細資訊,請參閱選擇一個食譜。
您在此步驟中呼叫的 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" }, ... ] }