BigQuery ML 建模實戰
課程概述
BigQuery ML(BQML)讓資料分析師不用學 Python 或 TensorFlow,直接在 BigQuery 裡用 SQL 就能建立、訓練、部署機器學習模型。資料也不用搬到別的平台,從「看到資料」到「跑出預測模型」的時間就短很多。這門課會帶你從零做出第一個 BQML 模型,並學會怎麼評估它、怎麼拿它來預測。

BQML 把訓練、評估與預測收進資料倉儲,讓同一套 SQL 工作流不必匯出資料。先依問題選模型,再以指標門檻判斷是否可用;只有需要線上低延遲服務時才把模型部署到端點。
你將學到
- 使用
CREATE MODEL語法建立線性迴歸與邏輯迴歸模型 - 使用
ML.EVALUATE評估模型效能指標 - 使用
ML.PREDICT對新資料進行預測 - 理解 BQML 支援的模型類型與適用場景
- 將 BQML 模型匯出至 Vertex AI 進行線上服務
核心概念
BigQuery ML 的定位
傳統 ML 工作流要走這幾步:匯出資料 → 預處理 → 選框架 → 訓練 → 評估 → 部署。BQML 把這一整串都收進 BigQuery,全用 SQL 搞定。哪些人特別適合用它?
- 熟悉 SQL 但不熟悉 Python 的資料分析師
- 需要快速驗證 ML 想法的資料科學家
- 想在不搬移資料的情況下建立模型的團隊
支援的模型類型
| 模型類型 | SQL 關鍵字 | 典型場景 |
|---|---|---|
| 線性迴歸 | LINEAR_REG | 預測銷售額、溫度 |
| 邏輯迴歸 | LOGISTIC_REG | 客戶流失預測、垃圾郵件分類 |
| K-Means 聚類 | KMEANS | 客戶分群、異常偵測 |
| XGBoost | BOOSTED_TREE_CLASSIFIER/REGRESSOR | 高精確度分類與迴歸 |
| DNN | DNN_CLASSIFIER/REGRESSOR | 複雜非線性關係 |
| ARIMA Plus | ARIMA_PLUS | 時間序列預測 |
| 匯入模型 | TENSORFLOW | 使用自訓練 TF 模型 |

模型選擇從問題定義開始:沒有標籤可考慮分群;有標籤時再看預測目標是類別、連續數值或時間序列,最後才比較各演算法的精度、成本與可解釋性。
建模流程
-- Step 1: 建立模型
CREATE OR REPLACE MODEL `dataset.my_model`
OPTIONS(model_type='LOGISTIC_REG', input_label_cols=['label'])
AS SELECT * FROM `dataset.training_data`;
-- Step 2: 評估模型
SELECT * FROM ML.EVALUATE(MODEL `dataset.my_model`);
-- Step 3: 預測
SELECT * FROM ML.PREDICT(MODEL `dataset.my_model`,
(SELECT * FROM `dataset.new_data`));

正確順序是先切分資料,再讓特徵轉換只從訓練集學習;把轉換寫進模型可在評估與預測時一致套用,避免測試資訊洩漏,也避免線上特徵與訓練特徵不一致。
模型評估指標
- 迴歸模型:關注
mean_squared_error(越低越好)和r2_score(越接近 1 越好) - 分類模型:關注
accuracy、precision、recall和f1_score - AUC-ROC:邏輯迴歸的核心指標,0.5 表示隨機猜測,1.0 表示完美分類
%%{init: {"flowchart": {"curve": "linear", "nodeSpacing": 24, "rankSpacing": 32}}}%%
flowchart TD
GOAL["定義預測目標、業務基線<br/>與可接受指標"] --> TRAIN["按時間/實體切分資料,<br/>以 TRANSFORM 固定特徵後訓練"]
TRAIN --> GATE{"ML.EVALUATE 是否優於基線,<br/>且沒有資料洩漏?"}
GATE -->|"否"| REVISE["回查標籤、特徵、切分方式<br/>與模型類型後重新訓練"]
GATE -->|"是"| DELIVERY{"預測結果如何被使用?"}
DELIVERY -->|"排程或大批資料"| BATCH["以 ML.PREDICT 寫入結果表"]
DELIVERY -->|"線上低延遲請求"| ONLINE["登錄或匯出模型<br/>並部署 Vertex AI Endpoint"]
BATCH --> MONITOR["監控資料分佈、預測品質與成本"]
ONLINE --> MONITOR
流程圖暫時無法顯示,請重新整理頁面後再試。
實作重點
CREATE MODEL語句會啟動訓練 Job,大型資料集可能需要數分鐘到數十分鐘- 用
TRANSFORM子句可以在建模時一併把特徵工程定義好,這樣預測時就會自動套同一套轉換,不會兩邊兜不起來 - 想知道模型用了哪些特徵、哪個比較重要,用
ML.FEATURE_INFO看 - 常見的雷:類別資訊如果是用數字編碼的(例如 0/1/2 代表三種分類),BQML 會把它誤當成連續數值特徵,要先
CAST成 STRING,它才會當類別特徵去做 one-hot 編碼 - 成本提醒:BQML 訓練按資料掃描量計費,建議先用小資料集測試查詢邏輯
Skill Badge 指引
Lab 連結:Create ML Models with BigQuery ML — 完成此 lab 可獲得 Skill Badge
延伸學習
- Vertex AI 機器學習解決方案 — 當你需要更多彈性,可以看看 Vertex AI 這個功能更完整的平台
- BigQuery ML 推論實戰 — 想再進一步玩 BQML 的進階推論技巧,看這篇
- 在 BigQuery 中使用 Gemini 模型 — 結合 BQML 與 Gemini 大語言模型
Study Jam:數據與 AI 基礎 — 5/12 完成
查看系列全覽 →