User-Personalization レシピ - Amazon Personalize

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

User-Personalization レシピ

User-Personalization (aws-user-personalization) レシピは、すべてのパーソナライズされたレコメンデーションシナリオ向けに最適化されています。Interactions、Items、および Users のデータセットに基づいて、ユーザーがインタラクションするアイテムを予測します。アイテムを推奨する際には、自動アイテム探索を使用します。

自動探索により、Amazon Personalize はさまざまなアイテムのレコメンデーションを自動的にテストし、ユーザーがこれらの推奨アイテムを操作する方法から学習し、エンゲージメントとコンバージョンを向上させるアイテムのレコメンデーションを強化します。これにより、カタログの内容の変更が早い場合、またはニュース記事やプロモーションなどの新しいアイテムとユーザーとの関連性が高い場合、それらのアイテムの鮮度が高い状態であるときに、アイテムの検出とエンゲージメントが向上します。

探索する量 (インタラクションデータや関連性の少ないアイテムがより頻繁に推奨される場合) と活用する量 (知っている内容または関連性にレコメンデーションが基づいている場合) のバランスをとることができます。Amazon Personalize は、暗黙的なユーザーフィードバックに基づいて、将来のレコメンデーションを自動的に調整します。

自動更新

User-Personalization を使用すると、Amazon Personalize は、Amazon Personalize は、Amazon Personalize は、新しいデータを含めるために、2 時間ごとに最新モデル (ソリューションバージョン) を水面下で自動的に更新します。自動更新には費用がかかりません。更新を行うには、ソリューションバージョンを Amazon Personalize キャンペーンとともにデプロイする必要があります。キャンペーンでは、更新されたソリューションバージョンが自動的に使用されます。auto 更新が完了しても、新しいソリューションバージョンは作成されず、新しいモデルメトリックは生成されません。これは、完全な再トレーニングは行われないためです。新しいソリューションバージョンを作成した場合、Amazon Personalize は、キャンペーンでデプロイした古いソリューションバージョンを自動的に更新しません。データセットを削除した場合も、更新は行われません。

更新のたびに、Amazon Personalize はソリューションバージョンをアイテムに関する最新情報で更新し、ユーザーからの暗黙的なフィードバックに従って探索を調整します。これにより、Amazon Personalize は、既に探索されたアイテムの新しいインタラクションに基づいてアイテムの質を測定し、アイテムの探索を継続的に更新できます。これは完全な再トレーニングではありません。モデルがユーザーの行動から学習できるように、trainingModeFULL に設定した状態で、新しいソリューションバージョンを毎週トレーニングする必要があります。

2 時間ごとの頻度が不十分な場合は、それらの新しいアイテムをレコメンデーションに含めるように、trainingModeUPDATE に設定した状態で、ソリューションバージョンを手動で作成できます。Amazon Personalize では、完全にトレーニングされた最新のソリューションバージョンのみが自動的に更新され、手動で更新されたソリューションバージョンは今後自動的に更新されないことに留意してください。

自動更新要件

自動更新要件は以下のとおりです。

  • ソリューションバージョンはキャンペーンとともにデプロイする必要があります (詳細については、を参照してくださいキャンペーンの作成)。キャンペーンでは、キャンペーンでは、自動的に更新されたソリューションバージョンが自動的に使用されます。

  • ソリューションバージョンは、trainingMode setFULL(ソリューションバージョンを作成するときのデフォルトです)に設定してトレーニングする必要があります。

  • 前回の自動更新以降の新しいアイテムまたはインタラクションデータを提供する必要があります。

  • Amazon Personalize は、2020 年 11 月 17 日以降に作成したソリューションバージョンのみを自動的に更新します。

インプレッションデータの使用

ポジティブなインタラクション (クリック、視聴、または購入) のみを使用する他のレシピとは異なり、User-Personalization レシピではインプレッションデータも使用できます。インプレッションは、ユーザーが特定のアイテムを操作 (クリック、視聴、購入など) したときに表示されたアイテムのリストです。

