メディア レコメンデーションを使ってみる

最先端のメディアのおすすめアプリを簡単に作成できます。メディアのおすすめを使用すると、最適化目標によってカスタマイズされた Google の高精度な検索結果により、オーディエンスは、次に視聴するコンテンツや読むコンテンツなど、よりパーソナライズされたコンテンツを見つけることができます。

メディア向け Vertex AI Search の一般的な情報については、メディア検索とレコメンデーションの概要をご覧ください。

この入門チュートリアルでは、Movielens データセットを使用して、メディア コンテンツ カタログとユーザー イベントを Vertex AI Search にアップロードし、パーソナライズされたムービーのおすすめモデルをトレーニングする方法を示します。 MovieLens データセットには、映画(ドキュメント)とユーザーによる映画の評価(ユーザー イベント)のカタログが含まれています。

このチュートリアルでは、クリック率(CTR)向けに最適化された「その他のおすすめ」タイプのレコメンデーション モデルをトレーニングします。トレーニングが完了すると、モデルはユーザー ID またはシードの映画に基づいて映画をおすすめできるようになります。

モデルの最小データ要件を満たすために、映画の評価が 4 以上であるものはそれぞれ視聴アイテム イベントとして扱われます。

このチュートリアルの所要時間:

メディア検索のスタートガイド チュートリアルを完了していて、データストア(推奨名 quickstart-media-data-store)が残っている場合は、別のデータストアを作成する代わりに、そのデータストアを使用できます。この場合は、メディア レコメンデーション用のアプリを作成するのステップからチュートリアルを開始する必要があります。

目標

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

このチュートリアルに進む前に、始める前にの手順が完了していることを確認してください。


このタスクを Google Cloud コンソールで直接行う際の順を追ったガイダンスについては、[ガイドを表示] をクリックしてください。

ガイドを表示


始める前に

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Vertex AI Agent Builder, Cloud Storage, BigQuery APIs.

    Enable the APIs

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

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Vertex AI Agent Builder, Cloud Storage, BigQuery APIs.

    Enable the APIs

データセットを準備する

Cloud Shell を使用して Movielens のデータセットをインポートし、メディア用の Vertex AI Search 用にデータセットを再構築します。

Cloud Shell を開く

  1. Google Cloud コンソールを開きます。
  2. Google Cloud プロジェクトを選択します。
  3. ダッシュボード ページの [プロジェクト情報] カードのプロジェクト ID をメモします。以降の手順では、このプロジェクト ID が必要です。
  4. コンソールの上部にある [Cloud Shell をアクティブにする] ボタンをクリックします。Google Cloud コンソールの一番下にある新しいフレームの中で Cloud Shell セッションが開き、コマンドライン プロンプトが表示されます。

    Cloud Shell

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

Movielens データセットは、公開の Cloud Storage バケットで利用できるため、簡単にインポートできます。

  1. プロジェクト ID を使用して次のコマンドを実行し、コマンドラインのデフォルト プロジェクトを設定します。

    gcloud config set project PROJECT_ID
    
  2. BigQuery データセットを作成します。

    bq mk movielens
    
  3. movies.csv を新しい movies BigQuery テーブルに読み込みます。

    bq load --skip_leading_rows=1 movielens.movies \
      gs://cloud-samples-data/gen-app-builder/media-recommendations/movies.csv \
      movieId:integer,title,genres
    
  4. ratings.csv を新しい ratings BigQuery テーブルに読み込みます。

    bq load --skip_leading_rows=1 movielens.ratings \
      gs://cloud-samples-data/gen-app-builder/media-recommendations/ratings.csv \
      userId:integer,movieId:integer,rating:float,time:timestamp
    

BigQuery ビューを作成する

このステップでは、メディアのおすすめの想定される形式に沿って Movielens データセットを再構成します。メディアのおすすめでは、モデルを作成するためのユーザー イベント データが必要です。このガイドでは、過去 90 日間の肯定的な評価(< 4)からフェイクの view-item イベントを作成します。

  1. movies テーブルを Google 定義の Document スキーマに変換するビューを作成します。

    bq mk --project_id=PROJECT_ID \
     --use_legacy_sql=false \
     --view '
      WITH t AS (
        SELECT
          CAST(movieId AS string) AS id,
          SUBSTR(title, 0, 128) AS title,
          SPLIT(genres, "|") AS categories
          FROM `PROJECT_ID.movielens.movies`)
        SELECT
          id, "default_schema" as schemaId, null as parentDocumentId,
          TO_JSON_STRING(STRUCT(title as title, categories as categories,
          CONCAT("http://mytestdomain.movie/content/", id) as uri,
          "2023-01-01T00:00:00Z" as available_time,
          "2033-01-01T00:00:00Z" as expire_time,
          "movie" as media_type)) as jsonData
        FROM t;' \
    movielens.movies_view
    

    これにより、Vertex AI Agent Builder API で想定されるスキーマが新しいビューに追加されます。

  2. Google Cloud コンソール の BigQuery ページに移動します。

    [BigQuery] に移動

  3. [エクスプローラ] ペインでプロジェクト名を展開し、movielens データセットを展開し、[movies_view] をクリックしてこのビューのクエリページを開きます。

    商品ビュー

  4. [テーブル エクスプローラ] タブに移動します。

  5. [生成されたクエリ] ペインで、[クエリにコピー] ボタンをクリックします。クエリエディタが開きます。

  6. [実行] をクリックすると、作成したビューで映画のデータが表示されます。

  7. 次の Cloud Shell コマンドを実行して、映画の評価から架空のユーザー イベントを作成します。

    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 userPseudoId,
        "view-item" 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(movieId AS id, null AS name)] AS documents,
      FROM `PROJECT_ID.movielens.ratings`, t
      WHERE rating >= 4;' \
      movielens.user_events
    

