Skip to content

Amazon Personalize

Amazon Personalizeは、あなた自身の一日中のAmazonマシンラーニングレコメンドシステムを持つようなものです。20年以上にわたるレコメンデーションの経験に基づき、Amazon Personalizeは、リアルタイムでパーソナライズされた商品やコンテンツのレコメンデーション、およびターゲットを絞ったマーケティングプロモーションを可能にすることで、顧客エンゲージメントを向上させることができる。

この統合は Amazon Personalize によって管理されます。

統合について

Amazon Personalizeは、機械学習とあなたが定義したアルゴリズムを使用して、あなたのウェブサイトやアプリケーションに高品質のレコメンデーションを出力するモデルのトレーニングを支援する。これらのモデルは、ユーザーの過去の行動に基づいて推薦リストを作成し、関連性によってアイテムを並べ替え、類似性に基づいて他のアイテムを推薦することを可能にする。Amazon Personalize APIから取得したリストは、Braze Connected ContentでパーソナライズされたBrazeのレコメンデーションキャンペーンを実行するために使用できる。Amazon Personalizeと統合することで、顧客はモデルのトレーニングに使用するパラメーターを自由にコントロールし、アルゴリズムの出力を最適化するオプションのビジネス目標を定義することができる。

このリファレンス記事は、Amazon Personalizeが提供するユースケース、Amazon Personalizeが扱うデータ、サービスの設定方法、Brazeとの統合方法を理解するのに役立つ。

前提条件

ユースケース

モデルを作成する前に、この統合のユースケースを決定しなければならない。一般的な使用例には以下のようなものがある:

  • ユーザーの過去のインタラクションに基づいてアイテムを推薦し、ユーザーに真にパーソナライズされたエクスペリエンスを提供する。
  • 各ユーザーに合わせたアイテムや検索結果のリストを提供し、ユーザーとの関連性によってアイテムを表示することで、エンゲージメントを高める。
  • 似たようなアイテムのレコメンデーションを見つけ、ユーザーが新しいものを発見するのを助ける。

以下のガイドでは、ユーザー個別のおすすめレシピに焦点を当てる。

データセット

Amazon Personalizeのレコメンデーション・モデルを使い始めるには、3種類のデータセットが必要だ:

  • 相互作用
    • ユーザーとアイテムの間のインタラクションの履歴を保存します
    • USER_IDITEM_IDEVENT_TYPETIMESTAMP の値が必要です。オプションでイベントに関するメタデータを受け入れます
  • ユーザー
    • ユーザーに関するメタデータを保存する
    • USER_ID の値と、性別、年齢、ロイヤルティメンバーシップなどのメタデータフィールド (文字列または数値) のうち1つ以上が必要です
  • アイテム
    • アイテムに関するメタデータを保存する
    • ITEM_ID と、アイテムを記述する1つのメタデータフィールド (テキスト、カテゴリ、または数値) が必要です

ユーザーレコメンデーションレシピの場合、25人以上の一意のユーザー (各ユーザーに2つ以上のインタラクションがある) からの1000ポイント以上のインタラクションデータを含むインタラクションデータセットを提供する必要があります。これらのデータセットは、S3に保存されたCSVファイルを使って一括アップロードすることも、APIを使って段階的にアップロードすることもできる。

モデルを作る

ステップ1:トレーニング

データセットがインポートされたら、ソリューションを作成することができる。ソリューションは、Amazon Personalizeのレシピ(アルゴリズム)の1つを使用してモデルをトレーニングする。Braze の場合 USER_PERSONALIZATION レシピを使用します。ソリューションをトレーニングすることで、ソリューション・バージョン(トレーニング済みモデル)が作成され、モデルのパフォーマンス・メトリクスに基づいて評価することができる。

Amazon Personalizeでは、モデルがトレーニングに使用するハイパーパラメーターを調整することができる。以下に例を示します。

  • Amazon Personalizeコンソールにある “User history length percentile “パラメーターで、トレーニングに含めるユーザー履歴のパーセンタイルを調整できる:

    最小最大ユーザープロファイル設定
    • min_user_history_length_percentile: 履歴の長さが非常に短い一定割合のユーザーを除外します。これは、人気の高いアイテムを排除し、より深い基盤となるパターンに基づいてレコメンデーションを作成する際に役立ちます。
    • max_user_history_length_percentile: トレーニングの際に考慮すべきである、履歴の長さが非常に長いユーザーの割合を調整します。

隠れ次元の数は、複雑なデータセットのより複雑なパターンを検出するのに役立ちます。一方、通時的誤差逆伝搬法 (BPTT) は、一連のイベントが発生し、その結果価値の高い行動がもたらされた後で、早期のイベントに対するリワードを調整します。

