リアルタイムレコメンデーションフィルター - Amazon Personalize

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

リアルタイムレコメンデーションフィルター

リアルタイムレコメンデーションは Amazon Personalize コンソールでフィルタリングできます。AWS Command Line Interface(AWS CLI)、またはAWSSDK

リアルタイムレコメンデーションをフィルタリングする (コンソール)

コンソールを使用してリアルタイムレコメンデーションをフィルタリングするには、フィルタを作成し、レコメンデーションリクエストに適用します。

注記

2020 年 11 月 10 日より前にデプロイされたパラメーターとキャンペーンを使用してレコメンデーションをフィルタリングするには、UpdateCampaignオペレーションを作成するか、新規キャンペーンを作成します。

フィルターの作成 (コンソール)

コンソールでフィルターを作成するには、フィルターされたレコメンデーションの取得に使用するキャンペーンまたはレコメンダーを含むデータセットグループを選択します。次に、フィルタ名とフィルタ式を指定します。

フィルターを作成するには (コンソール)

  1. で Amazon Personalize コンソールを開きます。https://console.aws.amazon.com/personalize/homeをクリックし、アカウントにサインインします。

  2. フィルタリングされたレコメンデーションを取得するために使用するキャンペーンまたはレコメンデーションを含むデータセットグループを選択します。

  3. ナビゲーションページで、[] を選択します。フィルタ[] を選択してから []新規フィルターの作成。-フィルターの作成ページが表示されます。

  4. を使用する場合フィルター名[] に、フィルタの名前を入力します。レコメンデーションリクエストに適用するときに、この名前でフィルタを選択します。

  5. を使用する場合[] には、[]式の構築または式を手動で追加する式を作成または挿入します。

    • 式ビルダを使用するには、式の構築。式ビルダーには、正しい形式のフィルタ式を構築するための構造、フィールド、およびガイドラインが用意されています。詳細については、「フィルター式ビルダーの使用」を参照してください。

    • 独自の式を入力するには、式を手動で追加する。詳細については、「フィルタ式の要素」を参照してください。

  6. [Finish] (終了) を選択します。フィルタの概要ページには、フィルタの Amazon リソースネーム (ARN)、ステータス、および完全なフィルタ式が表示されます。フィルタを削除するには、削除。概要ページを終了した後のフィルタの検索および削除については、を参照してください。フィルターの削除 (コンソール)

フィルターの適用 (コンソール)

フィルタを適用するには、テストレコメンダーレコメンダー (ドメインデータセットグループ) のパネルまたはテストキャンペーンの結果キャンペーン(カスタムデータセットグループ)のパネルで、フィルターを選択し、フィルターパラメーター値を入力します。次に、ユーザーの推奨事項を取得します。

重要

使用するフィルタ式の場合INCLUDE要素を含めるには、式で定義されているすべてのパラメータに値を指定する必要があります。使用する式を含むフィルタの場合EXCLUDE要素を除外する場合は、を省略できますfilter-values。この場合、Amazon Personalize は式のその部分を使用してレコメンデーションをフィルタリングしません。

