コードなしの PlatoBlockchain Data Intelligence を使用して、Amazon Personalize を使用してバッチ推奨パイプラインを作成します。 垂直検索。 あい。

コードなしで Amazon Personalize を使用してバッチ推奨パイプラインを作成する

パーソナライズされたコンテンツが顧客エンゲージメントを促進する可能性が高いため、企業は、顧客のプロファイルと行動に基づいてカスタマイズされたコンテンツを提供することを継続的に求めています。 特にレコメンデーション システムは、エンド ユーザーがアイテムに与える好みを予測しようとします。 一般的な使用例には、オンライン小売店での製品の推奨、ニュースレターのパーソナライズ、音楽プレイリストの推奨の生成、さらにはオンライン メディア サービスでの同様のコンテンツの発見などがあります。

ただし、モデルのトレーニング、アルゴリズムの選択、プラットフォームの管理が複雑なため、効果的なレコメンデーション システムを作成するのは難しい場合があります。 Amazonパーソナライズ 開発者は、機械学習 (ML) の専門知識を必要とせずに、パーソナライズされた製品とコンテンツのレコメンデーションを通じて顧客エンゲージメントを向上させることができます。 開発者は、キャプチャされたユーザーの行動データを使用して、すぐに顧客との関わりを開始できます。 バックグラウンドで、Amazon Personalize はこのデータを調べ、意味のあるものを特定し、適切なアルゴリズムを選択し、データ用にカスタマイズされたパーソナライゼーション モデルをトレーニングおよび最適化し、API エンドポイントを介して推奨事項を提供します。

リアルタイムで推奨事項を提供すると、エンゲージメントと満足度を高めることができますが、実際には必要ない場合もあります。これをスケジュールに基づいてバッチで実行することは、費用対効果が高く、管理しやすいオプションです。

この投稿では、AWS のサービスを使用してレコメンデーションを作成するだけでなく、バ​​ッチ レコメンデーション パイプラインを運用する方法を示します。 コードを XNUMX 行も書かずに、エンド ツー エンドのソリューションを説明します。 次の XNUMX つのトピックについて詳しく説明します。

ソリューションの概要

このソリューションでは、 ムービーレンズ データセット。 このデータセットには、86,000 人のユーザーによる 2,113 件の映画の評価が含まれています。 このデータを使用して、これらのユーザーごとに推奨事項を生成しようとします。

データの準備は、顧客の行動データを Amazon Personalize の準備が整った形式にするために非常に重要です。 この記事で説明するアーキテクチャは、サーバーレス データ統合サービスである AWS Glue を使用して、未加工データを Amazon Personalize ですぐに使用できる形式に変換します。 このソリューションでは、Amazon Personalize を使用して、バッチ推論を使用してすべてのユーザー向けのバッチ推奨事項を作成します。 次に、Step Functions ワークフローを使用して、繰り返し可能な方法で Amazon Personalize API を呼び出して自動化されたワークフローを実行できるようにします。

次の図は、このソリューションを示しています。アーキテクチャ図

次の手順でこのソリューションを構築します。

  1. AWS Glue を使用して生データを変換するデータ変換ジョブを構築します。
  2. 変換されたデータセットを使用して Amazon Personalize ソリューションを構築します。
  3. Step Functions ワークフローを構築して、バッチ推論の生成を調整します。

前提条件

このウォークスルーには次のものが必要です。

AWS Glue を使用して生データを変換するデータ変換ジョブを構築する

Amazon Personalize では、入力データに特定のスキーマとファイル形式が必要です。 ユーザーとアイテム間の対話からのデータは、特定の列を含む CSV 形式である必要がありますが、レコメンデーションを生成するユーザーのリストは JSON 形式である必要があります。 このセクションでは、AWS Glue Studio を使用して、生の入力データを Amazon Personalize に必要な構造と形式に変換します。

AWS Glue Studio は、抽出、変換、ロード (ETL) ジョブを簡単に作成および実行できるように設計されたグラフィカル インターフェイスを提供します。 シンプルなドラッグ アンド ドロップ操作で、データ変換ワークロードを視覚的に作成できます。

