本記事の概要
先日、レコメンド機能を実現するためにAmazon Personalizeの導入を検討したのですが、全体像を掴むのに少々苦労したので、【概要編】と【検証編】に分けてまとめてみようと思います!
(もしかすると正確な説明ではない部分があるかもしれないので公式ドキュメントや他の方の記事も参考にしつつ眺めていただけると助かりますm(_ _)m)
Amazon Personalizeとは
<🧠>機械学習を活用したパーソナライズレコメンデーションサービスです。各ユーザーに最適化されたおすすめアイテムを提供したりできます。基本的な協調フィルタリングの考え方に加えて、深層学習を利用した高度なアルゴリズムを使っています。
Amazon Personalize(アプリケーションにリアルタイムの推奨を構築する)| AWS
Amazon Personalizeを理解する上で、協調フィルタリングについてはある程度理解しておいた方がいいと思います。個人的にこちらの記事がわかりやすかったのでよければご参照ください。
https://zenn.dev/datasciencekun/articles/33d3be4c4ce4ea
Amazon Personalizeの全体像
Amazon Personalizeの全体像を理解する上で押さえておきたい用語や概念について説明していきます。
大まかな利用手順
まず、Amazon Personalizeを利用するざっくりとした流れは以下のようになります。
- データを用意してアップロード
- 分析・学習させソリューションを作成
- ソリューションを元に推論結果を算出
この流れを念頭に置いた上で用語について解説していきます。
1. データセットグループ
データセットグループはデータをアップロードしてまとめておく場所です。
ドメイン
データセットグループを作成する際にドメインを選択します。どのようなビジネスドメインでAmazon Personalizeを利用するかによって、選択が変わってきます。
ドメインデータセットグループについては、各ドメインに合わせて最適化されているため、カスタムデータセットグループに比べて簡単にリアルタイム推論を実現でき、チューニングをする必要もないようです。
データの種類
ほとんどのユースケースでは、Amazon Personalize は主にアイテムインタラクションデータに基づいてレコメンデーションを生成します
と記載があるように、インタラクションデータが最も重要視されるデータとなります。
その他に、アクションデータなどもありますが詳しくは以下ドキュメントをご参照ください。
https://docs.aws.amazon.com/ja_jp/personalize/latest/dg/datasets.html
2. ソリューション
ソリューションは具体的に捉えづらいのですが、レコメンドシステム全体のことだと理解して貰えばいいかなと思います。データを学習し、レシピに沿ってレコメンドを推論するシステム全体のことです。
レシピ
ソリューションを作成するにはレシピが必要になります。レシピとは、ソリューションの根幹となるアルゴリズムのことです。よく使用されるであろうレシピを2つだけ紹介します。
ユーザー毎にアイテムをおすすめ順に並び替え
その他のレシピや詳しい情報についてはこちらをご覧ください。
https://docs.aws.amazon.com/personalize/latest/dg/working-with-predefined-recipes.html
ソリューションバージョン
ソリューションバージョンは、設定したソリューションを元に作成される具体的なレコメンドモデルのバージョンです。データを更新し再度ソリューションをトレーニングするとバージョンが増えていきます。
3. 推論
推論タイプ
ソリューションバージョンを基に推論結果を算出するわけですが、推論タイプは2種類存在します。リアルタイム推論とバッチ推論です。
キャンペーン(リアルタイム推論API)
作成されたソリューションバージョンを元に、**キャンペーン(リアルタイム推論API)**を作成します。
例えば、ユーザーIDを渡してリクエストを送ると、そのユーザーにパーソナライズされたレコメンドアイテムが取得できます。
バッチ推論ジョブ
バッチ推論を行うにはバッチ推論ジョブを作成し、入力データなどを設定する必要があります。入力データは、推論の対象となるユーザーやアイテムをJSON形式で記述しS3に置いておきます。
バッチ推論を実行すると、S3に推論結果がJSONファイルで生成されます。
ここまでが全体像の説明になります。少しはイメージが湧いたでしょうか…?
ソリューションやキャンペーンあたりが、やや理解しづらいような気がしますが、この後の【検証編】で具体的なの使用例を紹介しているので、よければそちらも覗いてみてくださいm(_ _)m