この情報を使用して、User-Personalization レシピで作成されたソリューションは、アイテムが無視された頻度に基づいて新しいアイテムの適切性を計算し、それに応じてレコメンデーションを変更できます。詳細については、「インプレッションデータ」を参照してください。

プロパティおよびハイパーパラメータ

User-Personalization レシピには、次のプロパティがあります。

  • 名前 - aws-user-personalization

  • レシピ Amazon リソースネーム (ARN)arn:aws:personalize:::recipe/aws-user-personalization

  • アルゴリズム ARNarn:aws:personalize:::algorithm/aws-user-personalization

詳細については、「レシピの説明を表示します。」を参照してください。

以下の表では、User-Personalization レシピのハイパーパラメータを示しています。ハイパーパラメータは、モデルパフォーマンスを向上させるために調整できるアルゴリズムパラメータです。アルゴリズムのハイパーパラメータは、モデルの実行方法を制御します。特徴化のハイパーパラメータは、トレーニングで使用するデータのフィルタリング方法を制御します。ハイパーパラメータに最適な値を選択するプロセスは、ハイパーパラメータの最適化 (HPO) と呼ばれます。詳細については、「ハイパーパラメータおよび HPO」を参照してください。

このテーブルには、各ハイパーパラメータに関する以下の情報も含まれています。

  • 範囲: [下限、上限]

  • 値のタイプ: 整数、連続 (浮動小数点)、カテゴリ別 (ブール値、リスト、文字列)

  • HPO 調整可能: パラメータが HPO に参加できますか?

名前 説明
アルゴリズムのハイパーパラメータ
hidden_dimension

モデルで使用される非表示変数の数。非表示の変数は、ユーザーの購入履歴と商品統計を再作成して、ランキングスコアを生成します。インタラクションデータセットにより複雑なパターンが含まれている場合は、より多くの非表示ディメンションを指定します。使用する非表示のディメンションが多くなると、データセットが大きくなり、処理時間が長くなります。最適な値を決定するには、HPO を使用します。HPO を使用するには、CreateSolution オペレーション CreateSolutionVersion とオペレーションを呼び出すときに performHPOtrue に設定します。

デフォルト値: 149

範囲: [32, 256]

値の型: 整数

HPO 調整可能: はい

bptt

通し時間のバックプロパゲーションの手法を使用するかどうかを決定します。通し時間のバックプロパゲーションは、再帰的なニューラルネットワークベースのアルゴリズムの重みを更新する手法です。遅延報酬を早期イベントに接続するには、長期クレジットに bptt を使用します。たとえば、遅延報酬には、数回のクリック後に行われる購入を指定できます。早期イベントは、最初のクリックにすることができます。クリックなどの同じイベントタイプ内であっても、長期的な効果を考慮し、合計報酬を最大化することをお勧めします。長期的な効果を考慮するには、より大きい bptt 値を使用します。大きな bptt 値を使用するには、より大きいデータセットと長い処理時間が必要です。

デフォルト値: 32

範囲: [2, 32]

値の型: 整数

HPO 調整可能: はい

recency_mask

モデルがインタラクションデータセットの最新の人気傾向を考慮する必要があるかどうかを決定します。最新の人気トレンドには、インタラクションイベントの基盤となるパターンの突然の変化が含まれる可能性があります。最近のイベントにより多くの重みを置くモデルをトレーニングするには、recency_masktrue に設定します。過去のすべてのインタラクションを均等に重み付けするモデルをトレーニングするには、recency_maskfalse に設定します。同じ重みを使用して適切なレコメンデーションを取得するには、より大きなトレーニングデータセットが必要になる場合があります。

デフォルト値: True

範囲: True または False

値の型: ブール値

HPO 調整可能: はい

特徴化のハイパーパラメータ
min_user_history_length_percentile