さらに、Amazon Personalizeは、異なる値を持つ複数のバージョンのソリューションを同時に実行することで、ハイパーパラメータの自動チューニングを提供する。チューニングを使用するには、ソリューションの作成時に「HPO を実行」をオンにする。

ステップ2:評価と比較

ソリューションのトレーニングが終われば、それを評価し、異なるバージョンを比較する準備が整う。各ソリューションのバージョンは、計算されたメトリクスを表示する。利用可能な測定基準には、以下のようなものがある:

  • 割引累積利得を正規化する:項目の推奨順序を実際の項目リストと比較し、各項目にリスト内の位置に対応する重みを与える。
  • 精度@k:適切に推奨された項目の量を、推奨された全項目の量で割ったもの。k は項目の数である。
  • 平均相互ランク:最初の、最も高いランクの推薦に焦点を当て、最初にマッチした推薦が表示される前に、推薦されたアイテムがいくつ表示されたかを計算する。
  • Coverage: データセット内の一意のアイテムの総数に対する、一意の推奨されるアイテムの割合

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

満足のいくソリューション・バージョンを作成したら、次はその推奨事項を使用する番だ。レコメンデーションにアクセスするには、次の2つの方法があります。

  1. リアルタイム・キャンペーン
    キャンペーンとは、定義された最小トランザクション・スループットを持つ、展開されたソリューション・バージョンのことである。トランザクションとは、レコメンデーション出力を得るための1回の API 呼び出しです。TPS (1秒あたりのトランザクション数) として定義され、最小値は1です。負荷が増加した場合、キャンペーンはリソースをスケーリングしますが、最小値を下回ることはありません。コンソール、AWS CLI、またはコードでの AWS SDK で、レコメンデーションをクエリできます。

  2. バッチジョブ
    バッチジョブはS3バケットにレコメンデーションをエクスポートする。このジョブは、レコメンデーションをエクスポートするユーザー ID のリストを含む JSON ファイルを入力として取ります。正しい権限と出力先を指定したら、ジョブを実行できます。実行時間は、データセットのサイズと推奨リストの長さに依存する。

フィルター

フィルターによって、アイテムのID、イベントタイプ、またはメタデータに基づいてアイテムを除外することで、レコメンデーション出力を調整することができる。また、年齢やロイヤリティ・メンバーシップのステータスなど、メタデータに基づいてユーザーをフィルタリングすることもできる。フィルターは、ユーザーがすでにやり取りしたアイテムが推奨されることを防ぐ場合に役立ちます。

結果をBrazeと統合する

作成したモデルとレコメンデーションキャンペーンがあれば、コンテンツカードとコネクテッドコンテンツを使って、ユーザーに対してBrazeキャンペーンを実施する準備が整う。 Brazeキャンペーンを実行する前に、APIを通じてこれらのレコメンデーションを提供できるサービスを作成する必要がある。ワークショップ記事のステップ3に従って、AWS サービスを使用してサービスをデプロイできます。レコメンデーションを提供する独自の独立したバックエンドサービスをデプロイすることもできます。

コンテンツカードキャンペーンのユースケース

リストの最初の推奨アイテムを使用してコンテンツカードキャンペーンを実行してみます。

次の例では、 user_id パラメーターを指定した GET http://<service-endpoint.com>/recommendations?user_id=user123 エンドポイントをクエリします。これにより、推奨アイテムのリストが返されます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[
  {
    "id": "abc123",
    "url": "http://productpage.com/product/abc123",
    "name": "First Item",
    "price": 39.99,
    "image": "http://pp.cdn.com/abvh3321pjb1j"
  },
  {
    "id": "xyz987",
    "url": "http://productpage.com/product/xyz987",
    "name": "Great Item",
    "price": 19.99,
    "image": "http://pp.cdn.com/234bjl1gioj1b2b"
  },
  ...
]

Braze ダッシュボードで、新しいコンテンツカードキャンペーンを作成します。メッセージ・テキスト・フィールドに、APIに問い合わせ、レスポンスをrecommendations 変数に保存するConnected Content Liquidブロックを作成する:

1
{% connected_content https:/<service-endpoint.com>/recommendations?user_id={{${user_id}}} :save recommendations %}

その後、結果として得られる配列の最初のアイテムを参照し、その内容をユーザーに対して表示できます。

1
2
3
This seems like a great fit for you:
{% recommendations[0].name %}
{% recommendations[0].price %}

タイトル、画像、URLのリンクを含めると、コンテンツカードの完成形はこのようになる:

コネクテッド・コンテンツがメッセージ本文と「画像を追加」フィールドに追加されたキャンペーンの画像。この画像は、「ウェブURLへのリダイレクト」フィールドに追加されたコネクテッド・コンテンツ・ロジックも示しており、ユーザーをレコメンデーションURLにリンクさせている。

New Stuff!