실시간 추천 필터링 - Personalize

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

실시간 추천 필터링

Amazon Personalize 콘솔, AWS Command Line Interface (AWS CLI) 또는 SDK를 사용하여 실시간 추천을 필터링할 수 있습니다. AWS

개인 맞춤형 항목 추천이나 유사한 항목을 받으면 요청에 홍보를 지정할 수 있습니다. 홍보는 필터를 사용하여 추천 항목의 구성 가능한 하위 집합에 적용되는 추가 비즈니스 규칙을 정의합니다. 자세한 내용은 추천의 항목 홍보단원을 참조하세요.

실시간 추천 필터링(콘솔)

콘솔을 사용하여 실시간 추천을 필터링하려면 필터를 생성한 다음, 추천 요청에 필터를 적용합니다.

참고

파라미터가 포함된 필터와 2020년 11월 10일 이전에 배포한 캠페인을 사용하여 추천을 필터링하려면 UpdateCampaign작업을 사용하여 캠페인을 재배포하거나 캠페인을 새로 생성해야 합니다.

필터 생성(콘솔)

콘솔에서 필터를 만들려면 필터링된 추천을 받는 데 사용할 캠페인 또는 추천자가 포함된 데이터세트 그룹을 선택합니다. 그런 다음 필터 이름과 필터 표현식을 제공합니다.

필터를 생성하려면(콘솔)
  1. https://console.aws.amazon.com/acm-pca/home에서 Personalize 콘솔을 열고 계정에 로그인합니다.

  2. 필터링된 추천을 받는 데 사용할 캠페인 또는 추천자가 포함된 데이터세트 그룹을 선택합니다.

  3. 탐색 창에서 필터를 선택한 다음 새 필터 생성을 선택합니다. 필터 생성 페이지가 표시됩니다.

  4. 필터 이름에 필터 이름을 입력합니다. 추천 요청에 필터를 적용할 때 이 이름을 기준으로 하는 필터를 선택합니다.

  5. 표현식에 대해 표현식 작성 또는 표현식 수동 추가를 선택하고 표현식을 작성하거나 삽입합니다.

    • 표현식 빌더를 사용하려면 표현식 작성을 선택합니다. 표현식 빌더는 올바른 형식의 필터 표현식을 작성하기 위한 구조, 필드 및 지침을 제공합니다. 자세한 내용은 필터 표현식 빌더 사용단원을 참조하세요.

    • 표현식을 직접 입력하려면 표현식 수동 추가를 선택합니다. 자세한 내용은 필터 표현식 요소단원을 참조하세요.

  6. 마침을 클릭합니다. 필터의 개요 페이지에 필터의 리소스 이름(ARN), 상태 및 전체 필터 표현식이 표시됩니다. 필터를 삭제하려면 삭제를 선택합니다. 개요 페이지를 떠난 후 필터를 찾고 삭제하는 방법에 대한 자세한 내용은 필터 삭제(콘솔)단원을 참조하세요.

필터 적용(콘솔)

필터를 적용하려면 추천자 테스트(추천자의 경우) 또는 캠페인 결과 테스트(사용자 지정 캠페인의 경우)에서 필터를 선택하고 필터 파라미터 값을 입력합니다. 그런 다음 사용자를 위한 추천을 받습니다.

중요

INCLUDE 요소를 사용하는 필터 표현식의 경우 표현식에 정의되어 있는 모든 파라미터의 값을 제공해야 합니다. EXCLUDE 요소를 사용하는 표현식이 포함된 필터의 경우 filter-values를 생략할 수 있습니다. 이 경우 Personalize는 표현식의 해당 부분을 추천을 필터링하는 데 사용하지 않습니다.