最初にソースデータを準備します Amazon シンプル ストレージ サービス (Amazon S3)、コードなしでデータを変換します。

  1. Amazon S3 コンソールで、raw、Transformed、curated の 3 つのフォルダを持つ SXNUMX バケットを作成します。
  2. ダウンロード MovieLensデータセット そして、user_ratingmovies-timestamp.dat という名前の非圧縮ファイルを未加工フォルダーの下のバケットにアップロードします。
  3. AWS Glue Studioコンソールで、 Jobs > Create New Job ナビゲーションペインに表示されます。
  4. 選択 ソースとターゲットを使用したビジュアル、を選択します 創造する.
  5. と呼ばれる最初のノードを選択します データソース – S3 バケット. ここで、入力データを指定します。
  6. ソフトウェア設定ページで、下図のように データソースのプロパティ タブ、選択 S3の場所 アップロードしたファイルを参照します。
  7. データフォーマット、選択する CSV、および用 デリミタ、選択する タブ.
    AWS Glue スタジオ - S3
  8. [出力スキーマ] タブを選択して、スキーマが列を正しく推測したことを確認できます。
  9. スキーマが期待と一致しない場合は、選択してください 編集 スキーマを編集します。
    AWS Glue Studio-フィールド

次に、このデータを変換して、Amazon Personalize のスキーマ要件に従います。

  1. 選択する 変換 – マッピングを適用 ノード上で 最適化の適用 タブで、ターゲット キーとデータ型を更新します。
    Amazon Personalize は、少なくとも、 インタラクション データセット:
    • user_id (ストリング)
    • item_id (ストリング)
    • timestamp (長い、Unix エポック時間形式)
      AWS Glue Studio - フィールド マッピング

この例では、データセット内の評価の低い映画を除外します。

  1. これを行うには、S3 バケットと呼ばれる最後のノードを削除し、フィルター ノードを追加します。 最適化の適用 タブには何も表示されないことに注意してください。
  2. 選択する Add 条件 評価が 3.5 未満のデータを除外します。
    AWS Glue スタジオ - 出力

出力を Amazon S3 に書き戻します。

  1. 拡大する ターゲット メニューと選択 アマゾンS3.
  2. S3ターゲットの場所、という名前のフォルダーを選択します transformed.
  3. 選択する CSV 形式とサフィックスとして ターゲットの位置   interactions/.

次に、おすすめを取得したいユーザーのリストを出力します。

  1. 選択する マッピングの適用 ノードを再度展開し、 最適化の適用 メニューと選択 マッピングの適用.
  2. を除くすべてのフィールドをドロップします。 user_id そのフィールドの名前を userId. Amazon Personalize は、そのフィールドに名前が付けられていることを期待しています ユーザーID.
  3. 拡大する ターゲット もう一度メニューを選択して選択します アマゾンS3.
  4. 今回はチョイス JSONの を形式として選択し、変換された S3 フォルダーを選択して、接尾辞を付けます。 batch_users_input/.

これにより、 JSONの Amazon Personalize の入力としてのユーザーのリスト。 次のような図が表示されます。

AWS Glue Studio - ワークフロー全体

これで、変換ジョブを実行する準備が整いました。

  1. IAM コンソールで、glue-service-role というロールを作成し、次の管理ポリシーをアタッチします。
    • AWSGlueServiceRole
    • AmazonS3FullAccess

IAM サービス ロールの作成方法の詳細については、 アクセス許可を AWS サービスに委任するロールの作成.

  1. AWS Glue Studio ジョブに戻り、 仕事の詳細 タブには何も表示されないことに注意してください。
  2. ジョブ名を次のように設定します batch-personalize-input-transform-job.
  3. 新しく作成した IAM ロールを選択します。
  4. それ以外はすべてデフォルト値のままにします。
    AWS Glue Studio - ジョブの詳細
  5. 選択する Save.
  6. 準備ができたら、選択してください ラン でジョブを監視します。 Active Runs タブには何も表示されないことに注意してください。
  7. ジョブが完了したら、Amazon S3 コンソールに移動して、出力ファイルが正常に作成されたことを確認します。

これで、Amazon Personalize が必要とする形式と構造にデータを整形しました。 変換されたデータセットには、次のフィールドと形式が必要です。

  • 相互作用データセット – フィールド付きの CSV 形式 USER_ID, ITEM_ID, TIMESTAMP
  • ユーザー入力データセット – 要素を含む JSON 形式 userId

