Menggunakan ML dan AI dengan BigQuery DataFrames

BigQuery DataFrames menyediakan kemampuan ML dan AI untuk BigQuery DataFrames menggunakan library bigframes.ml.

Anda dapat melakukan prapemrosesan data, membuat estimator untuk melatih model di BigQuery DataFrames, membuat pipeline ML, dan membagi set data pelatihan dan pengujian.

Peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan untuk menyelesaikan tugas dalam dokumen ini, minta administrator Anda untuk memberi Anda peran IAM berikut di project Anda:

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Lokasi ML

Library bigframes.ml mendukung lokasi yang sama dengan BigQuery ML. Prediksi model ML BigQuery dan fungsi ML lainnya didukung di semua region BigQuery. Dukungan untuk pelatihan model bervariasi menurut region. Untuk mengetahui informasi selengkapnya, lihat Lokasi BigQuery ML.

Melakukan prapemrosesan data

Buat transformer untuk menyiapkan data agar dapat digunakan dalam estimator (model) dengan menggunakan modul bigframes.ml.preprocessing dan modul bigframes.ml.compose. BigQuery DataFrames menawarkan transformasi berikut:

  • Untuk mengelompokkan data berkelanjutan ke dalam interval, gunakan the KBinsDiscretizer class in the bigframes.ml.preprocessing module.

  • Untuk menormalkan label target sebagai nilai bilangan bulat, gunakan the LabelEncoder class in the bigframes.ml.preprocessing module.

  • Untuk menskalakan setiap fitur ke rentang [-1, 1] berdasarkan nilai absolut maksimumnya, gunakan class MaxAbsScaler di modul bigframes.ml.preprocessing.

  • Untuk menstandarkan fitur dengan menskalakan setiap fitur ke rentang [0, 1], gunakan class MinMaxScaler di modul bigframes.ml.preprocessing.

  • Untuk menstandarkan fitur dengan menghapus mean dan menskalakan ke varians unit, gunakan StandardScaler class di modul bigframes.ml.preprocessing.

  • Untuk mengubah nilai kategori ke dalam format numerik, gunakan the OneHotEncoder class in the bigframes.ml.preprocessing module.

  • Untuk menerapkan transformer ke kolom DataFrames, gunakan class ColumnTransformer di modul bigframes.ml.compose.

Melatih model

Anda dapat membuat estimator untuk melatih model di BigQuery DataFrames.

Model pengelompokan

Anda dapat membuat estimator untuk model pengelompokan menggunakan modul bigframes.ml.cluster. Untuk membuat model pengelompokan K-means, gunakan class KMeans. Gunakan model ini untuk segmentasi data. Misalnya, mengidentifikasi segmen pelanggan. K-means adalah teknik unsupervised learning, sehingga pelatihan model tidak memerlukan label atau data terpisah untuk pelatihan atau evaluasi.

Anda dapat menggunakan modul bigframes.ml.cluster untuk membuat estimator bagi model pengelompokan.

Contoh kode berikut menunjukkan penggunaan class bigframes.ml.cluster KMeans untuk membuat model pengelompokan k-means untuk segmentasi data:

from bigframes.ml.cluster import KMeans
import bigframes.pandas as bpd

# Load data from BigQuery
query_or_table = "bigquery-public-data.ml_datasets.penguins"
bq_df = bpd.read_gbq(query_or_table)

# Create the KMeans model
cluster_model = KMeans(n_clusters=10)
cluster_model.fit(bq_df["culmen_length_mm"], bq_df["sex"])

# Predict using the model
result = cluster_model.predict(bq_df)
# Score the model
score = cluster_model.score(bq_df)

Model dekomposisi

Anda dapat membuat estimator untuk model dekomposisi menggunakan modul bigframes.ml.decomposition. Untuk membuat model analisis komponen utama (PCA), gunakan PCA class. Gunakan model ini untuk menghitung komponen utama dan menggunakannya untuk melakukan perubahan dasar pada data. Penggunaan class PCA memberikan pengurangan dimensi dengan memproyeksikan setiap titik data ke hanya beberapa komponen utama pertama guna mendapatkan data dimensi yang lebih rendah sekaligus mempertahankan variasi data sebanyak mungkin.

