Menggunakan ML dan AI dengan BigQuery DataFrames

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

Anda dapat memproses data, membuat estimator untuk melatih model di BigQuery DataFrames, membuat pipeline ML, dan memisahkan 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 wilayah. Untuk mengetahui informasi selengkapnya, lihat Lokasi BigQuery ML.

Melakukan pra-pemrosesan data

Buat transformer untuk menyiapkan data yang akan 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 class KBinsDiscretizer dalam modul bigframes.ml.preprocessing.

  • Untuk menormalisasi label target sebagai nilai bilangan bulat, gunakan class LabelEncoder dalam modul bigframes.ml.preprocessing.

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

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

  • Untuk menstandardisasi fitur dengan menghapus rata-rata dan menskalakan ke varians unit, gunakan class StandardScaler dalam modul bigframes.ml.preprocessing.

  • Untuk mengubah nilai kategoris menjadi format numerik, gunakan class OneHotEncoder dalam modul bigframes.ml.preprocessing.

  • Untuk menerapkan transformer ke kolom DataFrame, gunakan class ColumnTransformer dalam 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 class PCA. 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 untuk 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 klasifikasi random forest, gunakan RandomForestClassifier class. 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 XGBClassifier class. Gunakan model ini untuk membuat beberapa pohon keputusan metode pembelajaran secara aditif untuk klasifikasi.

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

Model prakiraan

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

Model yang diimpor

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

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 perkiraan, 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 modul bigframes.ml.llm.

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 ML BigQuery DataFrames (bigframes.ml.remote atau bigframes.ml.llm), Anda harus mengaktifkan API berikut:

Saat menggunakan model jarak jauh ML BigQuery DataFrames, Anda memerlukan peran Project IAM Admin (roles/resourcemanager.projectIamAdmin) jika Anda menggunakan koneksi BigQuery default, atau peran Browser (roles/browser) jika Anda menggunakan koneksi yang telah dikonfigurasi sebelumnya. Anda dapat menghindari persyaratan ini dengan menyetel opsi bigframes.pandas.options.bigquery.skip_bq_connection_check ke True, yang 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 Pengguna Vertex AI (roles/aiplatform.user) di project.

Membuat model jarak jauh di BigQuery DataFrames akan membuat koneksi BigQuery. Secara default, koneksi dengan nama bigframes-default-connection akan digunakan. Anda dapat menggunakan koneksi BigQuery yang telah dikonfigurasi sebelumnya jika mau, dan 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 modul bigframes.ml.pipeline. Dengan pipeline, Anda dapat 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 praproses data dan estimator secara bersamaan.

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

Pilih model

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

  • 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-fold untuk 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-fold secara otomatis, melatih dan mengevaluasi model, serta mendapatkan hasil setiap fold, seperti yang ditunjukkan dalam contoh kode berikut, gunakan fungsi cross_validate:

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

Langkah berikutnya