ユーザー・パーソナライゼーションレシピ - Amazon Personalize

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

ユーザー・パーソナライゼーションレシピ

ユーザーパーソナライゼーション(aws-ユーザーパーソナライゼーション)レシピは、すべてのパーソナライズされたレコメンデーションシナリオ向けに最適化されています これは、やり取り、製品、ユーザーのデータセットに基づいて、ユーザーが操作するアイテムを予測します。アイテムを推奨するときは、アイテムの自動探索を使用します。

Amazon Personalize は、自動検索機能を使用して、さまざまな商品レコメンデーションを自動的にテストし、ユーザーがこれらのおすすめ商品とどのようにやり取りするかを学習し、エンゲージメントとコンバージョンを向上させる商品レコメンデーションを高めます。これにより、急速に変化するカタログがある場合、またはニュース記事やプロモーションなどの新しいアイテムがユーザーにとってより関連性の高い場合に、アイテムの検出とエンゲージメントが向上します。

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

自動更新

ユーザーパーソナライゼーションを使用すると、Amazon Personalize は最新のモデル(ソリューションバージョン)を 2 時間ごとに自動的に更新し、新しいデータを含めます。新しいソリューションバージョンを作成する必要はありません。更新ごとに、Amazon Personalize は最新の商品情報でソリューションバージョンを更新し、ユーザーからの暗黙のフィードバックに従って調査を調整します。これにより、Amazon Personalize、すでに調査済みの商品に対する新しいインタラクションに基づいて商品の品質を評価し、商品の調査を継続的に更新することができます。

注記

自動更新の費用はかかりません。

要件の更新

Amazon Personalize、トレーニングを受けた最新のソリューションバージョンのみを自動的に更新します。trainingModeをに設定します。FULLに設定され、最後の自動更新以降に新しいアイテムまたはインタラクションデータを指定した場合に限ります。新しいソリューションバージョンのトレーニングを受けた場合、Amazon Personalize は、キャンペーンにデプロイした古いソリューションバージョンを自動的に更新しません。データセットを削除した場合も、更新は行われません。

注記

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

詳細については、「ステップ 1: レシピの選択」を参照してください。

以下の表では、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

最新のインタラクション以降の時間枠に基づいて、探索するアイテムを決定します。アイテム探索の範囲を定義するために、アイテムの最大経過日数(最新の対話からの日数)を指定します。値が大きいほど、探索中に考慮される項目が多くなります。詳細については、「」を参照してください。 CampaignConfig

デフォルト値: 30.0

範囲: 正の浮動小数点

値の型: 浮動小数点

HPO いいえ

ユーザーパーソナライゼーションレシピを使用したトレーニング (コンソール)

User-Personalization レシピを使用してコンソールでレコメンデーションを生成するには、まずレシピを使用して新しいソリューションバージョンをトレーニングします。次に、ソリューションバージョンを使用してキャンペーンを展開し、そのキャンペーンを使用して推奨事項を取得します。

ユーザーパーソナライゼーションレシピを使用した新しいソリューションバージョンのトレーニング (コンソール)

  1. Amazon Personalize コンソール () を開きます。https://console.aws.amazon.com/personalize/homeアカウントにログインします。

  2. 新しいスキーマでデータセットグループを作成し、インプレッション数データを含むデータセットをアップロードします。オプションでTIMESTAMPおよび非構造化テキストのメタデータデータを使用して、Amazon Personalize が商品の年齢をより正確に計算し、コールドアイテムを識別できるようにします。

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

  3. リポジトリの []データセットグループページで、データセットを含む新しいデータセットグループを選択します。

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

  5. リポジトリの []ソリューションを作成します。[] ページで、ソリューション名に、新しいソリューションの名前を入力します。

  6. を使用する場合レシピ] で、aws ユーザーのパーソナライズ。-ソリューションの構成セクションが表示され、いくつかの設定オプションが表示されます。

  7. Eclipseソリューションの構成を使用する場合、インタラクションデータセットに EVENT_TYPE 列または両方の EVENT_TYPE 列と EVENT_VALUE 列がある場合は、オプションでイベントタイプおよびイベント値のしきい値フィールドを使用して、Amazon Personalize がモデルをトレーニングするときに使用するインタラクションデータを選択します。

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

  8. 必要に応じて、ソリューションのハイパーパラメータを構成します。ユーザーパーソナライゼーションレシピのプロパティとハイパーパラメータのリストについては、プロパティとハイパーパラメータ

  9. [Next] を選択します。設定を確認するには、ソリューションバージョンの作成ページで.

  10. 選択完了ソリューションバージョンを作成します。

    ソリューションの詳細ページでは、トレーニングの進行状況をソリューションのバージョンセクションで設定します。トレーニングが完了すると、ステータスが [] に変わります。アクティブ

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