필터를 적용하려면(콘솔)
  1. https://console.aws.amazon.com/acm-pca/home에서 Personalize 콘솔을 열고 계정에 로그인합니다.

  2. 필터링된 추천을 받는 데 사용할 캠페인 또는 추천자가 포함된 데이터세트 그룹을 선택합니다.

  3. 데이터 세트 그룹 유형 또는 리소스 유형에 따라 다음 중 하나를 수행합니다.

    1. 도메인 데이터세트 그룹의 경우 탐색 창에서 추천자를 선택합니다.

    2. 사용자 지정 데이터 세트 그룹 또는 사용자 지정 리소스의 경우 탐색 창에서 사용자 지정 리소스를 선택한 다음 캠페인을 선택합니다.

  4. 추천자 또는 캠페인 페이지에서 대상 추천자 또는 캠페인을 선택합니다.

  5. 비교를 위해 필터를 적용하지 않고 추천을 가져오기 시작합니다. 추천자 테스트 / 캠페인 결과 테스트에서 추천을 받으려는 사용자의 ID 또는 관련 항목의 항목 ID를 입력하고 추천 받기를 선택합니다. 최상위 추천이 포함된 표가 나타납니다.

  6. 필터 이름에서, 생성한 필터를 선택합니다. 필터에 자리 표시자 파라미터가 있는 경우 각 파라미터의 관련 필드가 나타납니다.

  7. 자리 표시자 파라미터가 있는 필터를 사용하는 경우 각 파라미터에 대해 값을 입력하여 필터 기준을 설정합니다. 한 파라미터에 여러 값을 사용하려면 각 값을 쉼표로 구분합니다.

  8. 이전 단계에서와 동일한 User ID 또는 Item ID를 사용하여 추천 받기를 선택합니다. 추천 표가 나타납니다.

    예를 들어, 사용자가 이미 추천 항목을 구매한 경우 필터는 추천 목록에서 해당 항목을 제거합니다. 이 예시에서는 2657, 2985 항목이 사용자가 구매하지 않은 가장 적합한 항목(2641 및 1573 항목)으로 대체되었습니다.

필터 표현식 빌더 사용

필터 생성 페이지의 표현식 빌더는 올바른 형식의 필터를 작성하기 위한 구조, 필드 및 지침을 제공합니다.

필터 표현식을 작성하려면:

  • 유형, 작업, 속성, 연산자, 필드를 사용하여 표현식을 생성합니다.

    에 고정 값을 입력하거나, 추천을 받을 때 필터 기준을 설정하려면 $ + 파라미터 이름을 입력합니다. 예를 들어 $GENRES입니다. 추천을 받을 때 필터링 기준으로 사용할 값을 하나 또는 여러 개 제공합니다. 이 예시에서는 추천을 받을 때 장르 또는 장르 목록을 제공하게 될 것입니다.

    파라미터가 아닌 여러 값은 쉼표로 구분합니다. 쉼표로 구분된 파라미터는 필터에 추가할 수 없습니다.

    참고

    속성(dataset.field 형식)을 선택한 후에는 AND또는 OR조건으로 연결된 모든 후속 행의 속성 값도 동일한 dataset을 사용해야 합니다.

  • +X 버튼을 사용하여 표현식에 행을 추가하거나 삭제할 수 있습니다. 첫 번째 행은 삭제할 수 없습니다.

  • 새 행의 경우 AND 메뉴에서 AND, IF또는 OR연산자를 사용하여 일련의 조건을 만들 수 있습니다.

    IF 조건의 경우:

    • 표현식마다 IF항목을 하나만 포함할 수 있습니다. IF 조건을 제거하면 표현식 빌더가 그 뒤에 오는 모든 AND조건을 제거합니다.

    • IF 조건은 CurrentUser를 기준으로 필터링하는 표현식에만 사용할 수 있습니다.

  • 표현식 추가 버튼을 선택하여 보다 정밀한 필터링을 위해 필터 표현식을 추가합니다. 먼저 각 표현식을 독립적으로 평가한 다음 두 결과를 합친 결과를 얻습니다.

    참고

    항목 및 항목 상호 작용 데이터 세트 또는 작업 및 작업 상호 작용 데이터 세트를 모두 사용하는 필터를 만들려면 여러 표현식을 사용해야 합니다.

표현식 빌더 예제