Model ansambel

Anda dapat membuat estimator untuk model ansambel menggunakan modul bigframes.ml.ensemble.

  • Untuk membuat model pengklasifikasi hutan acak, gunakan class RandomForestClassifier. Gunakan model ini untuk membuat beberapa pohon keputusan metode pembelajaran untuk klasifikasi.

  • Untuk membuat model regresi hutan acak, gunakan class RandomForestRegressor. Gunakan model ini untuk membuat beberapa pohon keputusan metode pembelajaran untuk regresi.

  • Untuk membuat model pengklasifikasi pohon yang ditingkatkan gradien, gunakan class XGBClassifier. Gunakan model ini untuk membuat beberapa pohon keputusan metode pembelajaran untuk klasifikasi secara aditif.

  • Untuk membuat model regresi pohon yang ditingkatkan gradien, gunakan class XGBRegressor. Gunakan model ini untuk membuat beberapa pohon keputusan metode pembelajaran untuk regresi secara aditif.

Model prakiraan

Anda dapat membuat estimator untuk model prakiraan menggunakan modul bigframes.ml.forecasting. Untuk membuat model prakiraan deret waktu, gunakan the ARIMAPlus class.

Model yang diimpor

Anda dapat membuat estimator untuk model yang diimpor menggunakan modul bigframes.ml.imported.

  • Untuk mengimpor model Open Neural Network Exchange (ONNX), gunakan class ONNXModel.

  • Untuk mengimpor model TensorFlow, gunakan class TensorFlowModel.

  • Untuk mengimpor model XGBoostModel, gunakan the XGBoostModel class.

Model linear

Buat estimator untuk model linear menggunakan modul bigframes.ml.linear_model.

  • Untuk membuat model regresi linear, gunakan class LinearRegression. Gunakan model ini untuk prakiraan, seperti memperkirakan penjualan suatu item pada hari tertentu.

  • Untuk membuat model regresi logistik, gunakan class LogisticRegression. Gunakan model ini untuk klasifikasi dua atau beberapa nilai yang mungkin, seperti apakah inputnya low-value, medium-value, atau high-value.

Contoh kode berikut menunjukkan penggunaan bigframes.ml untuk melakukan hal berikut:

from bigframes.ml.linear_model import LinearRegression
import bigframes.pandas as bpd

# Load data from BigQuery
query_or_table = "bigquery-public-data.ml_datasets.penguins"
bq_df = bpd.read_gbq(query_or_table)

# Filter down to the data to the Adelie Penguin species
adelie_data = bq_df[bq_df.species == "Adelie Penguin (Pygoscelis adeliae)"]

# Drop the species column
adelie_data = adelie_data.drop(columns=["species"])

# Drop rows with nulls to get training data
training_data = adelie_data.dropna()

# Specify your feature (or input) columns and the label (or output) column:
feature_columns = training_data[
    ["island", "culmen_length_mm", "culmen_depth_mm", "flipper_length_mm", "sex"]
]
label_columns = training_data[["body_mass_g"]]

test_data = adelie_data[adelie_data.body_mass_g.isnull()]

# Create the linear model
model = LinearRegression()
model.fit(feature_columns, label_columns)

# Score the model
score = model.score(feature_columns, label_columns)

# Predict using the model
result = model.predict(test_data)

Model bahasa besar

Anda dapat membuat estimator untuk LLM menggunakan modul bigframes.ml.llm.

  • Untuk membuat model generator teks Gemini, gunakan class GeminiTextGenerator. Gunakan model ini untuk tugas pembuatan teks.

  • Untuk membuat estimator bagi model bahasa besar (LLM) jarak jauh, gunakan bigframes.ml.llm modul.

Contoh kode berikut menunjukkan penggunaan class bigframes.ml.llm GeminiTextGenerator untuk membuat model Gemini untuk pembuatan kode:

