メディア レコメンデーションを使ってみる
最先端のメディアのおすすめアプリを簡単に作成できます。メディアのおすすめを使用すると、最適化目標によってカスタマイズされた Google の高精度な検索結果により、オーディエンスは、次に視聴するコンテンツや読むコンテンツなど、よりパーソナライズされたコンテンツを見つけることができます。
メディア向け Vertex AI Search の一般的な情報については、メディア検索とレコメンデーションの概要をご覧ください。この入門チュートリアルでは、Movielens データセットを使用して、メディア コンテンツ カタログとユーザー イベントを Vertex AI Search にアップロードし、パーソナライズされたムービーのおすすめモデルをトレーニングする方法を示します。 MovieLens データセットには、映画(ドキュメント)とユーザーによる映画の評価(ユーザー イベント)のカタログが含まれています。
このチュートリアルでは、クリック率(CTR)向けに最適化された「その他のおすすめ」タイプのレコメンデーション モデルをトレーニングします。トレーニングが完了すると、モデルはユーザー ID またはシードの映画に基づいて映画をおすすめできるようになります。
モデルの最小データ要件を満たすために、映画の評価が 4 以上であるものはそれぞれ視聴アイテム イベントとして扱われます。
このチュートリアルの所要時間:
- モデルのトレーニングを開始するための最初の手順: 約 1.5 時間。
- モデルのトレーニングを待機時間: 最大 24 時間。 (モデルのトレーニング)
- モデル予測の評価とクリーンアップ: 約 30 分。 (レコメンデーションをプレビューする)
メディア検索のスタートガイド チュートリアルを完了していて、データストア(推奨名 quickstart-media-data-store
)が残っている場合は、別のデータストアを作成する代わりに、そのデータストアを使用できます。この場合は、メディア レコメンデーション用のアプリを作成するのステップからチュートリアルを開始する必要があります。
目標
- メディア ドキュメントとユーザー イベント データを BigQuery から Vertex AI Search にインポートする方法を学習します。
- レコメンデーション モデルをトレーニングして評価します。
このチュートリアルに進む前に、始める前にの手順が完了していることを確認してください。
このタスクを Google Cloud コンソールで直接行う際の順を追ったガイダンスについては、[ガイドを表示] をクリックしてください。
始める前に
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Vertex AI Agent Builder, Cloud Storage, BigQuery APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Vertex AI Agent Builder, Cloud Storage, BigQuery APIs.
データセットを準備する
Cloud Shell を使用して Movielens のデータセットをインポートし、メディア用の Vertex AI Search 用にデータセットを再構築します。
Cloud Shell を開く
- Google Cloud コンソールを開きます。
- Google Cloud プロジェクトを選択します。
- ダッシュボード ページの [プロジェクト情報] カードのプロジェクト ID をメモします。以降の手順では、このプロジェクト ID が必要です。
コンソールの上部にある [Cloud Shell をアクティブにする] ボタンをクリックします。Google Cloud コンソールの一番下にある新しいフレームの中で Cloud Shell セッションが開き、コマンドライン プロンプトが表示されます。
データセットのインポート
Movielens データセットは、公開の Cloud Storage バケットで利用できるため、簡単にインポートできます。
プロジェクト ID を使用して次のコマンドを実行し、コマンドラインのデフォルト プロジェクトを設定します。
gcloud config set project PROJECT_ID
BigQuery データセットを作成します。
bq mk movielens
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
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
イベントを作成します。
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 で想定されるスキーマが新しいビューに追加されます。
Google Cloud コンソール の BigQuery ページに移動します。
[エクスプローラ] ペインでプロジェクト名を展開し、
movielens
データセットを展開し、[movies_view
] をクリックしてこのビューのクエリページを開きます。[テーブル エクスプローラ] タブに移動します。
[生成されたクエリ] ペインで、[クエリにコピー] ボタンをクリックします。クエリエディタが開きます。
[実行] をクリックすると、作成したビューで映画のデータが表示されます。
次の 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 を有効にする
Google Cloud コンソールで、[Agent Builder] ページに移動します。
利用規約を読んで同意し、[続行して API を有効にする] をクリックします。
メディアのおすすめのアプリを作成する
このセクションの手順では、メディアのおすすめアプリの作成とデプロイについて説明します。
Google Cloud コンソールで、[Agent Builder] ページに移動します。
[
アプリを作成 ] をクリックします。[アプリの作成] ページの [メディア レコメンデーション] で、[作成] をクリックします。
[アプリ名] フィールドに、アプリの名前(
quickstart-media-recommendations
など)を入力します。アプリ名の下にアプリ ID が表示されます。[おすすめの種類] で [関連商品のおすすめ] が選択されていることを確認します。
[ビジネスの目標] で [クリック率(CTR)] が選択されていることを確認します。
[続行] をクリックします。
メディア検索を使ってみるのチュートリアルを完了していて、データストア(推奨名
quickstart-media-data-store
)が残っている場合は、それを選択して [作成] をクリックし、レコメンデーション モデルをトレーニングするに進みます。[データストア] ページで、[データストアを作成] をクリックします。
データストアの表示名(
quickstart-media-data-store
など)を入力し、[作成] をクリックします。作成したデータストアを選択し、[作成] をクリックしてアプリを作成します。
データのインポート
次に、先ほどフォーマットした映画とユーザー イベントのデータをインポートします。
ドキュメントのインポート
[ドキュメントのインポート] ページの [ネイティブ ソース] で、BigQuery を選択します。
作成した
movies
BigQuery ビューの名前を入力し、[インポート] をクリックします。PROJECT_ID.movielens.movies_view
すべてのドキュメントがインポートされるまで待ちます。インポートには 15 分ほどかかります。 完了すると、86,537 個のドキュメントが作成されます。
インポート オペレーションのステータスは [アクティビティ] タブで確認できます。インポートが完了すると、インポート オペレーションのステータスが [完了] に変わります。
ユーザー イベントのインポート
[イベント] タブで、[イベントをインポート] をクリックします。
[ドキュメントのインポート] ページの [ネイティブ ソース] で、BigQuery を選択します。
作成した
user_events
BigQuery ビューの名前を入力し、[インポート] をクリックします。PROJECT_ID.movielens.user_events
新しいモデルのトレーニングに対するデータ要件を満たすには、少なくとも 100 万件のイベントがインポートされるのを待ってから次の手順に進んでください。
オペレーションのステータスは [アクティビティ] タブで確認できます。何百万もの行をインポートするため、このプロセスには約 1 時間かかります。
要件が満たされているかどうかを確認するには、[データ品質] > [要件] タブに移動します。ユーザー イベントがインポートされた後も、[要件] タブのステータスが [データ要件を満たしています] に更新されるまで、しばらく時間がかかることがあります。
レコメンデーション モデルをモデルをトレーニングする。
[構成] ページに移動します。
[サービス] タブをクリックします。サービス構成はすでに作成されています。
トレーニング タブをクリックします。
データ要件が満たされると、自動的にモデルのトレーニングが開始されます。このページでトレーニングとチューニングのステータスを確認できます。
モデルがトレーニングされ、クエリの準備が完了するまでに数日かかることがあります。[クエリの準備完了] フィールドには、プロセスが完了している場合には [はい] と表示されます。[いいえ] が [はい] に変わったことを確認するには、ページを更新する必要があります。
レコメンデーションをプレビューする
モデルでクエリの準備が完了したら、次の手順を行います。
ナビゲーション メニューで [
プレビュー ] をクリックします。[ドキュメント ID] フィールドをクリックします。ドキュメント ID のリストが表示されます。
シードの映画 ID を入力してください。たとえば、「ロード・オブ・ザ・リング: 旅の仲間(2001)」の場合は、
4993
になります。プルダウン メニューからサービス構成名を選択します。
[レコメンデーションを表示] をクリックします。おすすめのドキュメントのリストが表示されます。
構造化データ用にアプリをデプロイする
アプリをデプロイするためのレコメンデーション ウィジェットはありません。デプロイ前にアプリをテストするには、以下の手順を行います。
[データ] ページの [ドキュメント] タブに移動し、ドキュメントの ID をコピーします。
[統合] ページに移動します。このページには、REST API の
servingConfigs.recommend
メソッドのサンプル コマンドが含まれます。先ほどコピーしたドキュメント ID を [ドキュメント ID] フィールドに貼り付けます。
[ユーザー Pseudo ID] 欄はそのままにします。
サンプル リクエストをコピーして、Cloud Shell で実行します。
レコメンデーション アプリをウェブアプリに統合する方法については、メディアのおすすめを使ってみるのコードサンプルをご覧ください。
クリーンアップ
このページで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、次の手順を行います。
メディア検索を使ってみるのチュートリアルでメディア検索用に作成したデータストアを再利用できます。 このクリーンアップ手順を行う前に、そのチュートリアルをお試しください。
- 不要な Google Cloud 料金が発生しないようにするには、Google Cloud コンソールを使用して、不要なプロジェクトを削除します。
- Vertex AI Agent Builder の学習用に新しいプロジェクトを作成し、そのプロジェクトが不要になった場合は、そのプロジェクトを削除します。
- 既存の Google Cloud プロジェクトを使用した場合は、作成したリソースを削除して、アカウントに課金されないようにします。詳細については、アプリを削除するをご覧ください。
- Vertex AI Agent Builder を無効にするの手順を実行します。
BigQuery データセットを作成した場合は、Cloud Shell でそれを削除します。
bq rm --recursive --dataset movielens