Amazon Personalize を使ったパーソナライズレコメンドのはじめ方

Amazon Personalize は、AWS が提供するフルマネージドの機械学習サービスで、ユーザー(顧客や会員など)とアイテム(商品やコンテンツなど)とのやり取りデータ(インタラクション)をもとに、パーソナライズされたレコメンデーションを実現するサービスです。
ECサイトの「あなたにおすすめの商品」、動画配信サービスの「あなたにおすすめのコンテンツ」、あるいは転職・求人サイトでの「あなたに合う求人情報」といった仕組みを、比較的短期間で構築できます。

この記事では、Amazon Personalize を利用する際に必要となるデータや、そのデータをどのように用意すればよいかを紹介します。たとえば以下のようなケースにおけるレコメンドにも応用できます。

  • ECサイトでの「ユーザーに合う商品おすすめ機能」
  • 動画配信サービスにおける「ユーザーの好みに合ったコンテンツ推薦」
  • 求人サービスでの「求職者に合う案件マッチング」
  • 記事やブログプラットフォームでの「関連度の高い記事のレコメンド」

1. 必要なデータの種類

Amazon Personalize では、大きく分けて以下の 3種類のデータ を取り扱います。

  1. インタラクションデータ (Interactions)
  2. ユーザーデータ (Users)
  3. アイテムデータ (Items)

まず必須となるのは インタラクションデータ です。ここに、必要に応じて ユーザーデータアイテムデータ を加えることで、より高度な推定や「コールドスタート」(新しいユーザーやアイテムへの対応)が可能になります。

1.1 インタラクションデータ (Interactions)

目的

  • ユーザーがアイテムに対して「どのようなアクションを起こしたか」の履歴を表す。
  • Amazon Personalize の学習で最も重要なデータ。

  • ECサイトで「ユーザーが商品Aを閲覧した」「商品Bを購入した」
  • 動画配信サービスで「ユーザーが動画Cを再生した」「動画Dを高評価した」
  • 求人サービスで「求職者が案件Xをクリックした」「応募した」「お気に入りに登録した」など

Amazon Personalize では基本的に以下の項目を管理します。

  • user_id: ユーザーを一意に表すID
  • item_id: アイテムを一意に表すID
  • event_type: ユーザーが起こしたイベントの種類(閲覧(view)、購入(purchase)、お気に入り(like) など)
  • timestamp: イベントが発生した時刻(UNIXタイムスタンプで管理)
  • event_value: スコアや評価値などの数値データ(任意)

インタラクションデータのサンプル (CSV形式)

user_id,item_id,event_type,event_value,timestamp
user_001,product_1001,view,,1674464523
user_001,product_1001,purchase,,1674464580
user_002,product_1001,view,,1674464900
user_002,product_1002,view,,1674465000
user_003,product_1003,like,5,1674465100
...

1.2 ユーザーデータ (Users)

目的

  • 各ユーザーの補足情報(属性・好み・特徴など)を取り込み、推定精度を高める。
  • 新規ユーザー(まだインタラクション実績が少ない)のレコメンド性能を向上させる(コールドスタート対策)。

  • 性別、年齢、所在地、趣味、会員ランク など
  • 業種・スキル(求人サイトの場合)
  • 視聴ジャンルの好み(動画配信の場合)
  • ペットの有無、家族構成(興味に関連する商品をレコメンドするECサイトの場合)

ユーザーデータのサンプル (CSV形式)

user_id,age,location,interests
user_001,32,"Tokyo","music,tech"
user_002,27,"Remote","movies,fitness"
user_003,22,"Osaka","education,books"
...

カラムはユースケースに合わせて自由に拡張可能です。たとえばスキルや経験年数などを入れてもOKです。


1.3 アイテムデータ (Items)

目的

  • 各アイテムの補足情報を取り込み、推定精度を高める。
  • 新規アイテム(まだインタラクションが少ない)へのレコメンド品質を向上させる(コールドスタート対策)。

  • 商品カテゴリ、ブランド、価格帯(ECサイトの場合)
  • 動画のジャンル、出演者、公開年(動画配信の場合)
  • 求人案件の勤務地、必要スキル、契約形態(求人サイトの場合)

