Amazon Personalizeとは
Amazon.com がリアルタイムのパーソナライズされたレコメンデーションに使用するのと同じ機械学習 (ML) テクノロジーを使用してアプリケーションを構築できます。ML の専門知識は必要ありません。
事前設定
それでは設定していきます。
今回は下記の公式サイトのドメインデータセットグループのチュートリアルに沿って設定を行います。
https://docs.aws.amazon.com/ja_jp/personalize/latest/dg/gs-prerequisites.html
このチュートリアルでは、600 名のユーザーからの 9,700 本の映画に対する 100,000 件のレーティングで構成される履歴データを使用します。
トレーニングデータのアップロード
MovieLensからml-latest-small.zipをダウンロードしてして解凍します。
ratings.csvを開き、下記の編集をします。
- rating列の削除
- userIdとmovieIdの列の名前をそれぞれ
USER_ID
とITEM_ID
に変更します。 - EVENT_TYPE列を追加して、全てのレコードの値を
watch
に変更します。
(列の最初にwatchを入力して、セルの右下をダブルクリックする事で全てのレコードにwatchをセットできます。)
下記は変更後の一部抜粋となります。
USER_ID,ITEM_ID,timestamp,EVENT_TYPE
1,1,964982703,watch
1,3,964981247,watch
1,6,964982224,watch
1,47,964983815,watch
1,50,964982931,watch
変更したファイルをS3バケットにアップロードします。
IAMポリシーの作成
Personalizeではファイルのインポートとエクスポートをする為にS3へのアクセス権限が必要になります。
下記の内容でポリシーを作成します。bucket-name
をS3バケット名に書き換えてください。
今回は、PersonalizeS3BucketAccessPolicy
という名前でポリシーを作成しました。
{
"Version": "2012-10-17",
"Id": "PersonalizeS3BucketAccessPolicy",
"Statement": [
{
"Sid": "PersonalizeS3BucketAccessPolicy",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::bucket-name",
"arn:aws:s3:::bucket-name/*"
]
}
]
}
IAMロールの作成
次に、IAMロールを作成します。
ロールを作成
をクリックして、
信頼されたエンティティタイプ:AWSのサービス
ユースケース:personalize
を選択します。
作成済のポリシーPersonalizeS3BucketAccessPolicy
を選択します。
ロール名
:PersonalizeRole
と入力して、ロールを作成を完了します。
S3バケットポリシーの設定
Personalizeからデータをインポートする際にS3にアクセスするための下記の権限が必要ですので、該当S3のバケットポリシーに追加します。
DOC-EXAMPLE-BUCKET
をS3バケット名に書き換えてください。
Amazon Personalize でインポートジョブを作成する際に、「There was an error with your dataset import Insufficient privileges for accessing data in S3 (S3 のデータにアクセスするための権限が不十分で、データセットのインポートにエラーが発生しました)」というエラーを解決するにはどうすればよいですか?
https://aws.amazon.com/jp/premiumsupport/knowledge-center/personalize-import-insufficient-privileges-s3-error/
{
"Version": "2012-10-17",
"Id": "PersonalizeS3BucketAccessPolicy",
"Statement": [
{
"Sid": "PersonalizeS3BucketAccessPolicy",
"Effect": "Allow",
"Principal": {
"Service": "personalize.amazonaws.com"
},
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET",
"arn:aws:s3:::DOC-EXAMPLE_BUCKET/*"
]
}
]
}
ドメインデータセットグループの作成
PersonalizeサービスからGet started
ボタンをクリックします。
Name
:my_dsgroupDomain
:Video on demand
Dataset name
:my_datasetSchema name
:my_schema
Dataset import job name
:my_dsimportjobData location
:S3にアップロードしたファイルのS3 URICustom IAM role ARN
:作成したIAMロール(PersonalizeRole)のARN
レコメンダーの作成
Dashboardの中央のカード[Use video on demand recommenders]のCreate recommenders
ボタンをクリックします。
Top picks for you
だけにチェックを付けて、Recommender nameを入力します。(今回は”my_toppicks_recommender”と入力)
レコメンデーションデータの取得
テストとして、User IDが1のレコメンデーションデータを取得してみます。
作成されたレコメンダー(my_toppicks_recommender)を選択して、[Test recommender]欄のUser ID
に1を入力してGet recommendations
ボタンをクリックします。
すると、下の[Recommendations]欄にItem IDが表示されました。