「あなたへのおすすめ」はどう生成するの ? Amazon Personalize で簡単に実現する方法をグラレコで解説

2020-11-02
AWS グラレコ解説

Author : 安田 茂樹

※ 本連載では、様々な AWS サービスをグラフィックレコーディングで紹介する awsgeek.com を、日本語に翻訳し、図の解説をしていきます。awsgeek.com は Amazon Web Services, Inc. プリンシパル・テクニカル・エバンジェリスト、ジェリー・ハーグローブが運営しているサイトです。

Amazon.co.jp や Amazon.com (以降、Amazon と略) で商品を探していると、最近検索した商品や、過去に購入した商品に似た商品が「あなたへのおすすめ」として表示されたことはありませんか ?

Amazon では 20 年以上にわたり、「レコメンド機能」と呼ばれる、カスタマーの検索履歴や購買履歴などを基におすすめ商品を表示する機能を実装しています。

カスタマー 1 人 1 人に合わせた (パーソナライズされた) おすすめ商品を表示することで、

  • カスタマーが探していると思われるサービスや製品を提案でき、満足度の向上に繋がる
  • カスタマーの興味がありそうなコンテンツを提案し、サイトの滞在時間を長くできる
  • コンバージョン率を改善できる (商品の購入、ダウンロード、サブスクリプション、ビデオや音楽のストリーミングなど)

といった数多くのメリットが得られることが分かっています。

Amazon では、独自に開発した機械学習アルゴリズムを使うことでレコメンド機能を実現しています。そして、Amazon が使っているレコメンド機能と同等の機械学習アルゴリズムを、誰でも簡単なステップで使えるようにしたのが、「Amazon Personalize」というフルマネージド型サービスです。Amazon Personalize を使うことで、機械学習経験がゼロの方でも、簡単なステップで個別のカスタマーに合わせたおすすめ商品・コンテンツをレコメンドすることができるようになります。

なお、Amazon Personalize では、機械学習アルゴリズム自体は Amazon のショッピングサイトで使用しているものと同等のものを使用しますが、機械学習モデルのトレーニングに使用するデータはお客様自身でご用意いただく形になります。(アップロードされたデータは完全にプライベートに保たれ、お客様が完全な所有権を保持します。)

Personalize を使ってレコメンドを行うには、以下の 4 つのステップを実施します。


1. データの準備

「データセット」と呼ばれるデータを入れる箱に、次のステップ 2 の「機械学習モデルのトレーニング」で使用するデータを取り込みます。

過去データ (ヒストリカルデータ) を CSV ファイル形式で S3 バケットにアップロードしたものを取り込むか、リアルタイムイベントデータを AWS SDK、AWS Amplify または AWS CLI 経由で取り込みます。過去データとリアルタイムイベントデータの両方からデータを取り込むこともできます。

なお、過去データには、「ユーザー」、「アイテム」、「インタラクション」といった 3 つのデータタイプがあります。それぞれのデータタイプについて説明します。

  • ユーザー : ユーザーに関するメタデータ。年齢、性別、場所、ポイント会員かどうか等。
  • アイテム : アイテム (商品) に関するメタデータ。SKU、価格、在庫数などのデータ。
  • インタラクション : ユーザー / アイテム間の過去のインタラクションデータ (どのユーザーがいつどのアイテムを閲覧したか、何を購入したか等)。また、ユーザーのブラウザ情報 (国、使用デバイス、OS 情報など) のデータも含みます。  

1 つの「データセット」につき、上記いずれかの 1 つのデータタイプのみ取り込むことができます。そして、データセットをまとめてグループ化したものを「データセットグループ」と呼びます。各データセットグループには「インタラクション」データセットを必ず含める必要があります。また、各データセットグループには「ユーザー」、「アイテム」、「インタラクション」それぞれ 1 つずつのデータセットしか含めることができません。

それらの条件に加え、次のステップ 2 で機械学習モデルのトレーニングを開始するためには、

  • 最低 1,000 件のインタラクションデータ (過去データ + リアルタイムイベントデータ合わせて) が存在すること
  • 25 人以上のユニークユーザーおよび各ユーザー 2 件以上のインタラクションデータが存在すること