変換されたデータセットを使用して Amazon Personalize ソリューションを構築する

インタラクション データセットとユーザー入力データが適切な形式になったので、Amazon Personalize ソリューションを作成できるようになりました。 このセクションでは、データセット グループを作成し、データをインポートしてから、バッチ推論ジョブを作成します。 データセット グループは、リソースを Amazon Personalize コンポーネントのコンテナに編成します。

  1. Amazon Personalizeコンソールで、 創造する データセットグループ.
  2. ドメイン選択 カスタム.
  3. 選択する データセット グループを作成して続行.
    Amazon Personalize - データセット グループの作成

次に、インタラクション データセットを作成します。

  1. データセット名を入力して選択します 新しいスキーマを作成する.
  2. 選択する データセットを作成して続行.
    Amazon Personalize - インタラクション データセットの作成

以前に作成したインタラクション データをインポートします。

  1. インタラクション CSV データセットを作成した S3 バケットに移動します。
  2. ソフトウェア設定ページで、下図のように 権限 タブで、次のバケット アクセス ポリシーを追加して、Amazon Personalize がアクセスできるようにします。 ポリシーを更新してバケット名を含めます。
    {
       "Version":"2012-10-17",
       "Id":"PersonalizeS3BucketAccessPolicy",
       "Statement":[
          {
             "Sid":"PersonalizeS3BucketAccessPolicy",
             "Effect":"Allow",
             "Principal":{
                "Service":"personalize.amazonaws.com"
             },
             "Action":[
                "s3:GetObject",
                "s3:ListBucket",
                "s3:PutObject"
             ],
             "Resource":[
                "arn:aws:s3:::<your-bucket-name>",
                "arn:aws:s3:::<your-bucket-name> /*"
             ]
          }
       ]
    }

Amazon Personalize に戻り、選択します データセット インポート ジョブを作成する. インタラクション データセットが Amazon Personalize にインポートされます。 次のステップに進む前に、インポート ジョブがアクティブのステータスで完了するのを待ちます。 これには約 8 分かかります。

  1. Amazon Personalizeコンソールで、 概要 ナビゲーションペインで、 ソリューションを作成する.
    Amazon Personalize - ダッシュボード
  2. ソリューション名を入力します。
  3. ソリューションタイプ、選択する アイテムのおすすめ.
  4. 抽出水のレシピを選択してください aws-user-personalization レシピ。
  5. 選択する ソリューションの作成とトレーニング.
    Amazon Personalize - ソリューションの作成

このソリューションは、ユーザーのパーソナライズ レシピでインポートされたインタラクション データセットに対してトレーニングを行うようになりました。 このプロセスのステータスを監視します ソリューションのバージョン. 処理が完了するまで待ってから続行してください。 これには約 20 分かかります。
Amazon Personalize - ステータス

