この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
Amazon Personalizeについて調査した内容を前回の記事でまとめました。ハンズオンに関してはボリュームが大きいため、別記事として実施していきます。
題材とするハンズオンは、"AWS Hands-on for Beginners"の"AWS Managed AI/ML サービス はじめの一歩 "です。
今回の記事では、Amazon Personalizeの使い方を学べるハンズオンを紹介します。
Amazon Personalize ハンズオンをやってみる
■Amazon Personalizeハンズオン概要
今回実施するハンズオンは、AWS公式のハンズオンである"AWS Hands-on for Beginners"の"AWS Managed AI/ML サービス はじめの一歩 "から"Amazon Personalize を用いてレコメンデーションを行う"を紹介します。
紹介されているハンズオン自体は2年前のものですが、Amazon Personalizeがどういったものかがわかる内容になっています。
しかし、やはり2年前のハンズオンのため、コンソール画面の変更や当時なかった仕様、注意点がありますので、2023年10月現在の仕様で紹介していきます。
■Amazon Personalizeハンズオン手順
Amazon Personalizeハンズオンを実施していきます。
全体の流れは、つぎの画像の通りです。
●S3バケット作成
まずはPersonalizeで利用するデータファイルを保管するS3バケットを作成します。
↓マネージメントコンソールから、[S3]のダッシュボード画面に行きます。
↓バケット名は"一意"の名前を入力しましょう。
↓他はデフォルトの設定で問題ありません。[バケットを作成]をクリックします。
↓作成されたら、作成したバケット名をクリックします。
↓PersonalizeがS3バケットを参照できるようにアクセス許可を設定します。[アクセス許可]タブをクリックします。
↓[バケットポリシー]の項目で[編集]をクリックします。
↓AWSの公式ドキュメントに"バケットポリシー"の例があります。ポリシー例を参考に、貼り付けてください。修正箇所は["Resource"]の[bucket-name]部分です。
↓貼り付けが完了したら、[変更の保存]をクリックします。
↓Personalizeで利用するデータファイルをアップロードします。[アップロード]をクリックしてください。
↓[ファイルを追加]をクリックします。
↓公式ハンズオンに"資料"が用意されていて、その中の[02_ratings.csv]をアップロードしましょう。もしくはダミーファイルを用意しても大丈夫です。ちなみに[02_ratings.csv]には、現在必須カラムの"EVENT_TYPE"がありません。
↓[C列]に[EVENT_TYPE]カラムを挿入し、値[view]を追加しましょう。[click]や[save],[apply]などを混ぜるとより精度の高いオススメ情報が提供されますので、ぜひ試してみてください。
↓[アップロード]をクリックします。
S3バケットの作成は以上です。
●Personalizeデータセットグループ作成
データセットグループを作成していきます。データセットグループとは関連するデータセットのコンテナのことで、ユーザーデータ、アイテムデータ、インタラクションデータなどのでデータセットを含むことができます。
さきほどS3バケットにアップロードしたファイルは、インタラクションデータで利用するファイルです。
↓マネージメントコンソールで[Amazon Personlize]と検索し、ダッシュボード画面に行きます。
↓左のナビゲーションペインから[Create dataset group]をクリックします。
↓[Datase group details]で利用する設定値は以下の通りです。入力が完了しましたら、[Create group]をクリックします。
項目 | 値 |
---|---|
Name | 任意 |
Domain | Video on demand |
↓作成が完了ましたら、作成フローが出てきます。フロー通り入力していけば、問題なくPersonalizeが使えます。まずは、[Create datasets]で[Import interaction data]をクリックします。
インタラクションデータは行動履歴データです。ユーザーとアイテムの間の活動やイベント、行動履歴が記録されている必要があり、クリック、購入、評価などの行動が含まれます。
↓[Import method]で[Import data directly into Amazon Personalize datasets]を選択し、[Next]をクリックします。
-
Import data directly into Amazon Personalize datasets
・この方法は、Amazon S3バケットに保存されているデータを直接Amazon Personalizeのデータセットにインポートするものです。
・予め整形されたCSVファイルをS3にアップロードして、そのS3のパスを指定することで、Amazon Personalizeにデータを取り込むことができます。 -
Import data using Data Wrangler
・Data Wranglerは、Amazon SageMakerのビジュアルインターフェースの1つで、データの前処理や変換を簡単に行うことができます。
・この方法を選択すると、Data Wranglerを使用してデータの前処理や変換を行い、その結果をAmazon Personalizeのデータセットにインポートすることができます。
・インタラクティブな環境でのデータの確認や変更が可能なため、データの前処理や変換が必要な場合に便利です。
↓データセットに関する情報を入力します。設定値は以下の通りです。
項目 | 設定値 |
---|---|
Dataset name | movie-ratings(任意) |
Dataset schema | Create a new domain schema by modifying the existing default schema for your domain |
Schema name | h4b-schema(任意) |
↓[Schema definition]はデフォルトのままで、[Next]をクリックします。
↓[Data import source]は[Import data from S3]を選択し、[Dataset import job name]は任意で入力してください。
h4b-movie-ratings-import-job
↓[data location]はcsvファイルが置いてあるURIを入力します。
↓CSVのURIはS3バケットで[S3 URI]がありますので、コピーして入力しましょう。
↓[IAM Role]では[Create new role]を選択します。
↓[Specific S3 buckets]を選択し、[バケット名]を入力します。入力しましたら、[Create role]をクリックします。
↓
↓[Start Import]をクリックします。
↓データのインポートが始まります。データの量にもよりますが、数分以上かかります。
↓インポートが完了すると、[Interactions data active]と表示が変更されます。
データセットの作成とデータのインポートは終了です。
●Personalizeソリューション作成
Prsonalizeの機能の中で、非常に重要なソリューションを作成していきます。
ソリューションとは、特定のレシピを使用してトレーニングされたモデルです。ソリューションはソリューションバージョンを持つことができます。
はじめはぴんと来ないかと思いますので、使いながら慣れていきましょう。
↓フロー図で進める場合、[Use custom resources (advanced)]タブをクリックし、[Create solution]をクリックします。
↓ほかのページに行ってしまった場合は、左のナビゲーションから[Solutions and recipes]をクリックし、[Create solution]をクリックしてください。
↓
↓標準的な設定をしていきます。設定値は以下の通りです。入力が完了しましたら、[Next]をクリックします。
項目 | 設定値 |
---|---|
Solution name | h4b-solution(任意) |
Solution type | Item recommendation |
Recipe | aws-user-personalization |
"aws-user-personalization"は Amazon Personalizeの中でも特に汎用的で強力なレシピの1つとして知られています。このレシピは、ユーザーの過去の行動からリアルタイムのレコメンデーションを生成することを目的としています。
↓[Advanced configuration]では特に設定はしません。精度を高めるためのチューニングをする箇所ですが、複雑なため、今回は説明を省きます。[Next]をクリックしてください。
↓さいごは確認画面ですので、[Create solutions]をクリックします。
↓ソリューションバージョンを作成中と表示されます。こちらはデータセットのせーたをもとにトレーニングしてモデルを作成するため、かなりの時間を要します。
↓トレーニングが終了したようです。
ソリューションの作成は以上です。
●Personalizeキャンペーン作成
Personlizeから推薦情報をもらうためのAPIを提供しているキャンペーンを作成していきます。
キャンペーンとは、アクティブなソリューションバージョンのことです。キャンペーンを使用して、アプリケーションからリアルタイムの推薦を取得することができます。
キャンペーンに関しては、先ほど作成したソリューションのどのバージョンを使うか、トレーニングしたどのモデルを使うかを決めるだけです。
↓フロー図の真ん中で[Use custom resources (advanced)]タブをクリックし、[Create campaign]をクリックしてください。
↓ソリューションを選択していきます。設定値は以下の通りです。
項目 | 設定値 |
---|---|
Campaign name | h4b-campaign(任意) |
Solution | h4b-solution-saitou(作成したもの) |
Solution version ID | 最新 |
Minimum provisioned transactions per second | 1 |
※"Minimum provisioned transactions per second"はリアルタイムのトラフィックの変動を吸収し、常に高速なレスポンスタイムを提供するために存在します。数値が高ければ、より高速にレスポンスしてくれますが、同時にコストも高くなっていきます。
↓入力が完了しましたら、他の設定はそのままで[Create campaign]をクリックします。
↓作成中のメッセージが表示されます。
↓数分経つと、Statusが"Active"になります。
キャンペーンの作成は以上です。構築自体はこれで終了です。動作確認していきましょう。
●動作確認
Amazon Personalizeの構築が完了しました。動作確認を行っていきます。
期待することは、ユーザーIDを入力し、おすすめのアイテムIDが返ってくることです。例として、ユーザー1という方には、2,5,10,20,44,79のアイテムIDがおすすめです、というふうに帰ってきます。
↓さっそく試してみましょう。左のナビゲーションから[Canapaigns]をクリックし、[作成したキャンペーン]をクリックします。
↓[User ID]に任意の数字を入力し、[Get recommendations]をクリックしてみてください。
↓入力した[User ID]に対して、[Item ID]が返ってきていますね。はい、これだけです。情緒とか特になく、関連する数字のみが返ってきます。
Amazon Personalizeのハンズオンは以上です。
まとめ:Amazon Personalizeの使い方や事例を紹介 part2
機械学習やAIサービスは近年ますます注目されている技術です。AWSには多くの機械学習・AIサービスがあり、用途に合わせて選択するのがいいかと思います。
今回紹介した"Amazon Personalize"は、Amazonが20年以上かけて蓄積してきたデータをもとに提供されているサービスで、利用者は機械学習についての深い知識を必要としません。無料枠も用意されているので、機械学習のエントリーとしてAmazon Perosonalizeをぜひ使ってみてください。
参考リンク:AWS Hands-on for Beginners 、AWS公式ドキュメント
↓ほかの協栄情報メンバーも機械学習・AIに関する記事を公開しています。ぜひ参考にしてみてください。
■Amazon CodeWhispererを試してみた(dapeng)
https://cloud5.jp/amazon-codewhisperer/
■Amazon Personalizeの使い方や事例を紹介【ハンズオンあり】(齊藤弘樹)
https://cloud5.jp/saitou-amazonpersonalize-entry/