搭配使用機器學習和 AI 與 BigQuery DataFrames
BigQuery DataFrames 透過 bigframes.ml 程式庫,為 BigQuery DataFrames 提供機器學習和 AI 功能。
您可以在 BigQuery DataFrames 中預先處理資料、建立估算器來訓練模型、建立 ML 管道,以及分割訓練和測試資料集。
必要的角色
如要取得完成本文件工作所需的權限,請要求管理員在專案中授予您下列 IAM 角色:
-
使用遠端模型或 AI 功能:
BigQuery 連線管理員 (
roles/bigquery.connectionAdmin) -
在 BigQuery 筆記本中使用 BigQuery DataFrames:
-
BigQuery 使用者 (
roles/bigquery.user) -
筆記本執行階段使用者 (
roles/aiplatform.notebookRuntimeUser) -
程式碼建立者 (
roles/dataform.codeCreator)
-
BigQuery 使用者 (
-
使用預設 BigQuery 連線:
-
BigQuery 資料編輯者 (
roles/bigquery.dataEditor) -
BigQuery Connection 管理員 (
roles/bigquery.connectionAdmin) -
Cloud Functions 開發人員 (
roles/cloudfunctions.developer) -
服務帳戶使用者 (
roles/iam.serviceAccountUser) -
Storage 物件檢視者 (
roles/storage.objectViewer)
-
BigQuery 資料編輯者 (
-
使用 BigQuery DataFrames ML 遠端模型:
BigQuery 連線管理員 (
roles/bigquery.connectionAdmin)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
機器學習位置
bigframes.ml 程式庫支援的區域與 BigQuery ML 相同。所有 BigQuery 區域都支援 BigQuery ML 模型預測和其他 ML 函式。模型訓練支援服務因地區而異。詳情請參閱 BigQuery ML 位置。
預先處理資料
使用 bigframes.ml.preprocessing 模組和 bigframes.ml.compose 模組建立轉換器,準備資料以供估算器 (模型) 使用。BigQuery DataFrames 提供下列轉換:
如要將連續資料分組到間隔中,請使用
bigframes.ml.preprocessing模組中的KBinsDiscretizer類別。如要將目標標籤正規化為整數值,請使用
bigframes.ml.preprocessing模組中的LabelEncoder類別。如要將每個特徵按最大絕對值縮放至
[-1, 1]範圍,請使用bigframes.ml.preprocessing模組中的MaxAbsScaler類別。如要將每個特徵縮放至
[0, 1]範圍,藉此標準化特徵,請使用bigframes.ml.preprocessing模組中的MinMaxScaler類別。如要移除平均值並縮放至單位變異數,藉此標準化特徵,請使用
bigframes.ml.preprocessing模組中的StandardScaler類別。如要將類別值轉換為數值格式,請使用
bigframes.ml.preprocessing模組中的OneHotEncoder類別。如要將轉換器套用至 DataFrame 資料欄,請使用
bigframes.ml.compose模組中的ColumnTransformer類別。
訓練模型
您可以建立估算器,在 BigQuery DataFrames 中訓練模型。
分群模型
您可以使用 bigframes.ml.cluster 模組,為叢集模型建立估算器。如要建立 k-means 分群模型,請使用 KMeans 類別。使用這些模型進行資料區隔。例如識別顧客區隔。K-means 是一種非監督式的學習技術,讓模型訓練無須藉助標籤或拆分資料即可執行訓練或評估。
您可以使用 bigframes.ml.cluster 模組,為叢集模型建立估算器。
下列程式碼範例說明如何使用 bigframes.ml.cluster KMeans 類別,建立資料區隔的 k-means 叢集模型:
分解模型
您可以使用 bigframes.ml.decomposition 模組,為分解模型建立估算器。如要建立主成分分析 (PCA) 模型,請使用 PCA 類別。使用這些模型計算主成分,並用來對資料執行基底變更。使用 PCA 類別可將每個資料點投影到前幾個主要元件,藉此縮減維度,在取得低維度資料的同時,盡可能保留資料的變異。
集成模型
您可以使用 bigframes.ml.ensemble 模組,為集合模型建立估算器。
如要建立隨機森林分類器模型,請使用
RandomForestClassifier類別。您可以使用這些模型,建構多個用於分類的學習方法決策樹。如要建立隨機森林迴歸模型,請使用
RandomForestRegressor類別。使用這些模型,為迴歸建構多個學習方法決策樹。如要建立梯度提升樹狀結構分類器模型,請使用
XGBClassifier類別。使用這些模型,以加法方式建構多個分類學習方法決策樹。如要建立梯度提升樹狀迴歸模型,請使用
XGBRegressor類別。使用這些模型,以累加方式建構多個迴歸學習方法決策樹。
預測模型
您可以使用 bigframes.ml.forecasting 模組,為預測模型建立估算器。如要建立時間序列預測模型,請使用 ARIMAPlus 類別。
匯入的模型
您可以使用 bigframes.ml.imported 模組,為匯入的模型建立估算器。
如要匯入開放式神經網路交換 (ONNX) 模型,請使用
ONNXModel類別。如要匯入 TensorFlow 模型,請使用
TensorFlowModel類別。如要匯入 XGBoostModel 模型,請使用
XGBoostModel類別。
線性模型
使用 bigframes.ml.linear_model 模組,為線性模型建立估算器。
如要建立線性迴歸模型,請使用
LinearRegression類別。使用這些模型進行預測,例如預測指定日子的項目銷售額。如要建立邏輯迴歸模型,請使用
LogisticRegression類別。使用這些模型分類兩個以上可能的值,例如輸入是low-value、medium-value還是high-value。
下列程式碼範例說明如何使用 bigframes.ml 執行下列操作:
- 從 BigQuery 載入資料。
- 清理及準備訓練資料。
- 建立及套用 bigframes.ml.LinearRegression 迴歸模型。
大型語言模型
您可以使用 bigframes.ml.llm 模組,為 LLM 建立估算器。
如要建立 Gemini 文字生成器模型,請使用
GeminiTextGenerator類別。使用這些模型執行文字生成工作。如要為遠端大型語言模型 (LLM) 建立估算器,請使用
bigframes.ml.llm模組。
下列程式碼範例說明如何使用 bigframes.ml.llm
GeminiTextGenerator
類別建立 Gemini 模型,用於生成程式碼:
遠端模型
如要使用 BigQuery DataFrames ML 遠端模型 (bigframes.ml.remote 或 bigframes.ml.llm),請啟用下列 API:
使用 BigQuery DataFrames ML 遠端模型時,如果使用預設 BigQuery 連線,您需要專案 IAM 管理員角色 (roles/resourcemanager.projectIamAdmin);如果使用預先設定的連線,則需要瀏覽器角色 (roles/browser)。如要避免這項規定,請將 bigframes.pandas.options.bigquery.skip_bq_connection_check 選項設為 True,這樣系統就會直接使用連線 (預設或預先設定),不會檢查連線是否存在或權限。如果使用預先設定的連線並略過連線檢查,請確認下列事項:
- 連線是在正確位置建立。
- 如果您使用 BigQuery DataFrames ML 遠端模型,服務帳戶在專案中必須具有 Vertex AI 使用者角色 (
roles/aiplatform.user)。
在 BigQuery DataFrames 中建立遠端模型時,會建立 BigQuery 連線。根據預設,系統會使用名為 bigframes-default-connection 的連線。您也可以使用預先設定的 BigQuery 連線,這樣系統就會略過連線建立程序。預設連線的服務帳戶已取得專案的 Vertex AI 使用者角色 (roles/aiplatform.user)。
建立管道
您可以使用 bigframes.ml.pipeline 模組建立機器學習管道。您可以透過管道組裝多個機器學習步驟,同時設定不同參數,一起進行交叉驗證。這可簡化程式碼,並讓您一併部署資料預先處理步驟和估算器。
如要建立含有最終估算器的轉換管道,請使用 Pipeline 類別。
選取模型
如要分割訓練和測試資料集並選取最佳模型,請使用 bigframes.ml.model_selection 模組模組:
如要將資料分割為訓練集和測試集 (評估集),請使用
train_test_split函式,如下列程式碼範例所示:X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)如要建立多重交叉驗證訓練和測試集,以訓練及評估模型,請使用
KFold類別和KFold.split方法,如以下程式碼範例所示。這項功能非常適合用於小型資料集。kf = KFold(n_splits=5) for i, (X_train, X_test, y_train, y_test) in enumerate(kf.split(X, y)): # Train and evaluate models with training and testing sets如要自動建立多重訓練和測試集、訓練及評估模型,並取得每個摺疊的結果,請使用
cross_validate函式,如下列程式碼範例所示:scores = cross_validate(model, X, y, cv=5)
後續步驟
- 瞭解 BigQuery DataFrames 資料型別系統。
- 瞭解如何使用 Gemini 生成 BigQuery DataFrames 程式碼。
- 瞭解如何使用 BigQuery DataFrames 分析 PyPI 的套件下載次數。
- 在 GitHub 上查看 BigQuery DataFrames 的原始碼、範例筆記本和範例。
- 請參閱 BigQuery DataFrames API 參考資料。