これは、Recommendations AI、Retail Search、新しい Retail コンソールに関するドキュメントです。

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

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

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

時間の目安:

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

目標

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

料金

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

  • Cloud Storage
  • BigQuery
  • 小売

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

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

Retail 費用の詳細については、Retail の価格ページをご覧ください。

始める前に

  1. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Cloud プロジェクトに対して課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。

  4. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  5. Cloud プロジェクトに対して課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。

データセットを準備する

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

Cloud Shell

Cloud Console の一番下にある新しいフレームの中で Cloud Shell セッションが開き、コマンドライン プロンプトが表示されます。

データセットをインポートする

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

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

    gsutil mb gs://PROJECT_ID-movielens-data
    gsutil 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
    

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

    商品ビュー

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

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

    BigQuery ビューを作成します。次のコマンドは、上述の Retail API 変換要件を満たす 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
    

商品カタログとユーザー イベントを Retail API にインポートします

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

  1. Google Cloud プロジェクトで 小売り API を有効にします。

    Retail API を有効にする

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

  3. Google Cloud Console の [Retail Data] ページに移動します。

    [データ] ページに移動

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

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

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

    • インポート タイプとして [商品カタログ] を選択します。
    • デフォルトのブランチ名を選択します。
    • データのソースとして [BigQuery] を選択します。
    • データのスキーマとして [小売商品スキーマ] を選択します。
    • 上記(<var label="project ID">PROJECT_ID</var>'.movielens.products)で作成した商品 BigQuery ビューの名前を入力します。

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

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

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

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

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

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

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

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

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

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

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

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

  1. Google Cloud Console の [Retail Models] ページに移動します。

    [モデル] ページに移動

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

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

    モデルの作成

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

    モデル作成

サービス提供構成を作成する

  1. Google Cloud Console の [Retail Serving Configs] ページに移動します。

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

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

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

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

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

ステータスを表示するには、[Serving configs page][https://console.cloud.google.com/ai/retail/catalogs/default_catalog/configs/] で、作成したサービス提供構成をクリックします。

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

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

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

  1. Google Cloud Console の [Retail Serving Configs] ページに移動します。

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

    ID を入力

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

クリーンアップ

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

プロジェクトの削除

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

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

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

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

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

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

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

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

    gsutil rm gs://PROJECT_ID-movielens-data/movies.csv
    gsutil rm gs://PROJECT_ID-movielens-data/ratings.csv
    gsutil rb gs://PROJECT_ID-movielens-data/
    

次のステップ