Amazon Personalizeの使い方や事例を紹介【ハンズオンあり】 part2


この記事は公開されてから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ハンズオンを実施していきます。

 

全体の流れは、つぎの画像の通りです。

 

amazonpersonalize S3バケット作成

 

●S3バケット作成

まずはPersonalizeで利用するデータファイルを保管するS3バケットを作成します。

 

↓マネージメントコンソールから、[S3]のダッシュボード画面に行きます。

 

amazonpersonalize S3バケット作成

 

↓バケット名は"一意"の名前を入力しましょう。

 

amazonpersonalize S3バケット作成

 

↓他はデフォルトの設定で問題ありません。[バケットを作成]をクリックします。

 

amazonpersonalize S3バケット作成

 

↓作成されたら、作成したバケット名をクリックします。

 

amazonpersonalize S3バケット作成

 

↓PersonalizeがS3バケットを参照できるようにアクセス許可を設定します。[アクセス許可]タブをクリックします。

 

amazonpersonalize S3バケット作成

 

↓[バケットポリシー]の項目で[編集]をクリックします。

 

amazonpersonalize S3バケット作成

 

↓AWSの公式ドキュメントに"バケットポリシー"の例があります。ポリシー例を参考に、貼り付けてください。修正箇所は["Resource"]の[bucket-name]部分です。

 

amazonpersonalize S3バケット作成

 

↓貼り付けが完了したら、[変更の保存]をクリックします。

 

amazonpersonalize S3バケット作成

 

↓Personalizeで利用するデータファイルをアップロードします。[アップロード]をクリックしてください。

 

amazonpersonalize S3バケット作成

 

↓[ファイルを追加]をクリックします。

 

amazonpersonalize S3バケット作成

 

↓公式ハンズオンに"資料"が用意されていて、その中の[02_ratings.csv]をアップロードしましょう。もしくはダミーファイルを用意しても大丈夫です。ちなみに[02_ratings.csv]には、現在必須カラムの"EVENT_TYPE"がありません。

 

amazonpersonalize S3バケット作成

 

↓[C列]に[EVENT_TYPE]カラムを挿入し、値[view]を追加しましょう。[click]や[save],[apply]などを混ぜるとより精度の高いオススメ情報が提供されますので、ぜひ試してみてください。

 

インタラクションデータ修正

 

↓[アップロード]をクリックします。

 

amazonpersonalize S3バケット作成

 

S3バケットの作成は以上です。

 

 

●Personalizeデータセットグループ作成

データセットグループを作成していきます。データセットグループとは関連するデータセットのコンテナのことで、ユーザーデータ、アイテムデータ、インタラクションデータなどのでデータセットを含むことができます。

 

さきほどS3バケットにアップロードしたファイルは、インタラクションデータで利用するファイルです。

 

↓マネージメントコンソールで[Amazon Personlize]と検索し、ダッシュボード画面に行きます。

 

Personalizeインタラクションデータインポート

 

↓左のナビゲーションペインから[Create dataset group]をクリックします。

 

Personalizeインタラクションデータインポート

 

↓[Datase group details]で利用する設定値は以下の通りです。入力が完了しましたら、[Create group]をクリックします。

 

項目
Name 任意
Domain Video on demand

 

Personalizeインタラクションデータインポート

 

↓作成が完了ましたら、作成フローが出てきます。フロー通り入力していけば、問題なくPersonalizeが使えます。まずは、[Create datasets]で[Import interaction data]をクリックします。

 

インタラクションデータは行動履歴データです。ユーザーとアイテムの間の活動やイベント、行動履歴が記録されている必要があり、クリック、購入、評価などの行動が含まれます。

 

Personalizeインタラクションデータインポート

 

↓[Import method]で[Import data directly into Amazon Personalize datasets]を選択し、[Next]をクリックします。

 

  1. Import data directly into Amazon Personalize datasets
    ・この方法は、Amazon S3バケットに保存されているデータを直接Amazon Personalizeのデータセットにインポートするものです。
    ・予め整形されたCSVファイルをS3にアップロードして、そのS3のパスを指定することで、Amazon Personalizeにデータを取り込むことができます。

  2. Import data using Data Wrangler
    ・Data Wranglerは、Amazon SageMakerのビジュアルインターフェースの1つで、データの前処理や変換を簡単に行うことができます。
    ・この方法を選択すると、Data Wranglerを使用してデータの前処理や変換を行い、その結果をAmazon Personalizeのデータセットにインポートすることができます。
    ・インタラクティブな環境でのデータの確認や変更が可能なため、データの前処理や変換が必要な場合に便利です。

 

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(任意)

 

Personalizeインタラクションデータインポート

 

↓[Schema definition]はデフォルトのままで、[Next]をクリックします。

 

Personalizeインタラクションデータインポート

 

↓[Data import source]は[Import data from S3]を選択し、[Dataset import job name]は任意で入力してください。
h4b-movie-ratings-import-job

 

Personalizeインタラクションデータインポート

 

↓[data location]はcsvファイルが置いてあるURIを入力します。

 

Personalizeインタラクションデータインポート

 