モデルのトレーニングに含めるユーザー履歴の長さの最小パーセンタイル。履歴の長さ は、ユーザーに関するデータの合計量です。履歴の長さが短いある割合のユーザーを除外するには、min_user_history_length_percentile を使用します。履歴が短いユーザーは、多くの場合、ユーザーの個人的なニーズや希望ではなく、アイテムの人気に基づくパターンを表示します。それらを削除すると、データの基盤となるパターンに重点を置いてモデルをトレーニングできます。ヒストグラムまたは同様のツールを使用して、ユーザー履歴の長さを確認した後で適切な値を選択します。大部分のユーザーを保持し、エッジケースを削除する値を設定することをお勧めします。

たとえば、min_user_history_length_percentile to 0.05max_user_history_length_percentile to 0.95 を設定すると、履歴の長さが下位または上位 5% であるユーザーを除くすべてのユーザーが含まれます。

デフォルト値: 0.0

範囲: [0.0, 1.0]

値の型: 浮動小数点

HPO 調整可能: いいえ

max_user_history_length_percentile

モデルのトレーニングに含めるユーザー履歴の長さの最大パーセンタイル。履歴の長さ は、ユーザーに関するデータの合計量です。max_user_history_length_percentile を使用して、ある割合の履歴の長さが長いユーザーを除外します。これらのユーザーのデータにはノイズが含まれる傾向があるためです。たとえば、ロボットに自動化されたインタラクションの長いリストがあるとします。これらのユーザーを削除することで、トレーニングのノイズが制限されます。ヒストグラムまたは同様のツールを使用して、ユーザー履歴の長さを確認した後で適切な値を選択します。大部分のユーザーを保持し、エッジケースを削除する値を設定することをお勧めします。

たとえば、min_user_history_length_percentile to 0.05max_user_history_length_percentile to 0.95 を設定すると、履歴の長さが下位または上位 5% であるユーザーを除くすべてのユーザーが含まれます。

デフォルト値: 0.99

範囲: [0.0, 1.0]

値の型: 浮動小数点

HPO 調整可能: いいえ

アイテム探索キャンペーン設定ハイパーパラメータ
exploration_weight

インタラクションデータまたは関連性が少ないアイテムをレコメンデーションに含める頻度を決定します。値が 1.0 に近くなるほど、探索が多くなります。ゼロでは、探索は行われず、レコメンデーションは現在のデータに基づきます (関連性)。詳細については、「CampaignConfig」を参照してください。

デフォルト値: 0.3

範囲: [0.0, 1.0]

値の型: 浮動小数点

HPO 調整可能: いいえ

exploration_item_age_cut_off

Intersonalization データセットのすべてのアイテムについて、最新のインタラクションからの日数で、アイテムが存在するようになってからの最長期間を指定します。これにより、アイテムの使用期間に基づいてアイテム探索の範囲が定義されます。Amazon Personalize は、作成タイムスタンプ、または作成タイムスタンプデータがない場合はインタラクションデータに基づいてアイテムの経過時間を判断します。Amazon Personalize が商品の年齢を決定する方法の詳細については、を参照してください作成のタイムスタンプデータ

Amazon Personalize が探索中に考慮するアイテムを増やすには、より大きな値を入力します。最小値は 1 日、デフォルトは 30 日です。レコメンデーションには、指定した商品の有効期限よりも古い商品が含まれる場合があります。これは、これらのアイテムがユーザーに関連しており、探索の結果、これらのアイテムが特定されなかったことによる。

デフォルト値: 30.0

範囲: 正の浮動小数点

値の型: 浮動小数点

HPO 調整可能: いいえ

User-Personalization レシピを使用したトレーニング (コンソール)

User-Personalization レシピを使用してコンソールでレコメンデーションを生成するには、最初にレシピを使用して新しいソリューションバージョンをトレーニングします。その後、ソリューションバージョンを使用してキャンペーンをデプロイし、キャンペーンを使用してレコメンデーションを取得します。