が必要となります。


2. 機械学習モデルのトレーニング

データの取り込みが完了したら、提供したいレコメンド機能の用途に合った「レシピ」を選択します。レシピとは、機械学習モデルのトレーニングを行うためのアルゴリズムのことです。以下のカテゴリーからレシピを 1 つ選択します。

  • パーソナライゼーション : このカテゴリーには計 5 つのレシピがありますが、うち 3 つはレガシーレシピ (過去に使用されていたレシピ) となり現在は推奨されていないため、実質 2 つのレシピが利用可能です。ユーザーへのおすすめアイテムを表示させたい場合は User-Personalization レシピを選択し、人気ランキング (全ユーザーに同じ内容を表示) を表示させたい場合は Popularity-Count レシピを選択します。
  • 関連するアイテム : 現在表示しているアイテムとよく似たアイテムを表示させたい場合は、SIMS レシピを選択します。
  • パーソナライズドランキング : 検索結果など、ユーザー別におすすめアイテム順にランキング表示させたい場合は Personalized-Ranking レシピを選択します。

どのレシピを選択すればよいか分からない場合は、AutoML を選択することで、最適なレシピが自動選択されます。

レシピ選択後、トレーニングに使用するデータが含まれる「データセットグループ」を選択し、「ハイパーパラメータ」(トレーニングするモデルを最適化するパラメータ) を必要に応じて設定し、トレーニングを開始します。


3. モデルの評価

トレーニングが完了すると、「ソリューションバージョン」と呼ばれるトレーニング済みの機械学習モデルが作成されます。ソリューションバージョンごとに、メトリクス (予測精度などの数値データ) が生成されるため、メトリクスを確認・評価し、必要に応じてハイパーパラメータの修正やレシピの変更を行い、再度トレーニングを行います。


4. レコメンド機能の実装

ソリューションバージョンが完成したら、「キャンペーンの作成」を行います。キャンペーンの作成とは、ソリューションバージョンをデプロイし、ユーザーにレコメンド機能を提供できるようにすることです。キャンペーンを作成することで、必要なインフラをデプロイし、Personalize のエンドポイントを作成し、getRecommendations() や getPersonalizedRanking() といったシンプルな REST API で呼び出してレコメンドを取得できるようになります。

なお、レコメンド機能はリアルタイムに使用 (例 : 検索結果のランキング表示) することもできますし、バッチで使用 (例 : E メールでユーザー別におすすめ商品のリストを送信) することもできます。

 

なお、Amazon Personalize では、以下の 3 種類の API が提供されています。

  • Personalize : データの準備からキャンペーンの作成まで、今回の図の ①〜④ 全体を含む設定・作成に関する API (例 : CreateDataset)
  • Personalize Events : 将来のレコメンドのためにデータを記録する API (例 : PutEvents)
  • Personalize Runtime : キャンペーンに問い合わせてレコメンドを取得するための API (例 : GetRecommendations)

最後に、全体の図を見てみましょう。 

Amazon Personalize を使うことで、簡単なステップでカスタマー 1 人 1 人に合わせたレコメンドが行えるようになります。また、Amazon Personalize は初期費用不要で従量制の料金体系のため、企業規模やサービス規模にかかわらず、どなたでもお使いいただけます。

料金やお客様事例等、Amazon Personalizeに関する詳細につきましては、こちらをご覧ください。

この連載記事のその他の記事はこちら