다음 예제에서는 추천을 받을 때 지정한 장르를 가진 항목을 제외하는 필터를 작성하는 방법을 보여줍니다($GENRES 자리 표시자 파라미터 참고). 또한 필터는 DOWNLOAD_COUNT200이상인 항목을 제외하지만 현재 사용자의 연령이 17을 초과하는 경우에만 제외합니다.

필터 삭제(콘솔)

필터를 삭제하면 데이터세트 그룹의 필터 목록에서 해당 필터가 제거됩니다.

중요

배치 추론 작업이 진행 중인 동안에는 필터를 삭제할 수 없습니다.

필터를 삭제하려면(콘솔)
  1. https://console.aws.amazon.com/acm-pca/home에서 Personalize 콘솔을 열고 계정에 로그인합니다.

  2. 데이터세트 그룹 목록에서 삭제하려는 필터가 포함된 데이터세트 그룹을 선택합니다.

  3. 탐색 창에서 필터를 선택합니다.

  4. 필터 목록에서 삭제하려는 필터를 선택하고 세부 정보 보기를 선택합니다. 필터 세부 정보 페이지가 나타납니다.

  5. 삭제를 선택하고 확인 대화 상자에서 삭제를 확정합니다.

실시간 추천 필터링(AWS CLI)

를 사용하여 권장 사항을 필터링하려면 필터를 만든 다음 GetRecommendations or GetPersonalizedRanking 요청에서 필터 ARN을 지정하여 필터를 적용합니다. AWS CLI

중요

파라미터가 포함된 필터와 2020년 11월 10일 이전에 배포한 캠페인을 사용하여 추천을 필터링하려면 UpdateCampaign호출을 사용하여 캠페인을 다시 배포하거나 새 캠페인을 생성해야 합니다.

필터 생성(AWS CLI)

다음과 같은 create-filter작업을 사용하여 필터를 만들고 필터 표현식을 지정합니다.

Filter name을 필터 이름으로 바꾸고 Dataset group ARN를 데이터세트 그룹의 리소스 이름(ARN)으로 바꿉니다. 샘플 filter-expression을 자체 필터 표현식으로 바꿉니다.

aws personalize create-filter \ --name Filter name \ --dataset-group-arn dataset group arn \ --filter-expression "EXCLUDE ItemID WHERE Items.CATEGORY IN (\"$CATEGORY\")"

성공하면 필터 ARN이 표시됩니다. 나중에 사용할 수 있도록 기록해 둡니다. 필터가 활성 상태인지 확인하려면 DescribeFilter작업을 사용한 후에 필터를 사용합니다.

API에 대한 자세한 내용은 CreateFilter단원을 참조하세요. 필터 표현식에 대한 자세한 내용은 필터 표현식 구조 및 요소단원을 참조하세요.

필터 적용(AWS CLI)

get-recommendations, get-action-recommendations 또는 get-personalized-ranking 작업을 사용하는 경우, filter-arn 및 모든 필터 값을 파라미터로 전달하여 필터를 적용합니다.

다음은 get-recommendations작업의 예입니다. Campaign ARN을 캠페인의 리소스 이름(ARN)으로, User ID를 추천을 받는 사용자의 ID로 그리고 Filter ARN을 필터의 ARN으로 각각 바꿉니다. 캠페인 대신 추천자로부터 추천을 받는 경우 --campaign-arn대신 recommender-arn을 사용하고 추천자의 ARN을 제공합니다.

표현식에 파라미터가 있는 경우 filter-values객체를 포함시킵니다. 필터 표현식의 각 파라미터에 대해 파라미터 이름(대소문자 구분)과 값을 입력합니다. 예를 들어 필터 표현식에 $GENRE파라미터가 있는 경우 "GENRE"를 키로 입력하고 값으로 장르(예: "Comedy")를 입력합니다. 값이 여러 개인 경우 쉼표로 구분합니다. 예를 들어 "\"comedy\",\"drama\",\"horror"\"입니다.

중요

