700 以上のラボとコースにアクセス

BigQuery ML で訪問者の購入を予測する

ラボ 1時間 universal_currency_alt クレジット: 5 show_chart 入門
info このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。
700 以上のラボとコースにアクセス

概要

BigQuery ML を使用すると、BigQuery で SQL クエリを使用して ML モデルを作成し、実行できます。ここでは、SQL のユーザーが簡単に ML を利用できるようにすることを目標としています。使い慣れたツールを使用してモデルを構築でき、データ移動の必要もないため、開発スピードを向上させることができます。

Google Merchandise Store に関する数百万件に及ぶ Google アナリティクス レコードが格納された e コマース データセットが BigQuery に読み込まれています。このラボでは、このデータを使用して訪問者が取引を実行するかどうかを予測するモデルを作成します。

ラボの内容

BigQuery で ML モデルを作成、評価、使用する方法

必要なもの

  • ブラウザ(ChromeFirefox など)
  • SQL または BigQuery の基本的な知識

設定と要件

各ラボでは、新しい Google Cloud プロジェクトとリソースセットを一定時間無料で利用できます。

  1. Qwiklabs にシークレット ウィンドウでログインします。

  2. ラボのアクセス時間(例: 1:15:00)に注意し、時間内に完了できるようにしてください。
    一時停止機能はありません。必要な場合はやり直せますが、最初からになります。

  3. 準備ができたら、[ラボを開始] をクリックします。

  4. ラボの認証情報(ユーザー名パスワード)をメモしておきます。この情報は、Google Cloud Console にログインする際に使用します。

  5. [Google Console を開く] をクリックします。

  6. [別のアカウントを使用] をクリックし、このラボの認証情報をコピーしてプロンプトに貼り付けます。
    他の認証情報を使用すると、エラーが発生したり、料金の請求が発生したりします。

  7. 利用規約に同意し、再設定用のリソースページをスキップします。

BigQuery コンソールを開く

  1. Google Cloud コンソールで、ナビゲーション メニュー > [BigQuery] を選択します。

[Cloud Console の BigQuery へようこそ] メッセージ ボックスが開きます。このメッセージ ボックスにはクイックスタート ガイドへのリンクと、UI の更新情報が表示されます。

  1. [完了] をクリックします。

タスク 1. データを確認する

このタスクでは、ML モデル用の一般公開データセットを探索して準備します。SQL クエリを実行して Google アナリティクス データのサンプルを検査し、結果を training_data として保存します。

このラボで使用するデータは bigquery-public-data プロジェクトに含まれており、誰でも利用できます。このデータのサンプルを見てみましょう。

  1. bqml_lab データセットが存在することを確認するには、Project_ID(qwiklabs-gcp-00-XXXXXXXXXX で始まる)の左にある矢印をクリックします。その下に bqml_lab データセットが表示されます。

  2. + をクリックして新しい SQL クエリを作成します。BigQuery Studio に新しいタブが表示されます。

クエリの説明を取得する

  1. このクエリを [無題のクエリ] ボックスに追加します。
