일괄 세그먼트 작업으로 사용자 세그먼트 가져오기 - Personalize

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

일괄 세그먼트 작업으로 사용자 세그먼트 가져오기

USER_ SEGMENTATION 레시피를 사용한 경우 솔루션 버전에서 사용자 세그먼트를 가져오는 일괄 세그먼트 작업을 생성할 수 있습니다. 각 사용자 세그먼트는 각 사용자가 인벤토리의 항목과 상호작용할 확률을 기준으로 내림차순으로 정렬됩니다. 레시피에 따라 입력 데이터는 항목 목록 (항목-친화도 레시피) 또는 항목 속성 (항목-속성-친화도 레시피) JSON 형식이어야 합니다. Amazon Personalize 콘솔 AWS Command Line Interface (AWS CLI) 또는 을 사용하여 배치 세그먼트 작업을 생성할 수 있습니다. AWS SDKs

배치 세그먼트 작업을 생성할 때 입력 및 출력 위치에 S3 경로를 지정합니다. S3는 접두사를 기반으로 합니다. 입력 데이터 위치에 접두사를 제공하는 경우, Personalize는 해당 접두사와 일치하는 모든 파일을 입력 데이터로 사용합니다. 예를 들어, 사용자가 s3://amzn-s3-demo-bucket/folderName을 제공하고 버킷에 경로가 s3://amzn-s3-demo-bucket/folderName_test인 폴더가 있는 경우, Personalize는 두 폴더의 모든 파일을 입력 데이터로 사용합니다. 특정 폴더 내의 파일만을 입력 데이터로 사용하려면 S3 경로 끝에 접두사 구분 기호를 붙입니다(예: /: s3://amzn-s3-demo-bucket/folderName/). S3에서 객체를 구성하는 방법에 대한 자세한 내용은 객체 구성, 나열 및 객체 작업을 참조하세요.

배치 세그먼트 작업 생성(콘솔)

배치 추천을 위한 입력 데이터 준비 작업을 완료했으면 배치 세그먼트 작업을 생성할 준비가 된 것입니다. 이 절차에서는 USER _ SEGEMENTATION 레시피를 사용하여 솔루션과 솔루션 버전 (학습된 모델) 을 이미 생성했다고 가정합니다.

배치 세그먼트 작업을 생성하려면(콘솔)
  1. https://console.aws.amazon.com/personalize/집에서 Amazon Personalize 콘솔을 열고 계정에 로그인합니다.

  2. 데이터세트 그룹 페이지에서 데이터세트 그룹을 선택합니다.

  3. 탐색 창에서 배치 세그먼트 작업을 선택한 다음 배치 세그먼트 작업 생성을 선택합니다.

  4. 배치 세그먼트 작업 세부 정보에서 배치 세그먼트 작업 이름의 경우, 배치 세그먼트 작업의 이름을 지정합니다.

  5. 솔루션의 경우, 솔루션을 선택한 다음 추천을 생성하는 데 사용하려는 솔루션 버전 ID를 선택합니다. USER_ SEGEMENTATION 레시피를 사용한 경우에만 배치 세그먼트 작업을 생성할 수 있습니다.

  6. 사용자 수의 경우, Personalize가 각 사용자 세그먼트에 대해 생성하는 사용자의 수를 원하는 대로 지정합니다. 기본값은 25입니다. 최대값은 5백만 명입니다.

  7. 입력 소스의 경우, 입력 파일에 대한 S3 경로를 지정하거나 S3 찾아보기를 사용하여 S3 버킷을 선택합니다.

    다음 구문 사용: s3://amzn-s3-demo-bucket/<folder name>/<input JSON file name>.json

    입력 데이터는 솔루션에서 사용하는 레시피에 맞는 올바른 형식이어야 합니다. 입력 데이터 예제는 배치 세그먼트 작업 입력 및 출력 JSON 예제단원을 참조하세요.

  8. 출력 대상의 경우, 출력 위치에 대한 경로를 지정하거나 S3 찾아보기를 사용하여 S3 버킷을 선택합니다. 출력 데이터에 대한 다른 위치(폴더 또는 다른 S3 버킷)를 사용하는 것이 좋습니다.

    다음 구문 사용: s3://amzn-s3-demo-bucket/<output folder name>/

  9. IAM역할에서 다음 중 하나를 선택합니다.

    • 새 서비스 역할 생성 및 사용을 선택하고 서비스 역할 이름을 입력하여 새 역할을 생성합니다. 또는,

    • 올바른 권한이 있는 역할을 이미 만든 경우 기존 서비스 역할 사용을 선택하고 역할을 선택합니다. IAM

    사용하는 역할에는 각각 입력 및 출력 S3 버킷에 대한 읽기 및 쓰기 액세스 권한이 있어야 합니다.

  10. 필터 구성 경우, 원하는 필터를 선택하여 사용자 세그먼트에 필터를 적용할 수 있습니다. 필터에서 자리 표시자 매개변수를 사용하는 경우 매개변수 값이 JSON 입력에 포함되는지 확인하세요. 자세한 내용은 입력에 필터 값 제공 JSON 단원을 참조하십시오.

  11. 태그의 경우, 원하는 태그를 추가할 수 있습니다. Personalize 리소스 태그 지정에 대한 자세한 내용은 Personalize 리소스에 태그 지정단원을 참조하세요.

  12. 배치 세그먼트 작업 생성을 선택합니다. 배치 세그먼트 작업 생성이 시작되고 배치 세그먼트 작업 페이지가 나타나고 배치 세그먼트 작업 세부 정보) 단원이 표시됩니다.

  13. 배치 세그먼트 작업의 상태가 활성으로 변경되면 지정된 출력 S3 버킷에서 작업 출력을 찾을 수 있습니다. 출력 파일 이름의 형식은 input-name.out이 됩니다.

