パーソナライズされたおすすめの映画を作成する

このチュートリアルでは、Movielens データセットを使用して、商品カタログとユーザー イベントを AI Commerce Search にアップロードし、カスタマイズされた商品レコメンデーション モデルをトレーニングする方法を説明します。MovieLens データセットには、映画(商品)とユーザーによる映画の評価(ユーザー イベント)のカタログが含まれています。

ポジティブな各映画評価(評価 4 以上)は、商品ページビュー イベントとして処理されます。データセット内のユーザーまたはシードの映画に基づいて映画のレコメンデーションを作成する「関連商品のおすすめ」タイプのレコメンデーション モデルをトレーニングします。

推定所要時間:

  • モデルのトレーニングを開始するための最初の手順: 約 1.5 時間。
  • モデルのトレーニングを待機時間: 約 2 日。
  • モデル予測の評価とクリーンアップ: 約 30 分。

目標

  • 商品とユーザー イベントのデータを BigQuery から AI Commerce Search にインポートする方法を学習します。
  • レコメンデーション モデルをトレーニングして評価します。

費用

このチュートリアルでは、以下を含む、 Google Cloudの課金対象となるコンポーネントを使用します。

  • Cloud Storage
  • BigQuery
  • AI Commerce Search

Cloud Storage の費用の詳細については、Cloud Storage の料金ページをご覧ください。

BigQuery の費用の詳細については、BigQuery の料金ページをご覧ください。

AI Commerce Search の費用の詳細については、AI Commerce Search の料金のページをご覧ください。

始める前に

  1. Google Cloud アカウントにログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

データセットを準備する

Google Cloud コンソールを開き、 Google Cloud プロジェクトを選択します。ダッシュボード ページの [プロジェクト情報] カードのプロジェクト ID をメモします。以降の手順では、このプロジェクト ID が必要です。次に、コンソールの上部にある [Cloud Shell をアクティブにする] ボタンをクリックします。

Cloud Shell

Google Cloud コンソールの下部の新しいフレーム内で Cloud Shell セッションが開き、コマンドライン プロンプトが表示されます。

データセットのインポート

  1. Cloud Shell を使用して、ソース データセットをダウンロードして展開します。

    wget https://files.grouplens.org/datasets/movielens/ml-latest.zip
    unzip ml-latest.zip
    
  2. Cloud Storage バケットを作成してデータをバケットにアップロードします。

    gcloud storage buckets create gs://PROJECT_ID-movielens-data
    gcloud storage cp ml-latest/movies.csv ml-latest/ratings.csv \
      gs://PROJECT_ID-movielens-data
    
  3. BigQuery データセットを作成します。

    bq mk movielens
    
  4. 新しい映画 BigQuery テーブルに movies.csv を読み込む:

    bq load --skip_leading_rows=1 movielens.movies \
      gs://PROJECT_ID-movielens-data/movies.csv \
      movieId:integer,title,genres
    
  5. 新しい評価 BigQuery テーブルに ratings.csv を読み込む:

    bq load --skip_leading_rows=1 movielens.ratings \
      gs://PROJECT_ID-movielens-data/ratings.csv \
      userId:integer,movieId:integer,rating:float,time:timestamp
    

