추천인 (SDK) AWS 만들기 - Personalize

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

추천인 (SDK) AWS 만들기

도메인 데이터 세트 그룹을 생성하고 데이터를 가져오고 나면, 도메인 사용 사례에 맞는 권장 사항을 생성할 수 있습니다. 추천은 권장 사항을 생성하는 도메인 데이터 세트 그룹 리소스입니다.

모든 사용 사례에 대해 교육 시 사용되는 열을 구성할 수 있습니다. 자세한 설명은 교육 시 사용되는 열 구성 섹션을 참조하세요. Top picks for your 또는 Recommended for you 사용 사례에 대해, Amazon Personalize는 항목을 추천할 때 탐색을 사용합니다. 자세한 설명은 탐색 구성 섹션을 참조하세요.

추천 생성

다음 코드로 도메인 사용 사례에 맞는 추천을 생성합니다. 추천에 이름을 지정하고 도메인 데이터 세트 그룹의 Amazon 리소스 이름(ARN) 을 제공합니다. recipeArn의 경우, 사용 사례에 맞는 ARN을 제공합니다. 각 도메인 사용 사례에 대해 이 코드를 실행합니다. 사용 가능한 사용 사례는 도메인에 따라 다릅니다. 사용 사례, ARN 및 요구 사항 목록은 사용 사례 선택 단원을 참조하세요.