배치 세그먼트 작업 생성(AWS CLI)

배치 추천을 위한 입력 데이터 준비 작업을 완료했으면 다음 create-batch-segment-job코드를 사용하여 배치 세그먼트 작업을 생성할 준비가 된 것입니다. 작업 이름을 지정하고, 솔루션 버전의 Amazon 리소스 이름 (ARN) Solution version ARN 으로 바꾸고, 설정 중에 Amazon Personalize용으로 생성한 IAM 서비스 ARN 역할의 이름으로 바꾸십시오. IAM service role ARN 이 역할에는 각각 입력 및 출력 S3 버킷에 대한 읽기 및 쓰기 액세스 권한이 있어야 합니다. num-results의 경우, Personalize가 각 입력 데이터 라인에 대해 예측하기를 원하는 사용자의 수를 지정합니다. 기본값은 25입니다. 최대값은 5백만 명입니다. 원하는 대로 filter-arn을 제공하여 사용자 세그먼트를 필터링합니다. 필터가 자리 표시자 매개 변수를 사용하는 경우 매개 변수 값이 입력에 포함되어 있는지 확인하십시오. JSON 자세한 내용은 배치 추천 및 사용자 세그먼트(사용자 지정 리소스) 필터링 단원을 참조하십시오.

S3 input pathS3 output path를 입력 파일 및 출력 위치에 대한 S3 경로로 대체합니다. 출력 데이터에 대한 다른 위치(폴더 또는 다른 S3 버킷)를 사용하는 것이 좋습니다. 입력 및 출력 위치에는 구문: s3://amzn-s3-demo-bucket/<folder name>/<input JSON file name>.jsons3://amzn-s3-demo-bucket/<output folder name>/을 사용합니다.