INCLUDE 요소를 사용하여 항목을 포함하는 필터 표현식의 경우 표현식에 정의되어 있는 모든 파라미터의 값을 제공해야 합니다. EXCLUDE 요소를 사용하여 항목을 제외하는 표현식이 포함된 필터의 경우 filter-values를 생략할 수 있습니다. 이 경우 Personalize는 표현식의 해당 부분을 추천을 필터링하는 데 사용하지 않습니다.

aws personalize-runtime get-recommendations \ --campaign-arn Campaign ARN \ --user-id User ID \ --filter-arn Filter ARN \ --filter-values '{ "Parameter name": "\"value\"", "Parameter name": "\"value1\",\"value2\",\"value3\"" }'

필터 삭제(AWS CLI)

필터를 삭제하려면 다음과 같은 delete-filter작업을 사용합니다. filter ARN을 필터의 ARN으로 대체합니다.

aws personalize delete-filter --filter-arn Filter ARN

실시간 추천 (AWS SDK) 필터링

AWS SDK를 사용하여 권장 사항을 필터링하려면 필터를 만든 다음 or 요청에서 GetRecommendations 필터 ARN을 지정하여 필터를 적용합니다. GetPersonalizedRanking

중요

파라미터가 포함된 필터와 2020년 11월 10일 이전에 배포한 캠페인을 사용하여 추천을 필터링하려면 UpdateCampaign호출을 사용하여 캠페인을 다시 배포하거나 새 캠페인을 생성해야 합니다.

필터 (AWS SDK) 생성

CreateFilter 작업을 사용하여 새 필터를 생성합니다. 다음 코드는 필터를 만드는 방법을 보여줍니다. 데이터세트 그룹의 필터 이름, 리소스 이름(ARN)을 지정하고 필터 표현식을 제공합니다.

