Amazon Personalize は、AWS が提供するフルマネージドの機械学習サービスで、ユーザー(顧客や会員など)とアイテム(商品やコンテンツなど)とのやり取りデータ(インタラクション)をもとに、パーソナライズされたレコメンデーションを実現するサービスです。
ECサイトの「あなたにおすすめの商品」、動画配信サービスの「あなたにおすすめのコンテンツ」、あるいは転職・求人サイトでの「あなたに合う求人情報」といった仕組みを、比較的短期間で構築できます。
この記事では、Amazon Personalize を利用する際に必要となるデータや、そのデータをどのように用意すればよいかを紹介します。たとえば以下のようなケースにおけるレコメンドにも応用できます。
- ECサイトでの「ユーザーに合う商品おすすめ機能」
- 動画配信サービスにおける「ユーザーの好みに合ったコンテンツ推薦」
- 求人サービスでの「求職者に合う案件マッチング」
- 記事やブログプラットフォームでの「関連度の高い記事のレコメンド」
1. 必要なデータの種類
Amazon Personalize では、大きく分けて以下の 3種類のデータ を取り扱います。
- インタラクションデータ (Interactions)
- ユーザーデータ (Users)
- アイテムデータ (Items)
まず必須となるのは インタラクションデータ です。ここに、必要に応じて ユーザーデータ と アイテムデータ を加えることで、より高度な推定や「コールドスタート」(新しいユーザーやアイテムへの対応)が可能になります。
1.1 インタラクションデータ (Interactions)
目的
- ユーザーがアイテムに対して「どのようなアクションを起こしたか」の履歴を表す。
- Amazon Personalize の学習で最も重要なデータ。
例
- ECサイトで「ユーザーが商品Aを閲覧した」「商品Bを購入した」
- 動画配信サービスで「ユーザーが動画Cを再生した」「動画Dを高評価した」
- 求人サービスで「求職者が案件Xをクリックした」「応募した」「お気に入りに登録した」など
Amazon Personalize では基本的に以下の項目を管理します。
user_id
: ユーザーを一意に表すIDitem_id
: アイテムを一意に表すIDevent_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.csv
user_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.csv
user_id,age,location,interests user_001,32,"Tokyo","music,tech" user_002,27,"Remote","movies,fitness" user_003,22,"Osaka","education,books" ...
- items.csv
item_id,category,price product_1001,"Electronics",15000 product_1002,"Books",1200 product_1003,"Health",3000 ...
3. 他に必要な準備や注意点
- S3 バケットの準備
- 上記 CSVファイルを格納するための AWS S3 バケットを用意します。
- Amazon Personalize の設定
- Dataset Group を作成し、Interactions / Users / Items に対応する Schema を定義します。
- その後、S3 上の CSV を指定してデータをインポートします。
- レシピ(アルゴリズム)の選択
USER_PERSONALIZATION
,RELATED_ITEMS
,PERSONALIZED_RANKING
など、ユースケースに応じたレシピを選びます。- たとえば「ユーザーごとにおすすめのアイテムを出す」なら USER_PERSONALIZATION。
- 「あるアイテムに関連するアイテムを出す」なら RELATED_ITEMS などを検討します。
- コールドスタートへの対応
- 新規ユーザーや新規アイテムが増える場合は、ユーザーデータ や アイテムデータ を活用することで、インタラクションが少なくてもある程度の推定が可能になります。
- リアルタイムイベントの送信 (PutEvents)
- 運用環境では、ユーザーが閲覧や購入などのアクションをした際に、リアルタイムで Amazon Personalize にイベント送信することで、最新の行動を反映したレコメンドが可能になります。
- 大量のイベントをバッチでまとめて取り込む方式との比較は、システム要件に合わせて検討します。
- 推定結果の利用
- 学習モデルが作成できたら、GetRecommendations や GetPersonalizedRanking API を呼び出すことで、パーソナライズされたランキングや候補リストを取得し、フロントエンドや他システムで活用します。
4. まとめ
- Amazon Personalize を使えば、ユーザーとアイテムの インタラクションデータ を活用してパーソナライズされたレコメンドを簡単に実装できます。
- ユーザーデータ と アイテムデータ を併用することで、より高精度のレコメンドや新規ユーザー/アイテムへの対応(コールドスタート)も可能です。
- PoC であれば、少量のデータを CSV で作成し、S3 にアップロードして学習を試す方法がおすすめです。
- 運用を目指すなら、リアルタイムイベント送信や定期的なデータ更新などのワークフロー設計も重要になります。
はじめて Amazon Personalize を使う場合、まずは Interactions, Users, Items の 3 種類のデータを準備し、実際に動かしてみるところからスタートしてみてください。小さなサンプルでも実際にレコメンド結果が返ってくると、活用イメージが具体的に湧いてきます。ぜひ試してみてください!
この記事が、Amazon Personalize の導入やデータ準備の際のヒントになれば幸いです。
実際に運用する際には、ビジネス要件やシステム構成に合わせて、データ設計やイベント送信の仕組みを最適化していきましょう。
(参考リンク)
- Amazon Personalize 公式ドキュメント
- AWS Machine Learning Blog: Amazon Personalize 関連の記事