利用 BigQuery 实现 AI 辅助的数据科学

1. 简介

概览

在本实验中,您将围绕房地产场景探索 BigQuery 中的多模态数据科学工作流。您将从房屋房源及其图片的原始数据集开始,使用 AI 丰富这些数据以提取视觉特征,构建聚类模型以发现不同的细分市场,最后使用向量嵌入创建强大的视觉搜索工具。

您将使用 Data Science Agent 通过简单的文本提示自动生成基于 Python 的聚类模型,从而将这种 SQL 原生工作流与现代生成式 AI 方法进行比较。

学习内容

  • 准备原始数据集,其中包含房地产房源信息,以便通过特征工程进行分析。
  • 使用 BigQuery 的 AI 函数分析房屋照片中的关键视觉特征,从而丰富房源
  • 使用 BigQuery 机器学习 (BQML) 构建并评估 K-means 模型,将房源划分为不同的聚类。
  • 使用 Data Science Agent 通过 Python 生成聚类模型,自动创建模型
  • 为房屋图片生成嵌入,以支持视觉搜索工具,通过文本或图片查询查找类似的房屋。

前提条件

在开始本实验之前,您应该先熟悉:

  • SQL 和 Python 编程基础知识。
  • 在 Jupyter 笔记本中运行 Python 代码。

2. 准备工作

创建 Google Cloud 项目

  1. Google Cloud 控制台的项目选择器页面上,选择或创建一个 Google Cloud 项目

选择项目

  1. 确保您的 Cloud 项目已启用结算功能。了解如何检查项目是否已启用结算功能

使用 Cloud Shell 启用 API

Cloud Shell 是在 Google Cloud 中运行的命令行环境,预加载了必要的工具。

  1. 点击 Google Cloud 控制台顶部的激活 Cloud Shell

激活 Cloud Shell

  1. 连接到 Cloud Shell 后,运行以下命令以验证您在 Cloud Shell 中的身份验证:
gcloud auth list
  1. 运行以下命令,确认您的项目已配置为可与 gcloud 搭配使用:
gcloud config list project
  1. 如果项目未设置,请使用以下命令进行设置:
export PROJECT_ID=<YOUR_PROJECT_ID>
gcloud config set project $PROJECT_ID

启用 API

  1. 运行以下命令以启用所有必需的 API 和服务:
gcloud services enable bigquery.googleapis.com \
                       bigqueryunified.googleapis.com \
                       cloudaicompanion.googleapis.com \
                       aiplatform.googleapis.com
  1. 成功执行该命令后,您应该会看到类似于以下消息的消息:
Operation "operations/..." finished successfully.
  1. 退出 Cloud Shell。

3. 在 BigQuery Studio 中打开实验笔记本

  1. 在 Google Cloud 控制台中,依次前往导航菜单 > BigQuery

下拉箭头按钮

  1. BigQuery Studio 窗格中,点击下拉箭头按钮,将光标悬停在笔记本上,然后选择上传

下拉箭头按钮

  1. 选择网址单选按钮,然后输入以下网址:

https://github.com/GoogleCloudPlatform/generative-ai/blob/main/gemini/use-cases/applying-llms-to-data/ai-assisted-data-science/ai-assisted-data-science.ipynb

  1. 将区域设置为 us-central1,然后点击上传

从 GitHub 上传笔记本

  1. 如需打开笔记本,请点击包含项目 ID 的探索器窗格中的下拉箭头。然后,点击笔记本的下拉菜单。点击笔记本 ai-assisted-data-science

打开笔记本

  1. (可选)收起 BigQuery 导航菜单和笔记本的目录,以腾出更多空间。

收起窗格

4. 连接到运行时并运行设置代码

  1. 点击连接。如果系统弹出窗口,请使用您的用户身份授权 Colab Enterprise。笔记本会自动连接到运行时。这可能需要几分钟时间才能完成。

连接到运行时

  1. 建立运行时后,您将看到以下内容:

有效运行时

  1. 在笔记本中,滚动到设置部分。点击隐藏单元格旁边的“运行”按钮。此命令会在您的项目中创建实验所需的一些资源。此过程可能需要 1 分钟才能完成。在此期间,您可以随时查看设置下的单元。

运行设置代码

5. 数据准备和特征工程

在本部分中,您将完成任何数据科学项目中的第一个重要步骤:准备数据。首先,您需要创建一个 BigQuery 数据集来整理工作,然后将 Cloud Storage 中 CSV 文件中的原始房地产 / 住宅数据加载到新表中。

然后,您将把这些原始数据转换为包含新特征的清理后的表。这包括过滤商品详情、创建新的 property_age 特征,以及准备图片数据以进行多模态分析。

6. 利用 AI 函数实现多模态丰富化

现在,您将利用生成式 AI 的强大功能来丰富数据。在本部分中,您将使用 BigQuery 的内置 AI 函数来分析每个房源信息的图片。

通过将 BigQuery 连接到 Gemini 模型,您可以直接使用 SQL 从图片中提取新的有价值的特征(例如房产是否靠近水域以及房屋的简要说明)。

7. 使用 K-Means 聚类进行模型训练

现在,您已拥有新扩充的数据集,可以开始构建机器学习模型了。您的目标是将房源信息划分为不同的群组,为此,您需要使用 BigQuery Machine Learning (BQML) 直接在 BigQuery 中训练 K-means 聚类模型。在此单步操作中,您还可以将模型注册到 Vertex AI Model Registry,从而使其立即在 Google Cloud 上更广泛的 MLOps 生态系统中可用。