アイテムデータのサンプル (CSV形式)

item_id,category,price,brand
product_1001,"Electronics",15000,"BrandA"
product_1002,"Books",1200,"BrandB"
product_1003,"Health",3000,"BrandC"
...

こちらも同様にプロジェクトに合わせ、必要な属性情報を自由に拡張してください。


2. サンプルデータの作成イメージ

Amazon Personalize を試す際は、まず CSV ファイル でこれらのデータを用意し、Amazon S3 にアップロードしたうえでインポートするのが一般的です。
PoC(概念実証)やテストであれば、少量のサンプルデータを用意するだけでも学習を試せます。

例:(PoC用の小規模サンプル)

  • ユーザー:10名ほど
  • アイテム:20件ほど
  • インタラクション履歴:数十〜数百件程度

サンプルファイル例

  • interactions.csvuser_id,item_id,event_type,timestamp user_001,product_1001,view,1674464000 user_001,product_1001,purchase,1674464500 user_002,product_1002,view,1674464600 user_003,product_1001,like,1674464700 ...
  • users.csvuser_id,age,location,interests user_001,32,"Tokyo","music,tech" user_002,27,"Remote","movies,fitness" user_003,22,"Osaka","education,books" ...
  • items.csvitem_id,category,price product_1001,"Electronics",15000 product_1002,"Books",1200 product_1003,"Health",3000 ...

3. 他に必要な準備や注意点

  1. S3 バケットの準備
    • 上記 CSVファイルを格納するための AWS S3 バケットを用意します。
  2. Amazon Personalize の設定
    • Dataset Group を作成し、Interactions / Users / Items に対応する Schema を定義します。
    • その後、S3 上の CSV を指定してデータをインポートします。
  3. レシピ(アルゴリズム)の選択
    • USER_PERSONALIZATION, RELATED_ITEMS, PERSONALIZED_RANKING など、ユースケースに応じたレシピを選びます。
    • たとえば「ユーザーごとにおすすめのアイテムを出す」なら USER_PERSONALIZATION
    • 「あるアイテムに関連するアイテムを出す」なら RELATED_ITEMS などを検討します。
  4. コールドスタートへの対応
    • 新規ユーザーや新規アイテムが増える場合は、ユーザーデータアイテムデータ を活用することで、インタラクションが少なくてもある程度の推定が可能になります。
  5. リアルタイムイベントの送信 (PutEvents)
    • 運用環境では、ユーザーが閲覧や購入などのアクションをした際に、リアルタイムで Amazon Personalize にイベント送信することで、最新の行動を反映したレコメンドが可能になります。
    • 大量のイベントをバッチでまとめて取り込む方式との比較は、システム要件に合わせて検討します。
  6. 推定結果の利用
    • 学習モデルが作成できたら、GetRecommendationsGetPersonalizedRanking API を呼び出すことで、パーソナライズされたランキングや候補リストを取得し、フロントエンドや他システムで活用します。

4. まとめ

  • Amazon Personalize を使えば、ユーザーとアイテムの インタラクションデータ を活用してパーソナライズされたレコメンドを簡単に実装できます。
  • ユーザーデータアイテムデータ を併用することで、より高精度のレコメンドや新規ユーザー/アイテムへの対応(コールドスタート)も可能です。
  • PoC であれば、少量のデータを CSV で作成し、S3 にアップロードして学習を試す方法がおすすめです。
  • 運用を目指すなら、リアルタイムイベント送信や定期的なデータ更新などのワークフロー設計も重要になります。

はじめて Amazon Personalize を使う場合、まずは Interactions, Users, Items の 3 種類のデータを準備し、実際に動かしてみるところからスタートしてみてください。小さなサンプルでも実際にレコメンド結果が返ってくると、活用イメージが具体的に湧いてきます。ぜひ試してみてください!


この記事が、Amazon Personalize の導入やデータ準備の際のヒントになれば幸いです。
実際に運用する際には、ビジネス要件やシステム構成に合わせて、データ設計やイベント送信の仕組みを最適化していきましょう。

(参考リンク)

  • Amazon Personalize 公式ドキュメント
  • AWS Machine Learning Blog: Amazon Personalize 関連の記事