SELECT IF(totals.transactions IS NULL, 0, 1) AS label, IFNULL(device.operatingSystem, "") AS os, device.isMobile AS is_mobile, IFNULL(geoNetwork.country, "") AS country, IFNULL(totals.pageviews, 0) AS pageviews FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` WHERE _TABLE_SUFFIX BETWEEN '20160801' AND '20170631' LIMIT 10000;
  1. クエリを選択します。

  2. クエリのすぐ左にある Gemini [Gemini Code Assist] ボタンをクリックします。

  3. [このクエリを説明する] をクリックします。

  4. BigQuery Studio の右側に Gemini のダイアログが開きます。

  5. [Gemini] ペインに「Cloud コンソールの Gemini へようこそ」メッセージが表示されます。[チャットを開始] をクリックします。チャット ウィンドウに以下のようなクエリの説明が表示されます。

注: チャット ウィンドウに説明が表示されない場合は、クエリ全体を選択してから [このクエリを説明する] をもう一度クリックしてください。
  1. 説明を確認します。
注: 生成ツールである Gemini Code Assist の回答は、毎回少しずつ異なりますが、重要なポイントは同じです。
  1. Gemini から次のようなレスポンスが返されます。

    この GoogleSQL クエリは、Google アナリティクスのセッション データのサンプルを抽出し、ML や分析に適した形式に変換するように設計されています。
  2. [実行] をクリックします。

  3. [保存] をクリックし、[ビューを保存] を選択します。

  4. [ビューを保存] ダイアログ ボックスで [データセット] をクリックし、[bqml_lab] を選択します。

  5. [テーブル] に「training_data」と入力し、[保存] をクリックします。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 ビューテーブルを作成します。

タスク 2. モデルを作成する

このタスクでは、BigQuery で SQL クエリの自然言語プロンプトを使用して、サイト訪問者の取引を予測する新しい ML モデルを生成します。ロジスティック回帰モデルタイプを指定し、既存の training_data を使用してトレーニングします。

  1. + をクリックして新しい SQL クエリを作成します。BigQuery Studio に新しいタブが表示されます。

  2. SQL 生成ツール をクリックして SQL 生成ツールにアクセスします。[Gemini を使用して SQL を生成] ダイアログが表示されます。このウィンドウで自然言語のプロンプトを入力して新しい SQL ステートメントを生成できます。

  3. 以下のプロンプトをコピーして貼り付けます

    training_data ビュー テーブルを使用して、サイト訪問者が取引を行うかどうかを予測する、名前 sample_model、タイプ logistic_reg のモデルを作成します。
  4. [生成] をクリックします。Gemini は以下のような SQL クエリを提案します。

    CREATE MODEL `{{{project_0.project_id|set at lab start}}}`.`bqml_lab`.`sample_model` OPTIONS ( model_type = 'LOGISTIC_REG', input_label_cols = ['label']) AS SELECT label, os, is_mobile, country, pageviews FROM `{{{project_0.project_id|set at lab start}}}`.`bqml_lab`.`training_data`;
注: 生成されたクエリでエラー メッセージが表示された場合は、クエリ構文を調整するか、上記の例に合わせてクエリ全体を置き換えることを検討してください。
  1. [挿入] をクリックします。

  2. [実行] をクリックします。

ここで、bqml_lab はデータセットの名前、sample_model はモデルの名前、training_data は前のタスクで準備した取引データです。指定されたモデルタイプは 2 項ロジスティック回帰です。

CREATE MODEL コマンドを実行すると非同期で実行されるクエリジョブが作成されるため、BigQuery UI ウィンドウを閉じたり、更新したりといったことができます。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 モデルを作成する

(省略可)モデル情報とトレーニング統計

興味があれば、UI の左側のメニューで bqml_lab データセットをクリックしてから、sample_model モデルをクリックすると、モデルに関する情報が得られます。[詳細] タブに、モデルの生成に使用される基本的なモデル情報とトレーニング オプションが表示されます。[トレーニング統計] の下には、次のようなテーブルが表示されます。

イテレーション、データ損失、学習率、完了時間に関するデータが 6 列に 11 行表示されたテーブル

タスク 3. モデルを評価する

このタスクでは、ML.EVALUATE 関数を使用して、ML モデルのパフォーマンスを評価します。これにより、モデルがサイト訪問者の取引をどの程度正確に予測しているかを示す重要な指標が得られます。

  1. + をクリックして新しい SQL クエリを作成します。BigQuery Studio に新しいタブが表示されます。

  2. SQL 生成ツール をクリックして SQL 生成ツールにアクセスします。[Gemini を使用して SQL を生成] ダイアログが表示されます。このウィンドウで自然言語のプロンプトを入力して新しい SQL ステートメントを生成できます。

  3. 以下のプロンプトをコピーして貼り付けます。

    `ml.EVALUATE` 関数を使用して、モデル `bqml_lab.sample_model` のパフォーマンスを評価するクエリを作成します。
  4. [生成] をクリックします。Gemini は以下のような SQL クエリを提案します。

    SELECT * FROM ML.EVALUATE( MODEL `{{{project_0.project_id|set at lab start}}}`.`bqml_lab`.`sample_model`, TABLE `{{{project_0.project_id|set at lab start}}}`.`bqml_lab`.`training_data`);
注: 生成されたクエリでエラー メッセージが表示された場合は、クエリ構文を調整するか、上記の例に合わせてクエリ全体を置き換えることを検討してください。
  1. [挿入] をクリックします。

  2. [実行] をクリックします。

以下のようなテーブルが表示されます。

結果テーブル

タスク 4. モデルを使用する

このタスクでは、BigQuery の ML.PREDICT 関数を使用して予測を行う方法を学習します。まず、正しくない関数を使用するクエリをデバッグする必要があります。Gemini を使用して構文エラーを特定して修正してから、クエリを実行して購入上位 10 か国を予測します。

  1. + をクリックして新しい SQL クエリを作成し、以下のクエリを実行します。
SELECT IF(totals.transactions IS NULL, 0, 1) AS label, IFNULL(device.operatingSystem, "") AS os, device.isMobile AS is_mobile, IFNULL(geoNetwork.country, "") AS country, IFNULL(totals.pageviews, 0) AS pageviews, fullVisitorId FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` WHERE _TABLE_SUFFIX BETWEEN '20170701' AND '20170801';

クエリの SELECTFROM の部分はトレーニング データの生成に使用したものと似ていることにお気づきでしょうか。追加の fullVisitorId 列は、各ユーザーが行う取引の予測に使用されます。対象期間(2017 年 7 月 1 日~8 月 1 日)の変更には、WHERE 句の値で対応します。

  1. ここでは、この 7 月分のデータを保存して、次のステップでモデルを使用した予測を行うために使用します。

  2. [保存] をクリックし、[ビューを保存] を選択します。

  3. [ビューを保存] ダイアログ ボックスで [データセット] をクリックし、[bqml_lab] を選択します。

  4. [テーブル] に「july_data」と入力し、[保存] をクリックします。

