1. はじめに
概要
このラボでは、不動産シナリオを軸に、BigQuery でマルチモーダル データ サイエンス ワークフローを試します。住宅リスティングとその画像の未加工のデータセットから始め、AI でこのデータを拡充して視覚的特徴を抽出し、クラスタリング モデルを構築して個別の市場セグメントを見つけ、最後にベクトル エンベディングを使用して強力なビジュアル検索ツールを作成します。
この SQL ネイティブ ワークフローと最新の生成 AI アプローチを比較します。データ サイエンス エージェントを使用して、簡単なテキスト プロンプトから Python ベースのクラスタリング モデルを自動的に生成します。
学習内容
- 特徴量エンジニアリングを通じて分析を行うために、不動産リスティングの元データセットを準備します。
- BigQuery の AI 関数を使用して住宅の写真を分析し、重要な視覚的特徴を特定することで、リスティングを拡充します。
- BigQuery ML(BQML)を使用して K 平均法モデルを構築して評価し、プロパティを個別のクラスタにセグメント化します。
- Data Science Agent を使用して Python でクラスタリング モデルを生成し、モデルの作成を自動化します。
- 住宅の画像のエンベディングを生成して、ビジュアル検索ツールを強化し、テキストまたは画像クエリで類似した住宅を見つける。
前提条件
このラボを開始する前に、以下について理解しておく必要があります。
- 基本的な SQL と Python プログラミング。
- Jupyter ノートブックで Python コードを実行する。
2. 始める前に
Google Cloud プロジェクトの作成
- Google Cloud コンソールのプロジェクト セレクタ ページで、Google Cloud プロジェクトを選択または作成します。

- Cloud プロジェクトに対して課金が有効になっていることを確認します。プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。
Cloud Shell で API を有効にする
Cloud Shell は、必要なツールがプリロードされた Google Cloud で動作するコマンドライン環境です。
- Google Cloud コンソールの上部にある [Cloud Shell をアクティブにする] をクリックします。

- Cloud Shell に接続したら、次のコマンドを実行して Cloud Shell で認証を確認します。
gcloud auth list
- 次のコマンドを実行して、プロジェクトが gcloud で使用するように構成されていることを確認します。
gcloud config list project
- プロジェクトが設定されていない場合は、次のコマンドを使用して設定します。
export PROJECT_ID=<YOUR_PROJECT_ID>
gcloud config set project $PROJECT_ID
API を有効にする
- 次のコマンドを実行して、必要なすべての API とサービスを有効にします。
gcloud services enable bigquery.googleapis.com \
bigqueryunified.googleapis.com \
cloudaicompanion.googleapis.com \
aiplatform.googleapis.com
- コマンドが正常に実行されると、次のようなメッセージが表示されます。
Operation "operations/..." finished successfully.
- Cloud Shell を終了します。
3. BigQuery Studio でラボ ノートブックを開く
UI の操作:
- Google Cloud コンソールで、ナビゲーション メニュー > [BigQuery] に移動します。

- [BigQuery Studio] ペインで、プルダウン矢印ボタンをクリックし、[ノートブック] にカーソルを合わせて、[アップロード] を選択します。

- [URL] ラジオボタンを選択し、次の URL を入力します。
https://github.com/GoogleCloudPlatform/generative-ai/blob/main/gemini/use-cases/applying-llms-to-data/ai-assisted-data-science/ai-assisted-data-science.ipynb
- リージョンを
us-central1に設定し、[アップロード] をクリックします。

- ノートブックを開くには、プロジェクト ID を含む [エクスプローラ] ペインのプルダウン矢印をクリックします。[ノートブック] のプルダウンをクリックします。ノートブック
ai-assisted-data-scienceをクリックします。

- (省略可)BigQuery ナビゲーション メニューと Notebook の目次を折りたたんで、スペースを広げます。

4. ランタイムに接続して設定コードを実行する
- [接続] をクリックします。ポップアップが表示されたら、ユーザーで Colab Enterprise を承認します。ノートブックはランタイムに自動的に接続されます。完了するまでに数分かかることがあります。

- ランタイムが確立されると、次のように表示されます。

- ノートブック内で、[設定] セクションまでスクロールします。非表示のセルの横にある [実行] ボタンをクリックします。これにより、ラボに必要なリソースがプロジェクトに作成されます。この処理が完了するまでに 1 分ほどかかることがあります。それまでの間、[Setup] のセルをご確認ください。