如需确认模型已成功注册,您可以按照以下步骤在 Vertex AI Model Registry 中找到该模型:

  1. 在 Google Cloud 控制台中,点击左上角的导航菜单 (☰)。
  2. 滚动到 Vertex AI 部分,然后点击 Model Registry。现在,您会看到 BQML 模型与所有其他自定义模型一起列出。

前往 Model Registry

  1. 在模型列表中,找到名为 housing_clustering 的模型。您可以采取下一步措施,部署到端点,这样一来,您的模型就可以在 BigQuery 环境之外进行实时在线预测。

前往 Model Registry

探索模型注册表后,您可以按照以下步骤返回到 BigQuery 中的 Colab 笔记本:

  1. 导航菜单 (☰) 中,依次前往 BigQuery > Studio
  2. 展开探索窗格中的菜单,找到您的笔记本并将其打开。

8. 模型评估和预测

训练模型后,下一步是了解模型创建的聚类。在此处,您将使用 ML.EVALUATEML.CENTROIDS 等 BigQuery Machine Learning 函数来分析模型的质量以及每个细分的定义特征。

然后,使用 ML.PREDICT 将每个住宅分配给一个聚类。通过使用 %%bigquery df 魔法命令运行此查询,您可以将结果存储在名为 df 的 Pandas DataFrame 中。这样一来,数据便可立即用于后续的 Python 步骤。这突显了 Colab Enterprise 中 SQL 和 Python 之间的互操作性。

9. 直观呈现和解读聚类结果

现在,您已将预测结果加载到 DataFrame 中,接下来可以创建可视化图表,让数据更加生动。在本部分中,您将使用 Matplotlib 等热门 Python 库来探索住宅细分之间的差异。

您将创建箱线图和条形图,直观地比较价格和房产年龄等关键特征,从而轻松直观地了解每个聚类。

10. 使用 Gemini 模型生成聚类说明

虽然数值型质心和图表功能强大,但借助生成式 AI,您可以更进一步,为每个住宅细分创建丰富而定性的买家角色。这有助于您了解聚类分析结果不仅是什么,还代表哪些人

在本部分中,您将首先汇总每个聚类的平均统计信息,例如价格和平方英尺。然后,您会将此数据传递给 Gemini 模型的提示。然后,您指示模型扮演房地产专业人士的角色,并生成详细的摘要,包括每个细分受众群的关键特征和目标买家。最终生成一组清晰且直观易懂的说明,让营销团队能够立即理解这些聚类并采取行动。

您可以根据自己的需要随意更改提示,并尝试查看结果!

11. 使用数据科学代理自动执行建模

现在,您将探索一种强大的替代工作流。您将使用集成的数据科学智能体,而不是手动编写代码,通过单个自然语言提示自动生成完整的聚类模型工作流。

按照以下步骤操作,即可使用智能体生成并运行模型:

  1. BigQuery Studio 窗格中,点击下拉箭头按钮,将鼠标悬停在笔记本上,然后选择空白笔记本。这样可确保代理的代码不会干扰您的原始实验笔记本。

打开新建的笔记本

  1. 数据科学代理聊天界面随即会在笔记本底部打开。点击移至面板按钮,将聊天固定到右侧。

打开新建的笔记本

  1. 在聊天窗格中开始输入 @listing_multimodal,然后点击表格。这会明确将 listings_multimodal 表设置为上下文。

向代理添加表格上下文

  1. 复制下方的提示,然后将其输入到代理聊天框中。然后,点击发送,将提示提交给智能体。
    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 代码。

接受代理创建计划

  1. 智能体要求您接受并运行其生成的每个代码块。这样可以保持人机协同。您可以随意查看或修改代码,然后继续执行每个步骤,直到完成为止。

运行代理代码

  1. 完成后,只需关闭此新笔记本标签页,然后返回原始 ai-assisted-data-science.ipynb 标签页,继续完成实验的最后一部分。

12. 使用嵌入和向量搜索进行多模态搜索

在本最后一部分中,您将直接在 BigQuery 中实现多模态搜索。这样一来,您就可以进行直观的搜索,例如根据文本描述查找房屋,或查找与示例图片相似的住宅。

该流程首先会将每张房屋图片转换为称为“嵌入”的数值表示形式。嵌入可捕获图片的语义含义,让您可以通过比较数值向量来查找相似的商品。

您将使用 multimodalembedding 模型为所有商品详情生成这些向量。创建向量索引以加快查找速度后,您就可以执行两种类型的相似性搜索:文本到图片(查找与描述匹配的住宅)和图片到图片(查找与示例图片相似的住宅)。

您将在 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

最后,您可以删除笔记本本身:

  1. 在 BigQuery Studio 的探索器窗格中,展开您的项目和笔记本节点。
  2. 点击 ai-assisted-data-science 笔记本旁边的三个竖点。
  3. 选择删除

14. 恭喜!

恭喜您完成此 Codelab!

所学内容

  • 准备原始数据集,其中包含房地产房源信息,以便通过特征工程进行分析。
  • 使用 BigQuery 的 AI 函数分析房屋照片中的关键视觉特征,从而丰富房源
  • 使用 BigQuery 机器学习 (BQML) 构建并评估 K-means 模型,将房源细分为不同的聚类。
  • 使用 Data Science Agent 通过 Python 生成聚类模型,自动创建模型
  • 为房屋图片生成嵌入,以支持视觉搜索工具,通过文本或图片查询查找类似的房屋。