aws personalize create-batch-segment-job \ --job-name Job name \ --solution-version-arn Solution version ARN \ --num-results The number of predicted users \ --filter-arn Filter ARN \ --job-input s3DataSource={path=s3://S3 input path} \ --job-output s3DataDestination={path=s3://S3 output path} \ --role-arn IAM service role ARN { "batchSegmentJobArn": "arn:aws:personalize:us-west-2:acct-id:batch-segment-job/batchSegmentJobName" }

배치 세그먼트 작업 생성(AWS SDKs)

배치 추천을 위한 입력 데이터 준비 작업을 완료했으면 CreateBatchSegmentJob작업을 사용하여 배치 세그먼트 작업을 생성할 준비가 된 것입니다. 다음 코드는 배치 세그먼트 작업을 생성하는 방법을 보여줍니다. 작업 이름을 지정하고, 사용할 솔루션 버전의 Amazon 리소스 이름 (ARN) 을 지정하고, Amazon Personalize IAM 역할의 이름을 지정하고, 입력 파일 및 출력 위치에 ARN 대한 Amazon S3 경로를 지정합니다. IAM서비스 역할은 각각 입력 및 출력 Amazon S3 버킷에 대한 읽기 및 쓰기 액세스 권한을 가져야 합니다.

출력 데이터에 대한 다른 위치(폴더 또는 다른 S3 버킷)를 사용하는 것이 좋습니다. 입력 및 출력 위치에는 구문: s3://amzn-s3-demo-bucket/<folder name>/<input JSON file name>.jsons3://amzn-s3-demo-bucket/<output folder name>/을 사용합니다.

numResults의 경우, Personalize가 각 입력 데이터 라인에 대해 예측하기를 원하는 사용자의 수를 지정합니다. 기본값은 25입니다. 최대값은 5백만 명입니다. 원하는 대로 filterArn을 제공하여 사용자 세그먼트를 필터링합니다. 필터에서 자리 표시자 파라미터를 사용하는 경우, 파라미터 값이 입력에 포함되어 있는지 확인하십시오. JSON 자세한 내용은 배치 추천 및 사용자 세그먼트(사용자 지정 리소스) 필터링 단원을 참조하십시오.

SDK for Python (Boto3)
import boto3 personalize_rec = boto3.client(service_name='personalize') personalize_rec.create_batch_segment_job ( solutionVersionArn = "Solution version ARN", jobName = "Job name", numResults = 25, filterArn = "Filter ARN", roleArn = "IAM service role ARN", jobInput = {"s3DataSource": {"path": "s3://amzn-s3-demo-bucket/<folder name>/<input JSON file name>.json"}}, jobOutput = {"s3DataDestination": {"path": "s3://amzn-s3-demo-bucket/<output folder name>/"}} )
SDK for Java 2.x
public static String createBatchSegmentJob(PersonalizeClient personalizeClient, String solutionVersionArn, String jobName, String filterArn, int numResults, String s3InputDataSourcePath, String s3DataDestinationPath, String roleArn, String explorationWeight, String explorationItemAgeCutOff) { long waitInMilliseconds = 60 * 1000; String status; String batchSegmentJobArn; try { // Set up data input and output parameters. S3DataConfig inputSource = S3DataConfig.builder() .path(s3InputDataSourcePath) .build(); S3DataConfig outputDestination = S3DataConfig.builder() .path(s3DataDestinationPath) .build(); BatchSegmentJobInput jobInput = BatchSegmentJobInput.builder() .s3DataSource(inputSource) .build(); BatchSegmentJobOutput jobOutputLocation = BatchSegmentJobOutput.builder() .s3DataDestination(outputDestination) .build(); CreateBatchSegmentJobRequest createBatchSegmentJobRequest = CreateBatchSegmentJobRequest.builder() .solutionVersionArn(solutionVersionArn) .filterArn(filterArn) .jobInput(jobInput) .jobOutput(jobOutputLocation) .jobName(jobName) .numResults(numResults) .roleArn(roleArn) .build(); batchSegmentJobArn = personalizeClient.createBatchSegmentJob(createBatchSegmentJobRequest) .batchSegmentJobArn(); DescribeBatchSegmentJobRequest describeBatchSegmentJobRequest = DescribeBatchSegmentJobRequest.builder() .batchSegmentJobArn(batchSegmentJobArn) .build(); long maxTime = Instant.now().getEpochSecond() + 3 * 60 * 60; // wait until the batch segment job is complete. while (Instant.now().getEpochSecond() < maxTime) { BatchSegmentJob batchSegmentJob = personalizeClient .describeBatchSegmentJob(describeBatchSegmentJobRequest) .batchSegmentJob(); status = batchSegmentJob.status(); System.out.println("batch segment job status: " + status); if (status.equals("ACTIVE") || status.equals("CREATE FAILED")) { break; } try { Thread.sleep(waitInMilliseconds); } catch (InterruptedException e) { System.out.println(e.getMessage()); } } return batchSegmentJobArn; } catch (PersonalizeException e) { System.out.println(e.awsErrorDetails().errorMessage()); } return ""; }
SDK for JavaScript v3
// Get service clients module and commands using ES6 syntax. import { CreateBatchSegmentJobCommand } from "@aws-sdk/client-personalize"; import { personalizeClient } from "./libs/personalizeClients.js"; // Or, create the client here. // const personalizeClient = new PersonalizeClient({ region: "REGION"}); // Set the batch segment job's parameters. export const createBatchSegmentJobParam = { jobName: 'NAME', jobInput: { /* required */ s3DataSource: { /* required */ path: 'INPUT_PATH', /* required */ // kmsKeyArn: 'INPUT_KMS_KEY_ARN' /* optional */' } }, jobOutput: { /* required */ s3DataDestination: { /* required */ path: 'OUTPUT_PATH', /* required */ // kmsKeyArn: 'OUTPUT_KMS_KEY_ARN' /* optional */' } }, roleArn: 'ROLE_ARN', /* required */ solutionVersionArn: 'SOLUTION_VERSION_ARN', /* required */ numResults: 20 /* optional */ }; export const run = async () => { try { const response = await personalizeClient.send(new CreateBatchSegmentJobCommand(createBatchSegmentJobParam)); console.log("Success", response); return response; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

배치 작업을 처리하는 데 시간이 걸릴 수 있습니다. DescribeBatchSegmentJob을 호출하고 batchSegmentJobArn을 입력 파라미터로 전달하여 작업 상태를 확인할 수 있습니다. 호출하여 사용자 AWS 환경의 모든 Amazon Personalize 배치 세그먼트 작업을 나열할 수도 있습니다. ListBatchSegmentJobs