Vertex AI Agent Builder を有効にする

  1. Google Cloud コンソールで、[Agent Builder] ページに移動します。

    Agent Builder

  2. 利用規約を読んで同意し、[続行して API を有効にする] をクリックします。

メディアのおすすめのアプリを作成する

このセクションの手順では、メディアのおすすめアプリの作成とデプロイについて説明します。

  1. Google Cloud コンソールで、[Agent Builder] ページに移動します。

    Agent Builder

  2. [アプリを作成] をクリックします。

  3. [アプリの作成] ページの [メディア レコメンデーション] で、[作成] をクリックします。

  4. [アプリ名] フィールドに、アプリの名前(quickstart-media-recommendations など)を入力します。アプリ名の下にアプリ ID が表示されます。

  5. [おすすめの種類] で [関連商品のおすすめ] が選択されていることを確認します。

  6. [ビジネスの目標] で [クリック率(CTR)] が選択されていることを確認します。

  7. [続行] をクリックします。

  8. メディア検索を使ってみるのチュートリアルを完了していて、データストア(推奨名 quickstart-media-data-store)が残っている場合は、それを選択して [作成] をクリックし、レコメンデーション モデルをトレーニングするに進みます。

  9. [データストア] ページで、[データストアを作成] をクリックします。

  10. データストアの表示名(quickstart-media-data-store など)を入力し、[作成] をクリックします。

  11. 作成したデータストアを選択し、[作成] をクリックしてアプリを作成します。

データのインポート

次に、先ほどフォーマットした映画とユーザー イベントのデータをインポートします。

ドキュメントのインポート

  1. [ドキュメントのインポート] ページの [ネイティブ ソース] で、BigQuery を選択します。

  2. 作成した movies BigQuery ビューの名前を入力し、[インポート] をクリックします。

    PROJECT_ID.movielens.movies_view
    
  3. すべてのドキュメントがインポートされるまで待ちます。インポートには 15 分ほどかかります。 完了すると、86,537 個のドキュメントが作成されます。

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

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

  1. [イベント] タブで、[イベントをインポート] をクリックします。

  2. [ドキュメントのインポート] ページの [ネイティブ ソース] で、BigQuery を選択します。

  3. 作成した user_events BigQuery ビューの名前を入力し、[インポート] をクリックします。

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

    オペレーションのステータスは [アクティビティ] タブで確認できます。何百万もの行をインポートするため、このプロセスには約 1 時間かかります。

  5. 要件が満たされているかどうかを確認するには、[データ品質] > [要件] タブに移動します。ユーザー イベントがインポートされた後も、[要件] タブのステータスが [データ要件を満たしています] に更新されるまで、しばらく時間がかかることがあります。

レコメンデーション モデルをモデルをトレーニングする。

  1. [構成] ページに移動します。

  2. [サービス] タブをクリックします。サービス構成はすでに作成されています。

    推奨事項の降格または結果の多様化の設定を調整する場合は、次のようにします。

  3. トレーニング タブをクリックします。

    データ要件が満たされると、自動的にモデルのトレーニングが開始されます。このページでトレーニングとチューニングのステータスを確認できます。

    モデルがトレーニングされ、クエリの準備が完了するまでに数日かかることがあります。[クエリの準備完了] フィールドには、プロセスが完了している場合には [はい] と表示されます。[いいえ] が [はい] に変わったことを確認するには、ページを更新する必要があります。

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

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

  1. ナビゲーション メニューで [プレビュー] をクリックします。

  2. [ドキュメント ID] フィールドをクリックします。ドキュメント ID のリストが表示されます。

  3. シードの映画 ID を入力してください。たとえば、「ロード・オブ・ザ・リング: 旅の仲間(2001)」の場合は、4993 になります。

    ID の入力

  4. プルダウン メニューからサービス構成名を選択します。

  5. [レコメンデーションを表示] をクリックします。おすすめのドキュメントのリストが表示されます。

構造化データ用にアプリをデプロイする

アプリをデプロイするためのレコメンデーション ウィジェットはありません。デプロイ前にアプリをテストするには、以下の手順を行います。

  1. [データ] ページの [ドキュメント] タブに移動し、ドキュメントの ID をコピーします。

  2. [統合] ページに移動します。このページには、REST API の servingConfigs.recommend メソッドのサンプル コマンドが含まれます。

  3. 先ほどコピーしたドキュメント ID を [ドキュメント ID] フィールドに貼り付けます。

  4. [ユーザー Pseudo ID] 欄はそのままにします。

  5. サンプル リクエストをコピーして、Cloud Shell で実行します。

レコメンデーション アプリをウェブアプリに統合する方法については、メディアのおすすめを使ってみるのコードサンプルをご覧ください。

クリーンアップ

このページで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、次の手順を行います。

メディア検索を使ってみるのチュートリアルでメディア検索用に作成したデータストアを再利用できます。 このクリーンアップ手順を行う前に、そのチュートリアルをお試しください。

  1. 不要な Google Cloud 料金が発生しないようにするには、Google Cloud コンソールを使用して、不要なプロジェクトを削除します。
  2. Vertex AI Agent Builder の学習用に新しいプロジェクトを作成し、そのプロジェクトが不要になった場合は、そのプロジェクトを削除します。
  3. 既存の Google Cloud プロジェクトを使用した場合は、作成したリソースを削除して、アカウントに課金されないようにします。詳細については、アプリを削除するをご覧ください。
  4. Vertex AI Agent Builder を無効にするの手順を実行します。
  5. BigQuery データセットを作成した場合は、Cloud Shell でそれを削除します。

    bq rm --recursive --dataset movielens
    

次のステップ