フィルタを適用するには (コンソール)

  1. で Amazon Personalize コンソールを開きます。https://console.aws.amazon.com/personalize/homeをクリックし、アカウントにサインインします。

  2. フィルタリングされたレコメンデーションを取得するために使用するキャンペーンまたはレコメンデーションを含むデータセットグループを選択します。

  3. データセットグループのタイプに応じて、次のいずれかを行います。

    1. ドメインデータセットグループの場合、ナビゲーションペインで、レコメンダー

    2. カスタムデータセットグループの場合、ナビゲーションペインでカスタムリソースそれからキャンペーン

  4. リポジトリの []レコメンダーまたはキャンペーンページで、ターゲットレコメンダーまたはキャンペーンを選択します。

  5. 比較のために、フィルタを適用せずにユーザーのレコメンデーションを取得することから始めます。[]テストレコメンダー/テストキャンペーンの結果で、レコメンデーションを取得するユーザーの ID を入力し、推奨事項の取得。ユーザーの上位レコメンデーションを含むテーブルが表示されます。

  6. [] から [フィルター名メニューで、作成したフィルタを選択します。フィルタにプレースホルダパラメータがある場合は、各パラメータに関連付けられたフィールドが表示されます。

  7. プレースホルダパラメータでフィルタを使用している場合は、各パラメータに値を入力してフィルタ条件を設定します。1 つのパラメータに複数の値を使用するには、各値をカンマで区切ります。

  8. 同じを使用することUser ID前の手順と同様に、推奨事項の取得。レコメンデーションテーブルが表示されます。

    ユーザーがおすすめのアイテムをすでに購入している場合、フィルタはレコメンデーションリストからそのアイテムを削除します。この例では、アイテム 2657、2985 は、ユーザーが購入しなかった最も適したアイテム (アイテム 2641、1573) に置き換えられています。

フィルター式ビルダーの使用

-式ビルダーフィルターの作成ページには、正しくフォーマットされたフィルタを構築するための構造、フィールド、およびガイドラインが表示されます。

フィルタ式を作成するには、次の手順を実行します。

  • を使用するアクション,プロパティ,演算子, および式を作成するフィールド。

    向けので、固定値を入力するか、レコメンデーションを取得するときにフィルタ条件を設定するには、次のように入力します。$+ パラメータ名。例えば、$GENRES です。レコメンデーションを取得したら、フィルタリングする値 (1 つまたは複数) を指定します。この例では、レコメンデーションを取得するときに、ジャンルまたはジャンルのリストを指定します。

    複数の非パラメータ値はカンマで区切ります。カンマ区切りのパラメータをフィルタに追加することはできません。

    注記

    あなたが選んだらプロパティ( 内)dataset.propertyformat)、プロパティによって連鎖される後続行の値ANDまたはOR条件は同じものを使用する必要がありますdataset

  • を使用する+そしてXボタンを使用して、式から行を追加または削除します。最初の行を削除することはできません。

  • 新しい行については、AND,IF, またはOR上の演算子そしてメニューを使用して、一連の条件を作成します。

    を使用する場合IF条件:

    • 各式を含めることができます。IF項目 IF 条件を削除すると、式ビルダーは任意の条件を削除します。ANDそれに続く条件。

    • 以下のを使用できます。IFでフィルタリングする式に対する条件のみCurrentUser

  • [式の追加ボタンを使用すると、アイテムとインタラクションデータセットを使用したフィルタリングなど、より正確なフィルタリングを行うためのフィルタ式を追加できます。各式は最初に個別に評価され、結果は 2 つの結果の和集合になります。

    注記

    アイテムデータセットとインタラクションデータセットの両方を使用するフィルターを作成するには、しなければならない複数の式を使用します。

式のビルダーの例

次の例は、レコメンデーションを取得するときに指定したジャンルのアイテムを除外するフィルターを作成する方法を示しています ($GENRES プレースホルダパラメーターに注意してください)。フィルタでは、DOWNLOAD_COUNT以上のの200。ただし、現在のユーザーの年齢が以上である場合に限って17

フィルターの削除 (コンソール)

フィルターを削除すると、データセットグループのフィルターのリストからフィルターが削除されます。

重要

バッチ推論ジョブの進行中は、フィルタを削除することはできません。

フィルターを削除するには (コンソール)

  1. で Amazon Personalize コンソールを開きます。https://console.aws.amazon.com/personalize/homeをクリックし、アカウントにサインインします。

  2. [] から [データセットグループリストで、削除するフィルターを含むデータセットグループを選択します。

  3. ナビゲーションペインで、[] を選択します。フィルタ

  4. フィルタのリストから、削除するフィルタを選択し、詳細を表示。フィルタの詳細ページが表示されます。

  5. 選択削除をクリックし、確認ダイアログボックスで削除を確認します。

リアルタイムレコメンデーションフィルタリングAWS CLI)

を使用してレコメンデーションをフィルタリングするにはAWS CLIを入力する場合は、フィルタを作成し、でフィルタ ARN を指定して適用します。GetRecommendationsまたはGetPersonalizedRankingリクエスト.

重要

2020 年 11 月 10 日より前に展開したパラメーターとキャンペーンを使用してレコメンデーションをフィルタリングするには、UpdateCampaign新規キャンペーンを呼び出すか、作成します。

フィルターの作成 (AWS CLI)

以下のを使用します。create-filterオペレーションを使用して、フィルタを作成し、フィルタ式を指定します。

を交換してください。Filter nameをフィルタの名前とし、Dataset group ARNデータセットグループの Amazon リソースネーム (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-personalized-ranking操作、フィルターを適用するには、filter-arn任意のフィルタ値をパラメータとして指定します。

の例を次に示します。get-recommendationsオペレーション. 置換Campaign ARNキャンペーンの Amazon リソースネーム (ARN)User IDレコメンデーションを取得しているユーザーの ID とFilter ARNフィルターの ARN を使用します。キャンペーンではなくレコメンダーからレコメンデーションを取得する場合は、--recommender-arn代わりに、--campaign-arnそして、レコメンダーに ARN を提供します。

式にパラメータがある場合は、filter-valuesオブジェクト。フィルタ式の各パラメータについて、パラメータ名 (大文字と小文字を区別) と値を指定します。たとえば、フィルタ式に$GENREパラメータ、提供する「ジャンル」キーとして、そしてジャンルやジャンルなど"Comedy"などの他の変換を行うこともできます。複数の値はカンマで区切ります。例えば、"\"comedy\",\"drama\",\"horror"\" です。

重要

使用するフィルタ式の場合INCLUDE要素を含めるには、式で定義されているすべてのパラメータに値を指定する必要があります。使用する式を含むフィルタの場合EXCLUDE要素を除外する場合は、を省略できますfilter-values。この場合、Amazon 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

リアルタイムレコメンデーションフィルタリングAWSSDK)

を使用してレコメンデーションをフィルタリングするにはAWSSDK の場合は、フィルタを作成し、でフィルタ ARN を指定して適用します。GetRecommendationsまたはGetPersonalizedRankingリクエスト.

重要

2020 年 11 月 10 日より前に展開したパラメーターとキャンペーンを使用してレコメンデーションをフィルタリングするには、UpdateCampaign新規キャンペーンを呼び出すか、作成します。

フィルターの作成 (AWSSDK)

を使用して、新しいフィルターを作成します。CreateFilterオペレーション.

SDK for Python (Boto3)

以下のを使用します。create_filterメソッドを使用して、フィルタを作成します。AWS SDK for Python (Boto3)。置換Filter Nameフィルタの名前で、Dataset Group ARNデータセットグループの Amazon リソースネーム (ARN) を使用します。例を置き換えるfilterExpression独自のフィルタ式を使用します。

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)