SDK for Python (Boto3)
import boto3 personalize = boto3.client('personalize') create_recommender_response = personalize.create_recommender( name = 'recommender name', recipeArn = 'recipe ARN', datasetGroupArn = 'dataset group ARN' ) recommender_arn = create_recommender_response['recommenderArn'] print('Recommender ARN:' + recommender_arn)
SDK for Java 2.x
public static String createRecommender(PersonalizeClient personalizeClient, String name, String datasetGroupArn, String recipeArn) { long maxTime = 0; long waitInMilliseconds = 30 * 1000; // 30 seconds String recommenderStatus = ""; try { CreateRecommenderRequest createRecommenderRequest = CreateRecommenderRequest.builder() .datasetGroupArn(datasetGroupArn) .name(name) .recipeArn(recipeArn) .build(); CreateRecommenderResponse recommenderResponse = personalizeClient .createRecommender(createRecommenderRequest); String recommenderArn = recommenderResponse.recommenderArn(); System.out.println("The recommender ARN is " + recommenderArn); DescribeRecommenderRequest describeRecommenderRequest = DescribeRecommenderRequest.builder() .recommenderArn(recommenderArn) .build(); maxTime = Instant.now().getEpochSecond() + 3 * 60 * 60; while (Instant.now().getEpochSecond() < maxTime) { recommenderStatus = personalizeClient.describeRecommender(describeRecommenderRequest).recommender() .status(); System.out.println("Recommender status: " + recommenderStatus); if (recommenderStatus.equals("ACTIVE") || recommenderStatus.equals("CREATE FAILED")) { break; } try { Thread.sleep(waitInMilliseconds); } catch (InterruptedException e) { System.out.println(e.getMessage()); } } return recommenderArn; } catch (PersonalizeException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return ""; }
SDK for JavaScript v3
// Get service clients and commands using ES6 syntax. import { CreateRecommenderCommand, PersonalizeClient } from "@aws-sdk/client-personalize"; // create personalizeClient const personalizeClient = new PersonalizeClient({ region: "REGION" }); // set the recommender's parameters export const createRecommenderParam = { name: "RECOMMENDER_NAME", /* required */ recipeArn: "RECIPE_ARN", /* required */ datasetGroupArn: "DATASET_GROUP_ARN" /* required */ } export const run = async () => { try { const response = await personalizeClient.send(new CreateRecommenderCommand(createRecommenderParam)); console.log("Success", response); return response; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

탐색 구성

Top picks for your 또는 Recommended for you 사용 사례에 대해, Amazon Personalize는 항목을 추천할 때 탐색을 사용합니다. 탐색에는 상호작용 데이터가 거의 없는 항목에 대한 사용자의 반응을 알아보기 위해 다양한 항목 권장 사항을 테스트하는 작업이 포함됩니다. 다음과 같이 탐색을 구성할 수 있습니다.

  • 관련성이 낮은 항목 탐색에 주목(탐색 가중치) — 탐색 범위를 설정합니다. 0과 1 사이에서 소수 값을 지정합니다. 기본값은 0.3입니다. 값이 1에 가까울수록 더 많이 탐색합니다. 더 많이 탐색할수록 항목 상호 작용 데이터가 적거나 이전 행동을 기반으로 한 관련성이 낮은 항목이 더 많이 추천에 포함됩니다. 0이면 탐색이 수행되지 않으며 추천이 현재 데이터(관련성)를 기반으로 합니다.

  • 탐색 항목 기간 제한 – 항목 상호 작용 데이터 세트의 모든 항목에서 최근 상호 작용이 발생한 이후 최대 항목 사용 기간(일)을 지정합니다. 이렇게 하면 항목 기간에 따른 항목 탐색 범위가 정의됩니다. Amazon Personalize는 생성 타임스탬프 또는 생성 타임스탬프 데이터가 누락된 경우 항목 상호 작용 데이터를 기반으로 항목 기간을 결정합니다. Amazon Personalize가 항목 기간을 결정하는 방법에 대한 자세한 내용은 생성 타임스탬프 데이터 단원을 참조하세요.

    Amazon Personalize가 탐색 중에 고려하는 항목을 늘리려면 더 큰 값을 입력합니다. 최소값은 1일이고 기본값은 30일입니다. 추천에 지정한 아이템 보관 기간 한도보다 오래된 항목이 포함될 수 있습니다. 이는 이러한 항목이 사용자와 관련이 있고 탐색에서 해당 항목을 식별하지 못했기 때문입니다.

다음 코드는 추천을 생성할 때 탐색을 구성하는 방법을 보여줍니다. 이 예제는 기본 값을 사용합니다.

SDK for Python (Boto3)
import boto3 personalize = boto3.client('personalize') create_recommender_response = personalize.create_recommender( name = 'recommender name', recipeArn = 'arn:aws:personalize:::recipe/aws-vod-top-picks', datasetGroupArn = 'dataset group ARN', recommenderConfig = {"itemExplorationConfig": {"explorationWeight": "0.3", "explorationItemAgeCutOff": "30"}} ) recommender_arn = create_recommender_response['recommenderArn'] print('Recommender ARN:' + recommender_arn)
SDK for JavaScript v3
// Get service clients and commands using ES6 syntax. import { CreateRecommenderCommand, PersonalizeClient } from "@aws-sdk/client-personalize"; // create personalizeClient const personalizeClient = new PersonalizeClient({ region: "REGION" }); // set the recommender's parameters export const createRecommenderParam = { name: "RECOMMENDER_NAME", /* required */ recipeArn: "RECIPE_ARN", /* required */ datasetGroupArn: "DATASET_GROUP_ARN", /* required */ recommenderConfig: { itemExplorationConfig: { explorationWeight: "0.3", explorationItemAgeCutOff: "30" } } }; export const run = async () => { try { const response = await personalizeClient.send(new CreateRecommenderCommand(createRecommenderParam)); console.log("Success", response); return response; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

교육 시 사용되는 열 구성

추천을 지원하는 모델을 교육할 때 Amazon Personalize가 고려하는 열을 수정할 수 있습니다. 기본 설정으로 Amazon Personalize는 교육 시 사용할 수 있는 모든 열을 사용합니다. 부울 데이터 유형과 사용자 지정 범주형이 아닌 문자열 필드가 있는 열은 사용되지 않습니다. EVENT_TYPE 열은 제외할 수 없습니다.

교육시 사용하는 열을 변경하여 추천을 생성할 때 Amazon Personalize가 사용하는 데이터를 제어할 수 있습니다. 이를 통해 다양한 교육 데이터 조합을 실험해 볼 수 있습니다. 또는 중요한 데이터가 없는 열을 제외할 수도 있습니다. 예를 들어, 권장 사항을 필터링하는 데만 사용하려는 열이 있을 수 있습니다. 이 열을 교육에서 제외할 수 있으며, Amazon Personalize는 필터링할 때만 이 열을 고려합니다.

학습에서 열을 제외하려면 추천 구성의 일부로 trainingDataConfigexcludedDatasetColumns 객체를 제공하세요. 각 키에 대해 데이터세트 유형을 제공하세요. 각 값에 대해 제외할 열 목록을 제공하세요. 다음 코드는 추천을 생성할 때 교육에서 열을 제외하는 방법을 보여줍니다.

SDK for Python (Boto3)
import boto3 personalize = boto3.client('personalize') create_recommender_response = personalize.create_recommender( name = 'recommender name', recipeArn = 'recipe name', datasetGroupArn = 'dataset group ARN', recommenderConfig = { "trainingDataConfig": { "excludedDatasetColumns": { "datasetType": ["COLUMN_A", "COLUMN_B"] } } } ) recommender_arn = create_recommender_response['recommenderArn'] print('Recommender ARN:' + recommender_arn)
SDK for JavaScript v3
// Get service clients and commands using ES6 syntax. import { CreateRecommenderCommand, PersonalizeClient } from "@aws-sdk/client-personalize"; // create personalizeClient const personalizeClient = new PersonalizeClient({ region: "REGION" }); // set the recommender's parameters export const createRecommenderParam = { name: "RECOMMENDER_NAME", /* required */ recipeArn: "RECIPE_ARN", /* required */ datasetGroupArn: "DATASET_GROUP_ARN", /* required */ recommenderConfig: { trainingDataConfig: { excludedDatasetColumns: { "DATASET_TYPE": ["COLUMN_A", "COLUMN_B"] } } } }; export const run = async () => { try { const response = await personalizeClient.send(new CreateRecommenderCommand(createRecommenderParam)); console.log("Success", response); return response; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

메타데이터 활성화

항목 데이터 세트가 있고 추천을 받을 때 메타데이터를 포함하는 옵션을 원하는 경우 recommender-config에서 enableMetadataWithRecommendationstrue로 설정합니다.

import boto3 personalize = boto3.client('personalize') create_recommender_response = personalize.create_recommender( name = 'recommender name', recipeArn = 'recipe name', datasetGroupArn = 'dataset group ARN', recommenderConfig = {"enableMetadataWithRecommendations": True} ) recommender_arn = create_recommender_response['recommenderArn'] print('Recommender ARN:' + recommender_arn)