User-Personalization レシピを使用した新しいソリューションバージョンのトレーニング (コンソール)
  1. https://console.aws.amazon.com/personalize/home で Amazon Personalize コンソールを開き、アカウントにサインインします。

  2. 新しいスキーマを使用してカスタムデータセットグループを作成し、インプレッションデータを含むデータセットをアップロードします。オプションで、CREATION_TIMESTAMP非構造化テキストメタデータ データを Items データセットに含めて、Amazon Personalize がアイテムが存在するようになってからの期間をより正確に計算し、コールドアイテムを識別できるようにします。

    データのインポートの詳細については、「ステップ 2: データの準備」を参照してください。

  3. [Dataset groups] (データセット) グループページで、インプレッションデータを含む 1 つまたは複数のデータセットを含む新しいデータセットグループを選択します。

  4. ナビゲーションペインで、[Solutions and recipes] (ソリューションとレシピ)、[Create solution] (ソリューションを作成) の順に選択します。

  5. [Create solution] (ソリューションを作成) のページの [Solution name] (ソリューション名) で、新しいソリューションの名前を入力します。

  6. [Solution type] (ソリューションタイプ) で、[Item recommendation] (アイテムのレコメンデーション) を選択して、ユーザーのアイテムのレコメンデーションを取得します。

  7. レシピ」で、を選択しますaws-user-personalization[Solution configuration] (ソリューション設定) のセクションが表示され、いくつかの設定オプションが提供されます。

  8. [Solution configuration] (ソリューション設定) で、Interactions データセットに EVENT_TYPE 列または EVENT_TYPE 列と EVENT_VALUE 列の両方がある場合は、オプションで [Event type] (イベントタイプ) と [Event value threshold] (イベント値のしきい値) のフィールドを使用して、モデルのトレーニング時に Amazon Personalize が使用するインタラクションデータを選択します。

    詳細については、「トレーニングに使用するインタラクションデータの選択」を参照してください。

  9. オプションで、ソリューションのハイパーパラメータを設定します。User-Personalization レシピのプロパティとハイパーパラメータのリストについては、「プロパティおよびハイパーパラメータ」を参照してください。

  10. [Create and train solution] (ソリューションを作成およびトレーニング) を選択して、トレーニングを開始します。[Dashboard] (ダッシュボード) のページが表示されます。

    ソリューションの詳細のページに移動して、[Solution versions] (ソリューションバージョン) のセクションでトレーニングの進捗状況を追跡できます。トレーニングが完了すると、ステータスは [Active] (アクティブ) となります。

キャンペーンの作成とレコメンデーションの取得 (コンソール)