↓CSVのURIはS3バケットで[S3 URI]がありますので、コピーして入力しましょう。

 

Personalizeインタラクションデータインポート

 

↓[IAM Role]では[Create new role]を選択します。

 

Personalizeインタラクションデータインポート

 

↓[Specific S3 buckets]を選択し、[バケット名]を入力します。入力しましたら、[Create role]をクリックします。

 

Personalizeインタラクションデータインポート

Personalizeインタラクションデータインポート

 

↓[Start Import]をクリックします。

 

Personalizeインタラクションデータインポート

 

↓データのインポートが始まります。データの量にもよりますが、数分以上かかります。

 

Personalizeインタラクションデータインポート

 

↓インポートが完了すると、[Interactions data active]と表示が変更されます。

 

Personalizeインタラクションデータインポート

 

データセットの作成とデータのインポートは終了です。

 

 

●Personalizeソリューション作成

Prsonalizeの機能の中で、非常に重要なソリューションを作成していきます。

 

ソリューションとは、特定のレシピを使用してトレーニングされたモデルです。ソリューションはソリューションバージョンを持つことができます。

 

はじめはぴんと来ないかと思いますので、使いながら慣れていきましょう。

 

↓フロー図で進める場合、[Use custom resources (advanced)]タブをクリックし、[Create solution]をクリックします。

 

Personalizeソリューション作成

 

↓ほかのページに行ってしまった場合は、左のナビゲーションから[Solutions and recipes]をクリックし、[Create solution]をクリックしてください。

 

Personalizeソリューション作成

Personalizeソリューション作成

 

↓標準的な設定をしていきます。設定値は以下の通りです。入力が完了しましたら、[Next]をクリックします。

 

項目 設定値
Solution name h4b-solution(任意)
Solution type Item recommendation
Recipe aws-user-personalization

 

"aws-user-personalization"は Amazon Personalizeの中でも特に汎用的で強力なレシピの1つとして知られています。このレシピは、ユーザーの過去の行動からリアルタイムのレコメンデーションを生成することを目的としています。

 

Personalizeソリューション作成

 

↓[Advanced configuration]では特に設定はしません。精度を高めるためのチューニングをする箇所ですが、複雑なため、今回は説明を省きます。[Next]をクリックしてください。

 

Personalizeソリューション作成

 

↓さいごは確認画面ですので、[Create solutions]をクリックします。

 

Personalizeソリューション作成

 

↓ソリューションバージョンを作成中と表示されます。こちらはデータセットのせーたをもとにトレーニングしてモデルを作成するため、かなりの時間を要します。

 

Personalizeソリューション作成

 

↓トレーニングが終了したようです。

 

Personalizeソリューション作成

 

ソリューションの作成は以上です。

 

 

●Personalizeキャンペーン作成

Personlizeから推薦情報をもらうためのAPIを提供しているキャンペーンを作成していきます。

 

キャンペーンとは、アクティブなソリューションバージョンのことです。キャンペーンを使用して、アプリケーションからリアルタイムの推薦を取得することができます。

 

キャンペーンに関しては、先ほど作成したソリューションのどのバージョンを使うか、トレーニングしたどのモデルを使うかを決めるだけです。

 

↓フロー図の真ん中で[Use custom resources (advanced)]タブをクリックし、[Create campaign]をクリックしてください。

 

Personalizeキャンペーン作成

 

↓ソリューションを選択していきます。設定値は以下の通りです。

 

項目 設定値
Campaign name h4b-campaign(任意)
Solution h4b-solution-saitou(作成したもの)
Solution version ID 最新
Minimum provisioned transactions per second 1

 

※"Minimum provisioned transactions per second"はリアルタイムのトラフィックの変動を吸収し、常に高速なレスポンスタイムを提供するために存在します。数値が高ければ、より高速にレスポンスしてくれますが、同時にコストも高くなっていきます。

 

Personalizeキャンペーン作成

 

↓入力が完了しましたら、他の設定はそのままで[Create campaign]をクリックします。

 

Personalizeキャンペーン作成

 

↓作成中のメッセージが表示されます。

 

Personalizeキャンペーン作成

 

↓数分経つと、Statusが"Active"になります。

 

Personalize動作確認

 

キャンペーンの作成は以上です。構築自体はこれで終了です。動作確認していきましょう。

 

 

●動作確認

Amazon Personalizeの構築が完了しました。動作確認を行っていきます。

 

期待することは、ユーザーIDを入力し、おすすめのアイテムIDが返ってくることです。例として、ユーザー1という方には、2,5,10,20,44,79のアイテムIDがおすすめです、というふうに帰ってきます。

 

↓さっそく試してみましょう。左のナビゲーションから[Canapaigns]をクリックし、[作成したキャンペーン]をクリックします。

 

Personalize動作確認

 

↓[User ID]に任意の数字を入力し、[Get recommendations]をクリックしてみてください。

 

Personalize動作確認

 

↓入力した[User ID]に対して、[Item ID]が返ってきていますね。はい、これだけです。情緒とか特になく、関連する数字のみが返ってきます。
 

Personalize動作確認

 

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/

 

 

Last modified: 2023-10-14

Author