近年、ECサイトをはじめとした多くのサービスで、ユーザーの行動に基づいたレコメンド機能が活用されています。しかし、期間限定のアイテムや年齢制限のあるアイテムなど、特定の条件下ではレコメンド対象から除外する必要があるケースも少なくありません。
本記事では、AWSのレコメンデーションサービスであるAWS Personalizeを使用し、こうした制限付きアイテムを除外するフィルタ設定の方法について解説します。
Personalizeのフィルタ設定
前提
- AWS Personalizeのレコメンダーまで構築が完了しているものとさせていただきます。
- 今回は、VIDEO_ON_DEMAND ドメインを用いたデータセットで実施しております。
- Interactions/User/Itemのスキーマは下記になります。
【Interactionsのスキーマ】
{
"type": "record",
"name": "Interactions",
"namespace": "com.amazonaws.personalize.schema",
"fields": [
{
"name": "USER_ID",
"type": "string"
},
{
"name": "ITEM_ID",
"type": "string"
},
{
"name": "TIMESTAMP",
"type": "long"
},
{
"name": "EVENT_TYPE",
"type": "string"
}
],
"version": "1.0"
}
【Userのスキーマ】
{
"type": "record",
"name": "Users",
"namespace": "com.amazonaws.personalize.schema",
"fields": [
{
"name": "USER_ID",
"type": "string"
},
{
"name": "AGE",
"type": "long"
}
],
"version": "1.0"
}
【Itemのスキーマ】
{
"type": "record",
"name": "Items",
"namespace": "com.amazonaws.personalize.schema",
"fields": [
{
"name": "ITEM_ID",
"type": "string"
},
{
"name": "GENRES",
"type": "string",
"categorical": true
},
{
"name": "CREATION_TIMESTAMP",
"type": "long"
},
{
"name": "EXPIRATION_DATE",
"type": "long"
}
],
"version": "1.0"
}
フィルタ設定
今回はItemの「EXPIRATION_DATE(有効期限)」が現在時刻よりも古いアイテムを除外するフィルタを設定します。
実際にフィルタを設定した画面が下記となり、Items.EXPIRATION_DATEが現在時刻($current_time)を下回っていれば、除外する(EXCLUDE)としています。
実行結果
フィルタ適用前は、レコメンドされた25個のアイテムのうち12個が有効期限切れのアイテムでした。
しかし、フィルタを適用したことで、すべてのレコメンドが有効期限内のアイテムに限定され、不要なアイテム表示されることはなくなりました。
フィルタ適用前 | フィルタ適用後 | |
---|---|---|
有効期限切れアイテムの数 | 12個 | 0個 |
結論
フィルタを適用することで、有効期限切れのアイテムを完全に除外することができました。フィルタの活用は、レコメンドの精度向上に直結します。提供するアイテムやユーザーのニーズに応じて適切にフィルタを設定し、より最適なレコメンド体験を実現していきましょう!