バッチセグメントジョブを使用したユーザーセグメントの取得 - Amazon Personalize

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

バッチセグメントジョブを使用したユーザーセグメントの取得

USER_SEGMENTATION recipe を使用した場合は、バッチセグメントジョブを作成して、ソリューションバージョンでユーザーセグメントを取得できます。各ユーザーセグメントは、各ユーザーがインベントリ内のアイテムを操作する蓋然性に基づいて、降順にソートされます。レシピに応じて、入力データは JSON 形式の項目 (Item-Affinity レシピ) または項目属性 (Item-Attribute-Affinity レシピ) のリストである必要があります。Amazon Personalize コンソール、 AWS Command Line Interface (AWS CLI)、または を使用してバッチセグメントジョブを作成できます AWS SDKs。

バッチセグメントジョブを作成するときは、入力場所と出力場所への Amazon S3 パスを指定します。Amazon S3 はプレフィックスベースです。入力データの場所にプレフィックスを指定すると、Amazon Personalize はそのプレフィックスに一致するすべてのファイルを入力データとして使用します。例えば、s3://amzn-s3-demo-bucket/folderName を指定し、バケットにもパスが s3://amzn-s3-demo-bucket/folderName_test のフォルダがある場合、Amazon Personalize は両方のフォルダのすべてのファイルを入力データとして使用します。特定のフォルダ内のファイルのみを入力データとして使用するには、Amazon S3 パスの末尾に / のようなプレフィックス区切り文字を付けます: s3://amzn-s3-demo-bucket/folderName/ Amazon S3 がオブジェクトを整理する方法の詳細については、「オブジェクトの整理、一覧表示、操作」を参照してください。

バッチセグメントジョブの作成 (コンソール)

バッチレコメンデーション用の入力データを準備します。 を完了すると、バッチセグメントジョブを作成する準備が整います。この手順では、USER_SEGEMENTATION recipe を使用してソリューションとソリューションバージョン (トレーニング済みモデル) を既に作成していることを前提としています。

バッチセグメントジョブを作成するには (コンソール)
  1. https://console.aws.amazon.com/personalize/自宅の Amazon Personalize コンソールを開き、アカウントにサインインします。

  2. [Datasets group] (データセットグループ) のページで、データセットグループを選択します。

  3. ナビゲーションペインで [batch segment jobs] (バッチセグメントジョブ) を選択してから、[Create batch segment job] (バッチセグメントジョブを作成) を選択します。

  4. [batch segment job details] (バッチセグメントジョブの詳細) で、[Batch segment job name] (バッチセグメントジョブ名) に、バッチセグメントジョブの名前を指定します。

  5. [Solution] (ソリューション) で、ソリューションを選択してから、レコメンデーションの生成に使用する [Solution version ID] (ソリューションバージョン ID) を選択します。バッチセグメントジョブは、USER_SEGEMENTATION recipe を使用した場合にのみ作成できます。

  6. [Number of users] (ユーザーの数) で、オプションで、Amazon Personalize が各ユーザーセグメントについて生成するユーザーの数を指定します。デフォルトは 25 です。最大数は 500 万です。

  7. [Input source] (入力ソース) で、入力ファイルへの Amazon S3 パスを指定するか、[Browse S3] (S3 を参照) を使用して Amazon S3 バケットを選択します。

    次の構文を使用します: s3://amzn-s3-demo-bucket/<folder name>/<input JSON file name>.json

    入力データは、ソリューションで使用するレシピに適した形式である必要があります。入力データの例については、「バッチセグメントジョブの入力および出力 JSON の例」を参照してください。

  8. [Output destination] (出力先) で、出力場所へのパスを指定するか、[Browse S3] (S3 を参照) を使用して Amazon S3 バケットを選択します。出力データには別の場所 (フォルダまたは別の Amazon S3 バケット) を使用することをお勧めします。

    次の構文を使用します: s3://amzn-s3-demo-bucket/<output folder name>/

  9. IAM ロール で、次のいずれかを選択します。

    • [Create and use new service role] (新しいサービスロールを作成および使用) を選択し、[Service role name] (サービスロール名) を入力して新しいロールを作成するか、

    • 正しいアクセス許可を持つロールを既に作成している場合は、既存のサービスロールを使用する を選択し、IAMロールを選択します。

    使用するロールには、入力および出力の Amazon S3 バケットへの読み取りおよび書き込みアクセスがそれぞれ必要です。

  10. フィルター構成では、オプションでフィルターを選択し、ユーザーセグメントにフィルターを適用します。フィルターでプレースホルダーパラメータを使用する場合は、パラメータの値が入力 に含まれていることを確認してくださいJSON。詳細については、「入力 JSON にフィルター値を指定します。」を参照してください。

  11. [タグ] には、オプションで任意のタグを追加します。Amazon Personalize リソースのタグ付けの詳細については、「Amazon Personalize リソースのタグ付け」を参照してください。

  12. [Create batch segment job] (バッチセグメントジョブを登録) を選択します。バッチセグメントジョブの作成が開始され、[Batch segment jobs] (バッチセグメントジョブ) のページが表示されます。当該ページには、[Batch segment job detail] (バッチセグメントジョブの詳細) のセクションが表示されます。

  13. バッチセグメントジョブのステータスが [Active] (アクティブ) に変わると、指定した出力 Amazon S3 バケットからジョブの出力を取得できます。出力ファイルの名前は input-name.out という形式になります。

バッチセグメントジョブの作成 (AWS CLI)

バッチレコメンデーション用の入力データを準備します。 を完了すると、次の create-batch-segment-job コードを使用してバッチセグメントジョブを作成する準備が整います。ジョブ名を指定し、 をソリューションバージョンの Amazon リソースネーム (ARN) Solution version ARNに置き換え、 IAM service role ARN をセットアップ中に Amazon Personalize 用に作成したIAMサービスロールARNの に置き換えます。このロールには、入力および出力の Amazon S3 バケットへの読み取りおよび書き込みアクセスがそれぞれ必要です。num-results では、入力データの各行に Amazon Personalize に予測させたいユーザーの人数を指定します。デフォルトは 25 です。最大数は 500 万です。オプションで filter-arn を指定してユーザーセグメントを絞り込みます。フィルターでプレースホルダーパラメータを使用する場合は、パラメータの値が入力 に含まれていることを確認してくださいJSON。詳細については、「バッチレコメンデーションとユーザーセグメントのフィルタリング (カスタムリソース)」を参照してください。

S3 input pathS3 output path を、入力ファイルへの Amazon S3 パスと出力場所に置き換えます。出力データには別の場所 (フォルダまたは別の Amazon S3 バケット) を使用することをお勧めします。入力および出力の場所には、s3://amzn-s3-demo-bucket/<folder name>/<input JSON file name>.json および s3://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 バケットへの読み取りおよび書き込みアクセス権が必要です。

出力データには別の場所 (フォルダまたは別の Amazon S3 バケット) を使用することをお勧めします。入力および出力の場所には、s3://amzn-s3-demo-bucket/<folder name>/<input JSON file name>.json および s3://amzn-s3-demo-bucket/<output folder name>/ の構文を使用します。

numResults には、入力データの各行に Amazon Personalize に予測させたいユーザーの人数を指定します。デフォルトは 25 です。最大数は 500 万です。オプションで 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