レコメンデーションの取得 - Amazon Personalize

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

レコメンデーションの取得

Amazon Personalize のキャンペーンからパーソナライズされたレコメンデーションまたは類似アイテムのレコメンデーションを取得します。Amazon Personalize コンソール、AWS Command Line Interface (AWS CLI)、または AWS SDK を使用して、レコメンデーションを取得できます。

注記

PERSONALIZED_RANKING レシピを使用した場合は、「パーソナライズされたランキングの取得」を参照してください。

ユーザーカスタマイズ推奨スコアの仕組み

Amazon Personalize は、ユーザーPersonalize は、ユーザーのインタラクションデータとメタデータに基づいてアイテムのスコアを生成します。これらのスコアは、ユーザーが次にアイテムとインタラクションするかどうかについて、Amazon Personalize の相対的な確実性を表します。スコアが高いほど、確実性が高くなります。

Amazon Personalize では、すべてのスコアの合計が 1 になるように、カタログ内のすべてのアイテムを 0 から 1 までのスケールで相互にスコアリングします。たとえば、ユーザーから映画のレコメンデーションを取得していて、Items データセットに 3 本の映画がある場合、それらのスコアは 0.60.30.1 となります。同様に、インベントリに映画が 1,000 本ある場合、最も評価が高い映画のスコアは非常に小さくなる可能性があります (平均スコアは .001)。ただし、スコアリングは相対的であるため、レコメンデーションは引き続き有効です。

数学的には、各ユーザーアイテムのペア (u,i) のスコアは、次の式に従って計算されます。ここで exp は指数関数で、w̅u および wi/j はそれぞれユーザーおよびアイテムの埋め込みです。ギリシャ文字シグマ (Σ) は、アイテムデータセット内のすべてのアイテムの合計を表します。

注記

Amazon Personalize は、類似商品、SIMS、または Popularity-Count レシピのスコアを表示しません。パーソナライズドランキングのおすすめのスコアについては、を参照してくださいパーソナライズされたランキングスコアリングの仕組み

レコメンデーションの取得 (コンソール)

Amazon Personalize コンソールでレコメンデーションを取得するには、キャンペーンの詳細のページでレコメンデーションのリクエスト情報を提供します。

ユーザー向けのレコメンデーションを取得するには
  1. https://console.aws.amazon.com/personalize/home で Amazon Personalize コンソールを開き、アカウントにサインインします。

  2. 使用しているキャンペーンを含むデータセットグループを選択します。

  3. ナビゲーションペインで、[キャンペーン] を選択します。

  4. [Campaigns] (キャンペーン) ページで、ターゲットキャンペーンを選択します。

  5. [Test campaign results] (キャンペーンの結果をテスト) で、使用したレシピに基づいたレコメンデーションのリクエストの詳細を入力します。USER PERSONALIZATION レシピについては、レコメンデーションを取得するユーザーの [User ID] (ユーザー ID) を入力します。RELATED_ITEMS レシピについては、Amazon Personalize で類似アイテムを判別するために使用するアイテムの[Item ID] (アイテム ID) を入力します。

    ユーザーがログインする前にイベントを記録した場合 (匿名ユーザー)、userId の代わりにそれらのイベントから sessionId を提供することにより、このユーザー向けのレコメンデーションを取得できます。匿名ユーザーのイベントの記録の詳細については、「 PutEvents操作によるイベントの記録」を参照してください。

  6. オプションでフィルターを選択します。詳細については、「レコメンデーションとユーザーセグメントのフィルタリング」を参照してください。

  7. キャンペーンでコンテキストメタデータを使用する場合 (要件については「コンテキストメタデータを使用したレコメンデーションの関連性の向上」を参照)、オプションでコンテキストデータを入力します。

    各コンテキストについて、[Key] (キー) にメタデータフィールドを入力し、[Value] (値) にコンテキストデータを入力します。

  8. アイテムのサブセットをプロモーションする場合は、オプションでプロモーションフィールドに入力してください。詳細については、を参照してくださいレコメンデーション内のアイテムのプロモーション (カスタムデータセットグループ)

  9. [Get recommendations] (レコメンデーションの取得) を選択します。ユーザーの上位 25 個の推奨アイテムを含むテーブルが表示されます。

レコメンデーションの取得 (AWS CLI)

次のコードを使用してレコメンデーションを取得します。レコメンデーションを取得するユーザーの ID、およびキャンペーンの Amazon リソースネーム (ARN) を指定します。ユーザーに推奨される上位 10 個のアイテムのリストが表示されます。推奨アイテムの数を変更するには、numResults の値を変更します。デフォルトのアイテム数は 25 です。アイテムの最大数は 500 です。RELATED_ITEMS レシピを使用して、キャンペーンをサポートするソリューションバージョンをトレーニングした場合は、user-id パラメータを item-id に置き換えて、アイテム ID を指定します。

ユーザーがログインする前にイベントを記録した場合 (匿名ユーザー)、userId の代わりにそれらのイベントから sessionId を提供することにより、このユーザー向けのレコメンデーションを取得できます。匿名ユーザーのイベントの記録の詳細については、「 PutEvents操作によるイベントの記録」を参照してください。

aws personalize-runtime get-recommendations \ --campaign-arn campaign arn \ --user-id User ID \ --num-results 10

レコメンデーションの取得 (AWS SDK)

次のコードは、ユーザー向けのAmazon Personalize のレコメンデーションを取得する方法を示しています。レコメンデーションを取得するユーザーの ID、およびキャンペーンの Amazon リソースネーム (ARN) を指定します。ユーザーに推奨される上位 10 個のアイテムのリストが表示されます。推奨アイテムの数を変更するには、numResults の値を変更します。デフォルトのアイテム数は 25 です。アイテムの最大数は 500 です。RELATED_ITEMS レシピを使用して、キャンペーンをサポートするソリューションバージョンをトレーニングした場合は、userId パラメータを itemId に置き換えて、アイテム ID を指定します。

ユーザーがログインする前にイベントを記録した場合 (匿名ユーザー)、userId の代わりにそれらのイベントから sessionId を提供することにより、このユーザー向けのレコメンデーションを取得できます。匿名ユーザーのイベントの記録の詳細については、「 PutEvents操作によるイベントの記録」を参照してください。

SDK for Python (Boto3)
import boto3 personalizeRt = boto3.client('personalize-runtime') response = personalizeRt.get_recommendations( campaignArn = 'Campaign ARN', userId = 'User ID', numResults = 10 ) print("Recommended items") for item in response['itemList']: print (item['itemId'])
SDK for Java 2.x
public static void getRecs(PersonalizeRuntimeClient personalizeRuntimeClient, String campaignArn, String userId){ try { GetRecommendationsRequest recommendationsRequest = GetRecommendationsRequest.builder() .campaignArn(campaignArn) .numResults(20) .userId(userId) .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 (AwsServiceException 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 the recommendation request parameters. export const getRecommendationsParam = { campaignArn: 'CAMPAIGN_ARN', /* required */ userId: 'USER_ID', /* required */ numResults: 15 /* optional */ } 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();