後で使用できるように、フィルタ ARN を記録しておきます。フィルタがアクティブであることを確認するには、DescribeFilterフィルタを使用する前に操作してください。 API の詳細については、「CreateFilter」を参照してください。フィルタ式の詳細については、「」を参照してください。フィルタ式の作成

SDK for Java 2.x

以下のようになりますcreateFilterメソッドを使用して、フィルタを作成する方法を示しています。AWS SDK for Java 2.x。このメソッドは、新しいフィルターの ARN (Amazon リソース番号) を返します。パラメータとして、Amazon Personalize サービスクライアント、フィルターの名前、フィルターを作成するデータセットグループ、およびフィルター式を渡します。フィルタ式の詳細については、「」を参照してください。フィルタ式の作成

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 ""; }

フィルターの適用 (AWSSDK)

[] を使用すると、get_recommendationsまたはget_personalized_rankingメソッドの場合は、aを渡してフィルタを適用するfilterArn任意のフィルタ値をパラメータとして指定します。

次のコードは、レコメンデーションをフィルタリングする方法を示しています。AWS SDK for Python (Boto3)またはAWS SDK for Java 2.x。

重要

使用するフィルタ式の場合INCLUDE要素を含めるには、式で定義されているすべてのパラメータに値を指定する必要があります。使用する式を含むフィルタの場合EXCLUDE要素を除外する場合は、を省略できますfilter-values。この場合、Amazon Personalize は式のその部分を使用してレコメンデーションをフィルタリングしません。

SDK for Python (Boto3)

以下のを使用します。get_recommendationsSDK for Python (Boto3) を使用してレコメンデーションをフィルタリングする方法。置換Campaign ARNキャンペーンの Amazon リソースネーム (ARN) を使用して、User IDレコメンデーションを取得しているユーザーの ID とFilter ARNフィルターの ARN を使用します。キャンペーンではなくレコメンダーからレコメンデーションを取得する場合は、recommenderArn代わりに、campaignArnそして、レコメンダーに ARN を提供します。

を使用する場合filterValues、フィルタ式の各オプションパラメータに対して、パラメータ名 (大文字と小文字を区別) と値を指定します。たとえば、フィルタ式に$GENRESパラメータ、提供する「ジャンル」キーとして、そしてジャンルやジャンルなど"\"Comedy"\"などの他の変換を行うこともできます。複数を入力する場合は、各値はカンマで区切ります。例えば、"\"comedy\",\"drama\",\"horror\"" です。

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

以下のを使用します。getFilteredRecsAmazon Personalize レコメンデーションリクエストにフィルターを適用するメソッドです。Amazon Personalize ランタイムサービスクライアント、キャンペーンの ARN (Amazon リソースネーム)、ユーザーのユーザー ID、フィルターの ARN、およびフィルターパラメーター名 (大文字と小文字を区別) とその値をパラメーターとして渡します。たとえば、フィルタ式に$GENRESパラメータ、提供する「ジャンル」パラメータ名として。キャンペーンではなくレコメンダーからレコメンデーションを取得する場合は、recommenderArn代わりに、campaignArnそして、レコメンダーに ARN を提供します。

次の例では、2 つのパラメータを使用します。1 つは 2 つの値で、もう 1 つは値 1 つです。フィルタ式に応じて、コードを変更して 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); } }

フィルターの削除 (AWSPython SDK)

以下のを使用します。delete_filterメソッドを使用して、フィルターを削除します。置換filter ARNフィルターの ARN を使用します。

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