5. データの準備と特徴量エンジニアリング
このセクションでは、データ サイエンス プロジェクトの最初の重要なステップであるデータの準備について説明します。まず、BigQuery データセットを作成して作業を整理し、Cloud Storage の CSV ファイルから新しいテーブルに不動産 / 住宅の生データを読み込みます。
次に、この未加工データを新しい特徴を含むクリーンなテーブルに変換します。これには、リスティングのフィルタリング、新しい property_age 特徴の作成、マルチモーダル分析用の画像データの準備が含まれます。
6. AI 関数によるマルチモーダル エンリッチメント
次に、生成 AI の機能を使用してデータを拡充します。このセクションでは、BigQuery の組み込み AI 関数を使用して、各住宅リスティングの画像を分析します。
BigQuery を Gemini モデルに接続すると、SQL を使用して画像から新しい価値のある特徴(物件が水辺に近いかどうか、家の簡単な説明など)を直接抽出できます。
7. K 平均法クラスタリングを使用したモデルのトレーニング
新しく拡充されたデータセットを使用して、ML モデルを構築する準備が整いました。目標は、住宅物件を個別のグループにセグメント化することです。これを行うには、BigQuery Machine Learning(BQML)を使用して、BigQuery で K 平均法クラスタリング モデルを直接トレーニングします。この単一のステップの一環として、モデルを Vertex AI Model Registry に登録することもできます。これにより、Google Cloud の広範な MLOps エコシステム内でモデルをすぐに利用できるようになります。
モデルが正常に登録されたことを確認するには、次の手順で Vertex AI Model Registry でモデルを見つけます。
- Google Cloud コンソールで、左上にあるナビゲーション メニュー(☰)をクリックします。
- [Vertex AI] セクションまでスクロールして、[Model Registry] をクリックします。これで、BQML モデルが他のすべてのカスタムモデルとともに表示されます。

- モデルのリストで、housing_clustering という名前のモデルを見つけます。次のステップとして、エンドポイントにデプロイできます。これにより、BigQuery 環境外でリアルタイムのオンライン予測にモデルを使用できるようになります。

モデル レジストリを確認したら、次の手順で BigQuery の Colab ノートブックに戻ることができます。
- ナビゲーション メニュー(☰)で、[BigQuery] > [Studio] に移動します。
- [エクスプローラ] ペインでメニューを開き、ノートブックを見つけて開きます。
8. モデルの評価と予測
モデルをトレーニングしたら、次は作成されたクラスタを理解します。ここでは、ML.EVALUATE や ML.CENTROIDS などの BigQuery ML 関数を使用して、モデルの品質と各セグメントの定義特性を分析します。
次に、ML.PREDICT を使用して、各家をクラスタに割り当てます。%%bigquery df マジック コマンドでこのクエリを実行すると、結果が df という名前の pandas DataFrame に保存されます。これにより、後続の Python ステップでデータをすぐに使用できるようになります。これは、Colab Enterprise での SQL と Python の相互運用性を強調しています。
9. クラスタを可視化して解釈する
予測が DataFrame に読み込まれたので、データを可視化して活用できます。このセクションでは、Matplotlib などの一般的な Python ライブラリを使用して、住宅セグメント間の違いを調べます。
箱ひげ図と棒グラフを作成して、価格や物件の築年数などの重要な特徴を視覚的に比較し、各クラスタを直感的に理解できるようにします。
10. Gemini モデルを使用してクラスタの説明を生成する
数値の重心とグラフは強力ですが、生成 AI を使用すると、さらに一歩進んで、住宅セグメントごとにリッチで定性的なペルソナを作成できます。これにより、クラスタが何を表しているかだけでなく、誰を表しているかも把握できます。
このセクションでは、まず価格や面積など、各クラスタの平均統計情報を集計します。次に、このデータを Gemini モデルのプロンプトに渡します。次に、モデルに不動産専門家として行動し、各セグメントの主な特徴とターゲット購入者を含む詳細な概要を生成するように指示します。結果として、マーケティング チームがクラスタをすぐに理解して行動に移せる、明確で人間が読める形式の説明が得られます。
プロンプトは適宜変更して、結果を試してみてください。
11. データ サイエンス エージェントによるモデリングの自動化
ここでは、強力な代替ワークフローについて説明します。コードを手動で記述する代わりに、統合された Data Science エージェントを使用して、単一の自然言語プロンプトから完全なクラスタリング モデル ワークフローを自動的に生成します。
エージェントを使用してモデルを生成して実行する手順は次のとおりです。
- [BigQuery Studio] ペインで、プルダウン矢印ボタンをクリックし、[ノートブック] にカーソルを合わせて、[空のノートブック] を選択します。これにより、エージェントのコードが元のラボノートブックに干渉しないようにします。