選択
  • 選択
  • 今話題のブロックチェーンをAWSで実現する仕組みをグラレコで解説 »
  • サーバーレスって何が便利なの ? AWS でサーバーレスを構築するためのサービスをグラレコで解説 »
  • 機械学習のワークフローってどうなっているの ? AWS の機械学習サービスをグラレコで解説 »
  • 外部から AWS のバックエンドサービス利用を実現する仕組みをグラレコで解説 »
  • AWS でデプロイの自動化を実現するベストプラクティスをグラレコで解説 »
  • コンテナを使ってモノリスを分割する方法をグラレコで解説 »
  • クラウドへ移行する理由とそのステップをグラレコで解説 »
  • Windows ワークロードをクラウドへ移行するためのベストプラクティスをグラレコで解説 »
  • サーバーレスのイベントバスって何 ? Amazon EventBridge をグラレコで解説 »
  • サーバーレスで SaaS を構築する方法をグラレコで解説 »
  • 「あなたへのおすすめ」はどう生成するの ? Amazon Personalize で簡単に実現する方法をグラレコで解説 »
  • クラウド設計・運用のベストプラクティス集「AWS Well-Architectedフレームワーク」をグラレコで解説 »
  • 特定の顧客セグメントにメッセージ送信。「Amazon Pinpoint」の仕組みをグラレコで解説 »
  • アプリにユーザー認証機能を簡単に追加できる「Amazon Cognito」をグラレコで解説 »
  • わずか数分で WordPress サイトを構築できる「Amazon Lightsail」をグラレコで解説 »
  • 異なるアプリケーション同士の疎結合を実現。「Amazon SQS」をグラレコで解説 »
  • Web アプリを高速に開発できる「AWS Amplify」をグラレコで解説 »
  • 機械学習の知識ゼロでもテキストデータを分析。Amazon Comprehend をグラレコで解説 »
  • ビジネスデータをまとめて可視化 & 分析。Amazon QuickSight をグラレコで解説
  • 人工衛星の地上局を 1 分単位で利用。AWS Ground Station をグラレコで解説
  • カオスエンジニアリングで本当にカオスにならないための進め方をグラレコで解説
  • GraphQL API を簡単に作成 & 運用。AWS AppSync をグラレコで解説
  • IoT 環境を必要な機能を選択するだけで構築。AWS IoT をグラレコで解説
  • 高い可用性と耐久性のオブジェクトストレージ。Amazon S3 をグラレコで解説
  • サーバーレスでイベント駆動型アプリケーションを実現。AWS Lambda をグラレコで解説
  • データサイエンス教育の強い味方。Amazon SageMaker Studio Lab をグラレコで解説
  • 高速で柔軟な NoSQL データベースサービス。Amazon DynamoDB をグラレコで解説
  • リレーショナルデータベースを簡単・迅速に実現。Amazon RDS をグラレコで解説
  • アプリのワークフローを視覚的に構成。 AWS Step Functions をグラレコで解説
  • データ保護に使う暗号化キーを一元管理。AWS KMS をグラレコで解説
  • アプリケーションへのトラフィックを効率的に負荷分散。Application Load Balancer をグラレコで解説
  • AWS で簡単にコンテナアプリケーションを構築 ! Amazon ECS をグラレコで解説
  • 大規模データセットも簡単クエリ! Amazon Athena をグラレコで解説
  • キャッシュ機能でアプリの高速化を実現 ! Amazon ElastiCache をグラレコで解説
  • 使い慣れたプログラミング言語でクラウド環境を構築 ! AWS CDK をグラレコで解説
  • ストリーミングデータを簡単にキャプチャ、処理、保存 ! Amazon Kinesis Data Streams をグラレコで解説
  • AWS で始める機械学習はじめの一歩 ! AWS の主要な AI/ML サービスをグラレコで解説
  • リレーショナルデータベースをサーバーレス化 ! Amazon Aurora Serverless をグラレコで解説
  • ML 駆動の検索エンジンで企業の情報管理を革新! Amazon Kendra をグラレコで解説
  • オンプレミス、エッジ、どこでも楽々コンテナ管理 ! Amazon EKS Anywhere をグラレコで解説

builders.flash メールメンバーへ登録することで
AWS のベストプラクティスを毎月無料でお試しいただけます

筆者プロフィール

安田 茂樹
アマゾン ウェブ サービス ジャパン合同会社
テクニカルコンテンツマネージャー。

2014 年にアマゾンジャパン合同会社に入社後、デバイス試験部門にて発売前の数多くの Amazon デバイスの試験に携わる。2019 年より現職。
趣味は新しいガジェットを試すこと、旅行、食べ歩き。

さらに最新記事・デベロッパー向けイベントを検索

下記の項目で絞り込む
1

AWS を無料でお試しいただけます

AWS 無料利用枠の詳細はこちら ≫
5 ステップでアカウント作成できます
無料サインアップ ≫
ご不明な点がおありですか?
日本担当チームへ相談する