BigQuery ビューを作成する

  1. ムービーテーブルを小売商品カタログ スキーマに変換するビューを作成します。

    bq mk --project_id=PROJECT_ID \
     --use_legacy_sql=false \
     --view '
     SELECT
       CAST(movieId AS string) AS id,
       SUBSTR(title, 0, 128) AS title,
       SPLIT(genres, "|") AS categories
     FROM `PROJECT_ID.movielens.movies`' \
    movielens.products
    

    これで、新しいビューには AI Commerce Search で想定されるスキーマが含まれるようになりました。次に、左側のサイドバーで [BIG DATA -> BigQuery] を選択します。次に、左側のエクスプローラ バーでプロジェクト名を展開し、movielens -> products を選択してこのビューのクエリページを開きます。

    商品ビュー

  2. 次に、映画の評価をユーザー イベントに変換します。以下を実施します。

    • 除外映画の評価を無視する(4 以上)
    • すべてのポジティブな評価を商品ページビュー イベントとして処理(detail-page-view
    • Movielens のタイムラインを過去 90 日間に再スケーリングします。これには 2 つの理由があります。
      • AI Commerce Search では、ユーザー イベントが 2015 年以降のものであることが必要です。Movielens の評価付けは 1995 年までさかのぼります。
      • AI Commerce Search は、ユーザーの予測リクエストを処理する際に、過去 90 日間のユーザー イベントを使用します。後でユーザーに対して予測を行う際に、すべてのユーザーに最近のイベントが存在するものとして表示されます。

    BigQuery ビューを作成します。次のコマンドは、前述の変換要件を満たす SQL クエリを使用します。

    bq mk --project_id=PROJECT_ID \
     --use_legacy_sql=false \
     --view '
     WITH t AS (
       SELECT
         MIN(UNIX_SECONDS(time)) AS old_start,
         MAX(UNIX_SECONDS(time)) AS old_end,
         UNIX_SECONDS(TIMESTAMP_SUB(
           CURRENT_TIMESTAMP(), INTERVAL 90 DAY)) AS new_start,
         UNIX_SECONDS(CURRENT_TIMESTAMP()) AS new_end
       FROM `PROJECT_ID.movielens.ratings`)
     SELECT
       CAST(userId AS STRING) AS visitorId,
       "detail-page-view" AS eventType,
       FORMAT_TIMESTAMP(
         "%Y-%m-%dT%X%Ez",
         TIMESTAMP_SECONDS(CAST(
           (t.new_start + (UNIX_SECONDS(time) - t.old_start) *
             (t.new_end - t.new_start) / (t.old_end - t.old_start))
         AS int64))) AS eventTime,
       [STRUCT(STRUCT(movieId AS id) AS product)] AS productDetails,
     FROM `PROJECT_ID.movielens.ratings`, t
     WHERE rating >= 4' \
    movielens.user_events
    

商品カタログとユーザー イベントをインポートする

これで、商品カタログとユーザー イベントデータを AI Commerce Search にインポートする準備が整いました。

  1. Google Cloud プロジェクトで AI Commerce Search API を有効にします。

    API を有効にする

  2. [開始] をクリックします。

  3. AI Commerce Search in Gemini Enterprise for Customer Experience コンソールの [データ] ページに移動します。

    [データ] ページに移動

  4. [インポート] をクリックします。

商品カタログをインポートする

  1. 以前に作成した BigQuery ビューから商品をインポートするには、次のようにフォームに入力します。

    • インポート タイプとして [商品カタログ] を選択します。
    • デフォルトのブランチ名を選択します。
    • データのソースとして [BigQuery] を選択します。
    • データのスキーマとして [小売商品スキーマ] を選択します。
    • 以前に作成した商品 BigQuery ビューの名前(PROJECT_ID.movielens.products)を入力します。

  2. [インポート] をクリックします。

  3. すべての商品がインポートされるまで待ちます。(所要時間 5~10 分)

    インポート オペレーションのステータスは、インポート アクティビティで確認できます。インポートが完了すると、インポート オペレーションのステータスが [Succeeded] に変わります。

    商品インポート アクティビティ

ユーザー イベントのインポート

  1. user_events BigQuery ビューをインポートします。

    • インポートのタイプとして [User Events] を選択します。
    • データのソースとして [BigQuery] を選択します。
    • データのスキーマとして [小売ユーザー イベント スキーマ] を選択します。
    • 以前に作成した user_events BigQuery ビューの名前を入力します。
  2. [インポート] をクリックします。

  3. 新しいモデルのトレーニングに対するデータ要件を満たすには、少なくとも 100 万件のイベントがインポートされるのを待ってから次の手順に進んでください。

    オペレーションのステータスは、インポート アクティビティで確認できます。プロセスが完了するまでに約 1 時間を要します。

    イベントのインポート アクティビティ

レコメンデーション モデルをトレーニングして評価します

レコメンデーション モデルのトレーニングと評価の手順に沿って操作します。

レコメンデーション モデルを作成する

  1. AI Commerce Search in Gemini Enterprise for Customer Experience コンソールの [モデル] ページに移動します。

    [モデル] ページに移動

  2. [モデルを作成] をクリックします。

    • モデルに名前を付けます。
    • モデルタイプとして [関連商品のおすすめ] を選択します。
    • ビジネス目標として [Click-through rate (CTR)] を選択します。
  3. [作成] をクリックします。

    モデルの作成

    新しいモデルのトレーニングを開始します。

    モデル作成

サービス構成を作成する

  1. AI Commerce Search in Gemini Enterprise for Customer Experience コンソールの [サービス構成] ページに移動します。

    [サービス構成] ページに移動

  2. [Create serving config] をクリックします。

    • [Recommendation] を選択します。
    • サービス提供構成に名前を付けます。
    • 作成したモデルを選択します。
  3. [作成] をクリックします。

モデルが「クエリの準備完了」になるのを待つ

モデルがトレーニングを行いクエリの準備が完了するまでに約 2 日間を要します。

ステータスを表示するには、[サービス構成] ページで作成されたサービス構成をクリックします。

[Model ready to query] フィールドには、プロセスが完了している場合には [Yes] と表示されます。

レコメンデーションをプレビューする

モデルでクエリの準備が完了したら、次の手順を行います。

  1. AI Commerce Search in Gemini Enterprise for Customer Experience コンソールの [サービス構成] ページに移動します。

    [サービス構成] ページに移動
  2. サービス提供構成名をクリックして詳細ページに移動します。
  3. [Evaluate] タブをクリックします。
  4. シードの映画 ID を入力してください。たとえば、「ロード・オブ・ザ・リング: 旅の仲間(2001)」の場合は、4993 になります。

    ID の入力

  5. [予測のプレビュー] をクリックすると、ページの右側におすすめのアイテムのリストが表示されます。

クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。

プロジェクトを削除する

  1. Google Cloud コンソールで [リソースの管理] ページに移動します。

    [リソースの管理] に移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

リソースを個別に削除する

  1. [サービス構成] ページに移動し、作成したサービス提供構成を削除します。

  2. [Models] ページに移動し、モデルを削除します。

  3. Cloud Shell で BigQuery データセットを削除します。

    bq rm --recursive --dataset movielens
    
  4. Cloud Storage バケットとその内容を削除します。

    gcloud storage rm gs://PROJECT_ID-movielens-data --recursive
    

次のステップ