SDK for Python (Boto3)
import boto3 personalize = boto3.client('personalize') response = personalize.create_filter( name = 'Filter Name', datasetGroupArn = 'Dataset Group ARN', filterExpression = 'EXCLUDE ItemID WHERE Items.CATEGORY IN ($CATEGORY)' ) filter_arn = response["filterArn"] print("Filter ARN: " + filter_arn)
SDK for Java 2.x
public static String createFilter(PersonalizeClient personalizeClient, String filterName, String datasetGroupArn, String filterExpression) { try { CreateFilterRequest request = CreateFilterRequest.builder() .name(filterName) .datasetGroupArn(datasetGroupArn) .filterExpression(filterExpression) .build(); return personalizeClient.createFilter(request).filterArn(); } catch(PersonalizeException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return ""; }
SDK for JavaScript v3
// Get service clients module and commands using ES6 syntax. import { CreateFilterCommand } from "@aws-sdk/client-personalize"; import { personalizeClient } from "./libs/personalizeClients.js"; // Or, create the client here. // const personalizeClient = new PersonalizeClient({ region: "REGION"}); // Set the filter's parameters. export const createFilterParam = { datasetGroupArn: 'DATASET_GROUP_ARN', /* required */ name: 'NAME', /* required */ filterExpression: 'FILTER_EXPRESSION' /*required */ } export const run = async () => { try { const response = await personalizeClient.send(new CreateFilterCommand(createFilterParam)); console.log("Success", response); return response; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

나중에 사용할 수 있도록 필터 ARN을 기록해 놓습니다. 필터가 활성 상태인지 확인하려면 DescribeFilter작업을 사용한 후 필터를 사용합니다. API에 대한 자세한 내용은 CreateFilter단원을 참조하세요. 필터 표현식에 대한 자세한 내용은 필터 표현식 구조 및 요소단원을 참조하세요.

필터 적용 (AWS SDK)

GetRecommendations GetActionRecommendations, 또는 GetPersonalizedRanking 작업을 사용하는 경우 a filterArn 및 모든 필터 값을 매개 변수로 전달하여 필터를 적용합니다.

다음 코드는 사용자에 대한 필터링된 Amazon Personalize 항목 추천을 가져오는 방법을 보여줍니다. 추천을 받고자 하는 사용자의 ID, 캠페인의 리소스 이름(ARN), 필터의 ARN을 지정합니다. 캠페인 대신 추천자로부터 추천을 받는 경우 campaignArn대신 recommenderArn을 사용하고 추천자의 ARN을 제공합니다.

filterValues의 경우, 필터 표현식의 각 선택적 파라미터에 대해 파라미터 이름(대소문자 구분)과 값을 입력합니다. 예를 들어 필터 표현식에 $GENRES파라미터가 있는 경우 “GENRES”를 키로 입력하고 값으로 장르(예: "\"Comedy"\")를 입력합니다. 값이 여러 개인 경우 각 값을 쉼표로 구분합니다. 예를 들어 "\"comedy\",\"drama\",\"horror\""입니다.

중요

INCLUDE 요소를 사용하여 항목을 포함하는 필터 표현식의 경우 표현식에 정의되어 있는 모든 파라미터의 값을 제공해야 합니다. EXCLUDE 요소를 사용하여 항목을 제외하는 표현식이 포함된 필터의 경우 filter-values를 생략할 수 있습니다. 이 경우 Personalize는 표현식의 해당 부분을 추천을 필터링하는 데 사용하지 않습니다.

SDK for Python (Boto3)
import boto3 personalize_runtime = boto3.client("personalize-runtime") response = personalize_runtime.get_recommendations( campaignArn = "Campaign ARN", userId = "User ID", filterArn = "Filter ARN", filterValues = { "Parameter name": "\"value1\"", "Parameter name": "\"value1\",\"value2\",\"value3\"" .... } )
SDK for Java 2.x

다음 예제에서는 두 개의 값이 있는 파라미터와 값이 한 개인 파라미터를 사용합니다. 필터 표현식에 따라 코드를 수정하여 ParameterName 및 ParameterValue 필드를 추가하거나 제거합니다.

public static void getFilteredRecs(PersonalizeRuntimeClient personalizeRuntimeClient, String campaignArn, String userId, String filterArn, String parameter1Name, String parameter1Value1, String parameter1Value2, String parameter2Name, String parameter2Value){ try { Map<String, String> filterValues = new HashMap<>(); filterValues.put(parameter1Name, String.format("\"%1$s\",\"%2$s\"", parameter1Value1, parameter1Value2)); filterValues.put(parameter2Name, String.format("\"%1$s\"", parameter2Value)); GetRecommendationsRequest recommendationsRequest = GetRecommendationsRequest.builder() .campaignArn(campaignArn) .numResults(20) .userId(userId) .filterArn(filterArn) .filterValues(filterValues) .build(); GetRecommendationsResponse recommendationsResponse = personalizeRuntimeClient.getRecommendations(recommendationsRequest); List<PredictedItem> items = recommendationsResponse.itemList(); for (PredictedItem item: items) { System.out.println("Item Id is : "+item.itemId()); System.out.println("Item score is : "+item.score()); } } catch (PersonalizeRuntimeException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }
SDK for JavaScript v3
// Get service clients module and commands using ES6 syntax. import { GetRecommendationsCommand } from "@aws-sdk/client-personalize-runtime"; import { personalizeRuntimeClient } from "./libs/personalizeClients.js"; // Or, create the client here: // const personalizeRuntimeClient = new PersonalizeRuntimeClient({ region: "REGION"}); // Set recommendation request parameters. export const getRecommendationsParam = { campaignArn: 'CAMPAIGN_ARN', /* required */ userId: 'USER_ID', /* required */ numResults: 15, /* optional */ filterArn: 'FILTER_ARN', /* required to filter recommendations */ filterValues: { "PROPERTY": "\"VALUE\"" /* Only required if your filter has a placeholder parameter */ } } export const run = async () => { try { const response = await personalizeRuntimeClient.send(new GetRecommendationsCommand(getRecommendationsParam)); console.log("Success!", response); return response; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

필터 삭제 (AWS Python SDK)

필터를 삭제하려면 다음과 같은 delete_filter메서드를 사용합니다. filter ARN을 필터의 ARN으로 대체합니다.

import boto3 personalize = boto3.client("personalize") response = personalize.delete_filter( filterArn = "filter ARN" )