国 / 地域別の購入数を予測する

このクエリでは、国または地域ごとの訪問者による取引の数を予測し、結果を並べ替えて、購入数の上位 10 件を抽出します。

  1. + をクリックして新しい SQL クエリを作成します。

  2. 以下のクエリをコピーして貼り付けます。

SELECT country, TOTAL(predicted_label) as total_predicted_purchases FROM ml.PREDICT(MODEL `bqml_lab.sample_model`, ( SELECT * FROM `bqml_lab.july_data`)) GROUP BY country ORDER BY total_predicted_purchases DESC LIMIT 10;
  1. [実行] をクリックします。クエリの実行に失敗し、次のエラーが表示されることを確認します。

    関数が見つかりません: TOTAL at [3:3]

Gemini とエラーからコードをデバッグする

  1. BigQuery で Gemini のチャット ウィンドウをクリックします。

  2. チャット ウィンドウで、次の質問をコピーして貼り付けます。

    このクエリを実行すると、「関数が見つかりません: TOTAL at [3:3]」と表示されるのはなぜですか?
  3. Shift+Enter キー(Mac の場合は Shift+return キー)を押して、チャット ウィンドウで新しい行に進みます。

  4. クエリを選択してコピーします。

  5. 先ほどの質問のすぐ後に貼り付けます。

  6. Shift+Enter キー(Mac の場合は Shift+return キー)を押して、チャット ウィンドウで新しい行に進みます。

  7. 以下の文をコピーして貼り付けます。

    問題を解決する新しいコードを提案してください。
  8. [メッセージを送信メッセージを送信] をクリックします。Gemini から回答が返されます。

  9. 回答で提案を確認します。これらの提案に基づいて、TOTAL() は BigQuery では有効な SQL 集計関数でないことが示されています。

考えられる解決策として、以下のような改良されたクエリが提案で提供されます。

SELECT country, SUM(predicted_label) as total_predicted_purchases FROM ml.PREDICT(MODEL `bqml_lab.sample_model`, ( SELECT * FROM `bqml_lab.july_data`)) GROUP BY country ORDER BY total_predicted_purchases DESC LIMIT 10;
  1. 改良されたクエリをコピーします。

  2. + をクリックして新しい SQL クエリを作成します。

  3. 改良されたクエリを新しい [無題のクエリ] タブに貼り付けます。

  4. [実行] をクリックします。

このクエリは ml.PREDICT を使用し、BigQuery ML の部分は標準 SQL コマンドでラップされています。このラボでは、国とその国での購入の合計が必要なので、SELECTGROUP BYORDER BY を使用します。LIMIT は結果を上位 10 件に制限するために使用しています。

以下のようなテーブルが表示されます。

国ごとの合計予測購入件数のデータが 10 行に表示された 3 列のテーブル

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 エラーを修正して、国ごとに購入数の上位 10 件を取得します。

課題

ユーザーごとの購入数を予測する

今度は、各訪問者による取引の数を予測し、結果を並べ替えて、取引数の上位 10 人の訪問者を抽出します。

ラボを終了する

ラボが完了したら、[ラボを終了] をクリックします。ラボで使用したリソースが Google Cloud Skills Boost から削除され、アカウントの情報も消去されます。

ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信] をクリックします。

星の数は、それぞれ次の評価を表します。

  • 星 1 つ = 非常に不満
  • 星 2 つ = 不満
  • 星 3 つ = どちらともいえない
  • 星 4 つ = 満足
  • 星 5 つ = 非常に満足

フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。

フィードバックやご提案の送信、修正が必要な箇所をご報告いただく際は、[サポート] タブをご利用ください。

Copyright 2020 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。

始める前に

  1. ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
  2. ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
  3. 画面左上の [ラボを開始] をクリックして開始します

シークレット ブラウジングを使用する

  1. ラボで使用するユーザー名パスワードをコピーします
  2. プライベート モードで [コンソールを開く] をクリックします

コンソールにログインする

    ラボの認証情報を使用して
  1. ログインします。他の認証情報を使用すると、エラーが発生したり、料金が発生したりする可能性があります。
  2. 利用規約に同意し、再設定用のリソースページをスキップします
  3. ラボを終了する場合や最初からやり直す場合を除き、[ラボを終了] はクリックしないでください。クリックすると、作業内容がクリアされ、プロジェクトが削除されます

このコンテンツは現在ご利用いただけません

利用可能になりましたら、メールでお知らせいたします

ありがとうございます。

利用可能になりましたら、メールでご連絡いたします

1 回に 1 つのラボ

既存のラボをすべて終了して、このラボを開始することを確認してください

シークレット ブラウジングを使用してラボを実行する

このラボの実行には、シークレット モードまたはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウントの競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。