次に、JSON 入力に存在する各ユーザーのレコメンデーションを生成するバッチ推論ジョブを作成します。

  1. ナビゲーションペインの[ カスタム リソース、選択する バッチ推論ジョブ.
  2. ジョブ名を入力し、 ソリューションで、前に作成したソリューションを選択します。
  3. 選択する バッチ推論ジョブを作成する.
    Amazon Personalize - バッチ推論ジョブの作成
  4. 入力データ構成の S3 パスを入力します。 batch_users_input ファイルがあります。

これは、含まれている JSON ファイルです。 userId.

  1. 出力データ構成 path、S3 でキュレートされたパスを選択します。
  2. 選択する バッチ推論ジョブを作成する.

このプロセスには約 30 分かかります。 ジョブが終了すると、ユーザー入力ファイルで指定された各ユーザーの推奨事項が S3 出力場所に保存されます。

すべてのユーザー向けの一連の推奨事項を正常に生成しました。 ただし、これまでのところ、コンソールを使用してソリューションを実装しただけです。 このバッチ推論が最新のデータ セットで定期的に実行されるようにするには、オーケストレーション ワークフローを構築する必要があります。 次のセクションでは、Step Functions を使用してオーケストレーション ワークフローを作成する方法を示します。

Step Functions ワークフローを構築して、バッチ推論ワークフローを調整する

パイプラインを調整するには、次の手順を実行します。

  1. ステップ関数コンソールで、を選択します ステート マシンの作成.
  2. 選択 ワークフローを視覚的に設計する、を選択します Next.
    AWS Step Functions - ワークフローの作成
  3. ドラッグ CreateDatasetImportJob ノードを左から (検索ボックスでこのノードを検索できます) キャンバスに移動します。
  4. ノードを選択すると、右側に構成 API パラメーターが表示されます。 ARN を記録します。
  5. に独自の値を入力します。 APIパラメータ テキストボックス。

これは データセットインポートジョブの作成 指定したパラメーター値を持つ API。

AWS Step Functions ワークフロー

  1. ドラッグ CreateSolutionVersion ノードをキャンバスに配置します。
  2. メモしたソリューションの ARN で API パラメーターを更新します。

これにより、新しくインポートされたデータで新しいソリューション バージョンが作成されます。 ソリューションバージョンの作成 APIです。

  1. ドラッグ CreateBatchInferenceJob ノードをキャンバスに追加し、同様に API パラメータを関連する値で更新します。

を使用していることを確認してください。 $.SolutionVersionArn 構文を使用して、前のステップからソリューション バージョンの ARN パラメーターを取得します。 これらの API パラメータは、 CreateBatchInferenceJob APIです。

AWS Step Functions ワークフロー

ワークフローが完了する前に推奨バッチ推論ジョブが確実に終了するように、Step Functions ワークフローで待機ロジックを構築する必要があります。

  1. 待機ノードを見つけてドラッグします。
  2. の構成では、 待つ、300 秒と入力します。

これは任意の値です。 この待機時間は、特定のユース ケースに応じて変更する必要があります。

  1. 選択する CreateBatchInferenceJob ノードに再度移動し、 エラー処理 タブには何も表示されないことに注意してください。
  2. レスリング エラー、 入る Personalize.ResourceInUseException.
  3. フォールバック状態、選択する 待つ.

このステップにより、ジョブのステータスを定期的に確認でき、ジョブが完了したときにのみループを終了します。

  1. 結果パス、 入る $.errorMessage.

これは事実上、「使用中のリソース」例外が受信されると、ジョブは同じ入力で再試行する前に x 秒間待機することを意味します。

AWS Step Functions ワークフロー

  1. 選択する Save、次に選択する 実行を開始する.

Amazon Personalize のバッチ推奨パイプラインを正常に調整しました。 オプションの手順として、次を使用できます。 アマゾンイベントブリッジ このワークフローのトリガーを定期的にスケジュールします。 詳細については、を参照してください。 Step Functions の実行ステータス変更のための EventBridge (CloudWatch Events).

クリーンアップ

今後料金が発生しないようにするには、このチュートリアル用に作成したリソースを削除してください。

まとめ

この投稿では、AWS Glue、Amazon Personalize、Step Functions の組み合わせを使用して、コードや ML の経験を一切必要とせずにバッチ推奨パイプラインを作成する方法を示しました。 AWS Glue を使用して、Amazon Personalize が必要とする形式にデータを準備しました。 次に、Amazon Personalize を使用してデータをインポートし、ユーザーのパーソナライズレシピを使用してソリューションを作成し、過去のやり取りに基づいて各ユーザーに対してデフォルトの 25 の推奨事項を生成するバッチ推論ジョブを作成しました。 次に、これらのジョブを自動的に実行できるように、Step Functions を使用してこれらのステップを調整しました。

次に検討するステップとして、ユーザー セグメンテーションは Amazon Personalize の新しいレシピの XNUMX つであり、入力データの各行のユーザー セグメントを作成するために検討する必要がある場合があります。 詳細については、を参照してください。 バッチの推奨事項とユーザー セグメントの取得.


著者,

マキシン・ウィー

マキシン・ウィー は、AW​​S データ ラボのソリューション アーキテクトです。 Maxine は、お客様のユース ケースについてお客様と協力し、ビジネス上の問題を解決するためのソリューションを設計し、スケーラブルなプロトタイプの構築をガイドします。 AWS に入社する前は、顧客がオーストラリアで BI、データ ウェアハウジング、およびデータ レイク プロジェクトを実装するのを支援していました。

タイムスタンプ:

より多くの AWS機械学習