from bigframes.ml.llm import GeminiTextGenerator
import bigframes.pandas as bpd

# Create the Gemini LLM model
session = bpd.get_global_session()
connection = f"{PROJECT_ID}.{REGION}.{CONN_NAME}"
model = GeminiTextGenerator(
    session=session, connection_name=connection, model_name="gemini-2.0-flash-001"
)

df_api = bpd.read_csv("gs://cloud-samples-data/vertex-ai/bigframe/df.csv")

# Prepare the prompts and send them to the LLM model for prediction
df_prompt_prefix = "Generate Pandas sample code for DataFrame."
df_prompt = df_prompt_prefix + df_api["API"]

# Predict using the model
df_pred = model.predict(df_prompt.to_frame(), max_output_tokens=1024)

Model jarak jauh

Untuk menggunakan model jarak jauh BigQuery DataFrames ML (bigframes.ml.remote atau bigframes.ml.llm), Anda harus mengaktifkan API berikut:

Saat menggunakan model jarak jauh BigQuery DataFrames ML, Anda memerlukan peran Project IAM Admin (roles/resourcemanager.projectIamAdmin) jika menggunakan koneksi BigQuery default, atau peran Browser (roles/browser) jika menggunakan koneksi yang telah dikonfigurasi sebelumnya. Anda dapat menghindari persyaratan ini dengan menetapkan opsi bigframes.pandas.options.bigquery.skip_bq_connection_check ke True. Dalam hal ini, koneksi (default atau yang telah dikonfigurasi sebelumnya) digunakan apa adanya tanpa pemeriksaan izin atau keberadaan. Jika Anda menggunakan koneksi yang telah dikonfigurasi sebelumnya dan melewati pemeriksaan koneksi, verifikasi hal berikut:

  • Koneksi dibuat di lokasi yang tepat.
  • Jika Anda menggunakan model jarak jauh BigQuery DataFrames ML, akun layanan memiliki peran Vertex AI User (roles/aiplatform.user) di project.

Membuat model jarak jauh di BigQuery DataFrames akan membuat koneksi BigQuery. Secara default, koneksi dengan nama bigframes-default-connection digunakan. Anda dapat menggunakan koneksi BigQuery yang telah dikonfigurasi sebelumnya jika mau. Dalam hal ini, pembuatan koneksi akan dilewati. Akun layanan untuk koneksi default diberi peran Vertex AI User (roles/aiplatform.user) di project.

Membuat pipeline

Anda dapat membuat pipeline ML menggunakan bigframes.ml.pipeline modul. Pipeline memungkinkan Anda mengumpulkan beberapa langkah ML untuk divalidasi silang bersama-sama sambil menetapkan parameter yang berbeda. Hal ini menyederhanakan kode Anda, dan memungkinkan Anda men-deploy langkah-langkah prapemrosesan data dan estimator secara bersamaan.

Untuk membuat pipeline transformasi dengan estimator akhir, gunakan class Pipeline.

Memilih model

Untuk membagi set data pelatihan dan pengujian serta memilih model terbaik, gunakan bigframes.ml.model_selection modul modul:

  • Untuk membagi data menjadi pelatihan dan pengujian (set evaluasi), seperti yang ditunjukkan dalam contoh kode berikut, gunakan fungsi train_test_split:

    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
    
  • Untuk membuat set pelatihan dan pengujian multi-lipatan guna melatih dan mengevaluasi model, seperti yang ditunjukkan dalam contoh kode berikut, gunakan class KFold dan metode KFold.split. Fitur ini berguna untuk set data kecil.

    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
    
  • Untuk membuat set pelatihan dan pengujian multi-lipatan secara otomatis, melatih dan mengevaluasi model, serta mendapatkan hasil setiap lipatan, seperti yang ditunjukkan dalam contoh kode berikut, gunakan fungsi cross_validate:

    scores = cross_validate(model, X, y, cv=5)
    

Langkah berikutnya