- ノートブックの下部にデータ サイエンス エージェントのチャット インターフェースが開きます。[パネルに移動] ボタンをクリックして、チャットを右側に固定します。

- チャット ペインに「
@listing_multimodal」と入力し、表をクリックします。これにより、listings_multimodalテーブルがコンテキストとして明示的に設定されます。

- 以下のプロンプトをコピーして、エージェント チャット ボックスに入力します。その後、[送信] をクリックして、プロンプトをエージェントに送信します。
Use the selected table to generate a k-means clustering model with 3 clusters for housing listings. Then, help me understand the characteristics of each cluster so I can market to them as a real estate professional. Use Python.

- エージェントは考え、計画を立てます。このプランで問題がなければ、[承認して実行] をクリックします。エージェントは、1 つ以上の新しいセルに Python コードを生成します。

- エージェントは、生成したコードブロックごとに [Accept & Run] をクリックするよう求めます。これにより、人間がループに関与し続けることができます。コードを確認または編集して、完了するまで各ステップを続行してください。

- 完了したら、この新しいノートブックのタブを閉じて、元の
ai-assisted-data-science.ipynbタブに戻り、ラボの最後のセクションに進みます。
12. エンベディングとベクトル検索を使用したマルチモーダル検索
この最後のセクションでは、BigQuery 内で直接マルチモーダル検索を実装します。これにより、テキストの説明に基づいて物件を見つけたり、サンプル写真に似た物件を見つけたりするなど、直感的な検索が可能になります。
このプロセスでは、まず各家の画像をエンベディングと呼ばれる数値表現に変換します。エンベディングは画像の意味的意味を捉え、数値ベクトルを比較して類似アイテムを見つけることができます。
multimodalembedding モデルを使用して、すべてのリスティングのベクトルを生成します。ルックアップを高速化するベクトル インデックスを作成したら、テキストから画像への類似性検索(説明に一致する家を見つける)と画像から画像への類似性検索(サンプル画像に似た家を見つける)の 2 種類の類似性検索を実行します。
この作業はすべて BigQuery で行います。ML.GENERATE_EMBEDDING などの関数を使用してエンベディングを生成したり、VECTOR_SEARCH を使用して類似検索を行ったりします。
13. クリーンアップ
このプロジェクトで使用しているすべての Google Cloud リソースをクリーンアップするには、Google Cloud プロジェクトを削除します。
また、ノートブックの新しいセルで次のコードを実行して、作成した個々のリソースを削除することもできます。
# Delete the BigQuery tables
!bq rm --table -f housing_dataset.listings
!bq rm --table -f housing_dataset.listings_multimodal
!bq rm --table -f housing_dataset.home_embeddings
# Delete the remote model
!bq rm --model -f housing_dataset.gemini
!bq rm --model -f housing_dataset.kmeans_clustering_model
!bq rm --model -f housing_dataset.multimodal_embedding_model
# Delete the remote connection
!bq rm --connection --project_id=$PROJECT_ID --location=us ai_connection
# Delete the BigQuery dataset
!bq rm -r -f $PROJECT_ID:housing_dataset
最後に、ノートブック自体を削除します。
- BigQuery Studio の [エクスプローラ] ペインで、プロジェクトと [ノートブック] ノードを開きます。
ai-assisted-data-scienceノートブックの横にあるその他アイコンをクリックします。- [削除] を選択します。
14. 完了
以上で、この Codelab は完了です。
学習した内容
- 特徴量エンジニアリングを通じて分析を行うために、不動産リスティングの元データセットを準備します。
- BigQuery の AI 関数を使用して住宅の写真を分析し、重要な視覚的特徴を特定することで、リスティングを拡充します。
- BigQuery ML(BQML)を使用して K 平均法モデルを構築して評価し、プロパティを個別のクラスタにセグメント化します。
- Data Science Agent を使用して Python でクラスタリング モデルを生成し、モデルの作成を自動化します。
- 住宅の画像のエンベディングを生成して、ビジュアル検索ツールを強化し、テキストまたは画像クエリで類似した住宅を見つける。