ソリューションバージョンのステータスが [Active] (アクティブ) になると、次のように、キャンペーンを作成してレコメンデーションを取得する準備が完了します。

  1. ソリューションの詳細のページまたは [Campaigns] (キャンペーン) のページで、[Create new campaign] (新しいキャンペーンを作成) を選択します。

  2. [Create new campaign] (新しいキャンペーンを作成) ページの [Campaign details] (キャンペーンの詳細) で、次の情報を入力します。

    • Campaign name (キャンペーン名): キャンペーンの名前を入力します。ここで入力したテキストは、[Campaign] (キャンペーン) ダッシュボードと詳細のページに表示されます。

    • Solution (ソリューション): 先ほど作成したソリューションを選択します。

    • Solution version ID (ソリューションバージョン ID): 作成したソリューションバージョンの ID を選択します。

    • Minimum provisioned transactions per second (1 秒あたりの最小プロビジョンドトランザクション): Amazon Personalize がサポートしている 1 秒あたりの最小プロビジョンドトランザクションを設定します。詳細については、CreateCampaign オペレーションを参照してください。

  3. [Campaign configuration] (キャンペーン設定) で、次の情報を入力してください。

    • Exploration weight (探索の重み): 探索する量を設定します。指定する探索が多いほど、レコメンデーションには、インタラクションデータや関連性が少ないアイテムがより頻繁に含まれます。値が 1 に近くなるほど、探索が多くなります。ゼロでは、探索は行われず、レコメンデーションは現在のデータに基づきます (関連性)。

    • Exploration item age cut off (探索アイテムが存在するようになってからの期間のカットオフ): アイテム探索の範囲を定義するために、最新のインタラクションからの日数で、アイテムが存在するようになってからの最長期間を入力します。Amazon Personalize が探索中に考慮するアイテムの数を増やすには、より大きな値を入力します。

      例えば、10 と入力すると、データセット内の最新のインタラクションから 10 日間のインタラクションデータを含むアイテムのみが探索時に考慮されます。

      注記

      レコメンデーションには、この時間枠外のインタラクションデータを含まないアイテムが含まれる場合があります。これは、これらのアイテムがユーザーの興味に関連しており、それらを特定するために探索が必要ではなかったことによります。

  4. [Create campaign (キャンペーンの作成)] を選択します。

  5. キャンペーンの詳細のページで、キャンペーンのステータスが [Active] (アクティブ) の場合、キャンペーンを使用してレコメンデーションを取得し、インプレッションを記録できます。詳細については、「開始方法」の「ステップ 5: レコメンデーションを取得する」を参照してください。

    Amazon Personalize は、2 時間ごとに最新のソリューションバージョンを自動的に更新して、新しいデータを含めます。キャンペーンでは、更新されたソリューションバージョンが自動的に使用されます。詳細については、「自動更新」を参照してください。

    キャンペーンを手動で更新するには、最初に、trainingModeupdate に設定した状態で、コンソールまたは CreateSolutionVersion 操作を使用して、新しいソリューションバージョンを作成およびトレーニングします。その後、コンソールの [Campaign] (キャンペーン) ページで、または UpdateCampaign 操作を使用して、キャンペーンを手動で更新します。

    注記

    Amazon Personalize は、2020 年 11 月 17 日より前に作成したソリューションバージョンを自動的に更新しません。

User-Personalization レシピを使用したトレーニング (Python SDK)

データセットグループを作成し、インプレッションデータを含むデータセットをアップロードしたら、User-Personalization レシピを使用してソリューションをトレーニングできます。オプションで、CREATION_TIMESTAMP非構造化テキストメタデータ データを Items データセットに含めて、Amazon Personalize がアイテムが存在するようになってからの期間をより正確に計算し、コールドアイテムを識別できるようにします。データセットグループの作成とトレーニングデータのアップロードの詳細については、「データセットとスキーマ」を参照してください。