ソリューションのバージョンのステータスがアクティブキャンペーンを作成し、次のとおすすめの情報を入手できます。

  1. ソリューションの詳細ページまたはキャンペーンページで [] を選択します。キャンペーンの作成

  2. リポジトリの []キャンペーンの作成ページ, 用キャンペーンの詳細に、次の情報を入力します。

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

    • 解決策: 先ほど作成したソリューションを選択します。

    • ソリューションバージョン ID: 先ほど作成したソリューションバージョンの ID を選択します。

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

  3. を使用する場合キャンペーンの設定に、次の情報を入力します。

    • 探査重量: 探索する量を設定します。指定した探索が多いほど、対話データの少ないアイテムや関連性の少ないアイテムがレコメンデーションに含まれます。値が 1 に近いほど、探索量が増えます。ゼロの場合、探索は行わず、推奨事項は現在のデータ(関連性)に基づきます。

    • 探査アイテムの年齢切り落ち: 品目探索の範囲を定義するために、品目の最大経過日数(最新の相互作用からの日数)を入力します。Amazon Personalize が検討する商品の数を増やすには、大きな値を入力します。

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

      注記

      レコメンデーションには、この期間外からのインタラクションデータがないアイテムが含まれる場合があります。これは、これらの項目がユーザーの興味に関連し、それらを識別するために探索する必要がないためです。

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

  5. キャンペーンの詳細ページで、キャンペーンのステータスがアクティブキャンペーンを使用して、レコメンデーションを取得およびインプレッションを記録できます。詳細については、「」を参照してください。ステップ 4: 推奨事項の取得「はじめに」

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

    キャンペーンを手動で更新するには、まずコンソールまたは CreateSolutionVersion オペレーション、trainingModeをに設定します。update。その後、キャンペーンをキャンペーンコンソールの [] ページを使用するか、[] の UpdateCampaign オペレーション.

    注記

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

ユーザーパーソナライゼーションレシピを使用したトレーニング (Python SDK)

データセットグループを作成し、インプレッション数データを含むデータセットをアップロードしたら、User-Personalization レシピを使用してソリューションをトレーニングできます。オプションでTIMESTAMPおよび非構造化テキストのメタデータデータを使用して、Amazon Personalize が商品の年齢をより正確に計算し、コールドアイテムを識別できるようにします。データセットグループの作成とトレーニングデータのアップロードの詳細については、」データセットとスキーマ

[ユーザーパーソナライゼーション] レシピを使用してソリューションをトレーニングするには、AWSSDK

  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. 新しい を作成するソリューションバージョンを更新したトレーニングデータを更新し、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 namesolution version arnステップ 2 で生成されました。

    • の変更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)

    ユーザーパーソナライゼーションを使用すると、Amazon Personalize は 2 時間ごとにソリューションバージョンを自動的に更新し、新しいデータを追加します。キャンペーンでは、更新されたソリューションバージョンが自動的に使用されます。詳細については、「」を参照してください。自動更新

    キャンペーンを手動で更新するには、まずコンソールまたは CreateSolutionVersion オペレーション、trainingModeをに設定します。update。その後、キャンペーンをキャンペーンコンソールの [] ページを使用するか、[] の UpdateCampaign オペレーション.

    注記

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

レコメンデーションを取得および記録する (SDK for Python (Boto3)

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

レコメンデーションを取得するには、インプレッション

  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. を使用するrecommendationIdステップ 1 からのevent tracking idをステップ2から作成して、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 ノートブック

ユーザーPersonalization レシピの使用方法を示すサンプル Jupyter ノートブックについては、」探索によるユーザーのパーソナライゼーション