AWS SDK を使用して User-Personalization レシピでソリューションをトレーニングするには
  1. create_solution メソッドを使用して新しいソリューションを作成します。

    solution name をソリューション名に置き換えます。また、dataset group arn をデータセットグループの Amazon リソースネーム (ARN) に置き換えます。

    import boto3 personalize = boto3.client('personalize') print('Creating solution') create_solution_response = personalize.create_solution(name = 'solution name', recipeArn = 'arn:aws:personalize:::recipe/aws-user-personalization', datasetGroupArn = 'dataset group arn', ) solution_arn = create_solution_response['solutionArn'] print('solution_arn: ', solution_arn)

    aws-user-personalizationレシピのプロパティとハイパーパラメータのリストについては、「」を参照してくださいプロパティおよびハイパーパラメータ

  2. 更新されたトレーニングデータを使用して新しい solution version (ソリューションバージョン) を作成し、次のコードスニペットを使用して trainingModeFULL に設定します。solution arn をソリューションの ARN に置き換えます。

    import boto3 personalize = boto3.client('personalize') create_solution_version_response = personalize.create_solution_version(solutionArn = 'solution arn', trainingMode='FULL') new_solution_version_arn = create_solution_version_response['solutionVersionArn'] print('solution_version_arn:', new_solution_version_arn)
  3. Amazon Personalize がソリューションバージョンの作成を終了したら、次のパラメータを使用してキャンペーンを作成します。

    • 新しい campaign name と、ステップ 2 で生成された solution version arn を入力します。

    • explorationWeight アイテム探索設定ハイパーパラメータを変更して、探索する量を設定します。インタラクションデータまたは関連性が少ないアイテムは、値が 1.0 に近いほど頻繁に推奨されます。デフォルト値は 0.3 です。

    • explorationItemAgeCutOff アイテム探索設定ハイパーパラメータパラメータを変更して、アイテム探索の対象期間とする、最新のインタラクションとの関係においての最長期間 (日) を指定します。値が大きいほど、探索中に考慮されるアイテムが多くなります。

    次の Python スニペットを使用して、30 日で探索をカットオフする探索に重点を置いた新しいキャンペーンを作成します。キャンペーンの作成には通常数分かかります。ただし、1 時間以上かかる場合もあります。

    import boto3 personalize = boto3.client('personalize') create_campaign_response = personalize.create_campaign( name = 'campaign name', solutionVersionArn = 'solution version arn', minProvisionedTPS = 1, campaignConfig = {"itemExplorationConfig": {"explorationWeight": "0.3", "explorationItemAgeCutOff": "30"}} ) campaign_arn = create_campaign_response['campaignArn'] print('campaign_arn:', campaign_arn)

    User-Personalization を使用すると、Amazon Personalize は、2 時間ごとにソリューションバージョンを自動的に更新して、新しいデータを含めます。キャンペーンでは、更新されたソリューションバージョンが自動的に使用されます。詳細については、「自動更新」を参照してください。

    キャンペーンを手動で更新するには、最初に、trainingModeupdate に設定した状態で、コンソールまたは CreateSolutionVersion 操作を使用して、新しいソリューションバージョンを作成およびトレーニングします。その後、コンソールの [Campaign] (キャンペーン) ページで、または UpdateCampaign 操作を使用して、キャンペーンを手動で更新します。

    注記

    Amazon Personalize は、2020 年 11 月 17 日より前に作成したソリューションバージョンを自動的に更新しません。

レコメンデーションの取得とインプレッションの記録 (SDK for Python (Boto3))

キャンペーンが作成されると、それを使用してユーザーのレコメンデーションを取得し、インプレッションを記録できます。AWS SDK を使用してバッチレコメンデーションを取得する方法については、「バッチ推論ジョブの作成 (AWS SDK)」を参照してください。

レコメンデーションを取得してインプレッションを記録するには
  1. get_recommendations メソッドを呼び出します。campaign arn を新しいキャンペーンの ARN に変更します。また、user id をユーザーの userId に変更します。

    import boto3 rec_response = personalize_runtime.get_recommendations(campaignArn = 'campaign arn', userId = 'user id') print(rec_response['recommendationId'])
  2. PutEventsリクエストを送信するための新しいイベントトラッカーを作成します。event tracker name をイベントトラッカーの名前に置き換えます。また、dataset group arn をデータセットグループの ARN に置き換えます。

    import boto3 personalize = boto3.client('personalize') event_tracker_response = personalize.create_event_tracker( name = 'event tracker name', datasetGroupArn = 'dataset group arn' ) event_tracker_arn = event_tracker_response['eventTrackerArn'] event_tracking_id = event_tracker_response['trackingId'] print('eventTrackerArn:{},\n eventTrackingId:{}'.format(event_tracker_arn, event_tracking_id))
  3. ステップ 1 の recommendationId とステップ 2 の event tracking id を使用して、新しい PutEvents リクエストを作成します。このリクエストは、ユーザーのセッションからの新しいインプレッションデータをログに記録します。user id をユーザーの ID に変更します。

    import boto3 personalize_events.put_events( trackingId = 'event tracking id', userId= 'user id', sessionId = '1', eventList = [{ 'sentAt': datetime.now().timestamp(), 'eventType' : 'click', 'itemId' : rec_response['itemList'][0]['itemId'], 'recommendationId': rec_response['recommendationId'], 'impression': [item['itemId'] for item in rec_response['itemList']], }] )

サンプル Jupyter ノートブック

User-Personalization レシピの使用方法を示すサンプル Jupyter ノートブックについては、「探索での User Personalization」を参照してください。