Utilizzare ML e AI con BigQuery DataFrames

BigQuery DataFrames fornisce funzionalità di ML e AI per BigQuery DataFrames utilizzando la libreria bigframes.ml.

Puoi preelaborare i dati, creare stimatori per addestrare i modelli in BigQuery DataFrames, creare pipeline ML e dividere i set di dati di addestramento e test.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per completare le attività descritte in questo documento, chiedi all'amministratore di concederti i seguenti ruoli IAM nel tuo progetto:

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Località ML

La libreria bigframes.ml supporta le stesse località di BigQuery ML. La previsione del modello BigQuery ML e altre funzioni ML sono supportate in tutte le regioni BigQuery. Il supporto per l'addestramento del modello varia in base alla regione. Per ulteriori informazioni, vedi Località BigQuery ML.

Pre-elaborare i dati

Crea trasformatori per preparare i dati da utilizzare negli stimatori (modelli) utilizzando il modulo bigframes.ml.preprocessing e il modulo bigframes.ml.compose. BigQuery DataFrames offre le seguenti trasformazioni:

  • Per raggruppare i dati continui in intervalli, utilizza la classe KBinsDiscretizer nel modulo bigframes.ml.preprocessing.

  • Per normalizzare le etichette target come valori interi, utilizza la classe LabelEncoder nel modulo bigframes.ml.preprocessing.

  • Per scalare ogni caratteristica all'intervallo [-1, 1] in base al suo valore assoluto massimo, utilizza la classe MaxAbsScaler nel modulo bigframes.ml.preprocessing.

  • Per standardizzare le caratteristiche scalando ciascuna caratteristica all'intervallo [0, 1], utilizza la classe MinMaxScaler nel modulo bigframes.ml.preprocessing.

  • Per standardizzare le funzionalità rimuovendo la media e scalando la varianza unitaria, utilizza la classe StandardScaler nel modulo bigframes.ml.preprocessing.

  • Per trasformare i valori categorici in formato numerico, utilizza la classe OneHotEncoder nel modulo bigframes.ml.preprocessing.

  • Per applicare i trasformatori alle colonne DataFrame, utilizza la classe ColumnTransformer nel modulo bigframes.ml.compose.

Addestra i modelli

Puoi creare stimatori per addestrare i modelli in BigQuery DataFrames.

Modelli di clustering

Puoi creare stimatori per i modelli di clustering utilizzando il modulo bigframes.ml.cluster. Per creare modelli di clustering K-means, utilizza la classe KMeans. Utilizza questi modelli per la segmentazione dei dati. Ad esempio, l'identificazione dei segmenti di clienti. K-means è una tecnica di apprendimento non supervisionato, quindi l'addestramento del modello non richiede etichette o la suddivisione dei dati per l'addestramento o la valutazione.

Puoi utilizzare il modulo bigframes.ml.cluster per creare stimatori per i modelli di clustering.

Il seguente esempio di codice mostra l'utilizzo della classe bigframes.ml.cluster KMeans per creare un modello di clustering k-means per la segmentazione dei dati:

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)

Modelli di decomposizione

Puoi creare stimatori per i modelli di scomposizione utilizzando il modulo bigframes.ml.decomposition. Per creare modelli di analisi delle componenti principali (PCA), utilizza la classe PCA. Utilizza questi modelli per calcolare le componenti principali e utilizzarle per eseguire un cambio di base sui dati. L'utilizzo della classe PCA consente la riduzione della dimensionalità proiettando ogni punto dati solo sui primi componenti principali per ottenere dati a dimensioni inferiori, preservando al contempo la maggior parte della variazione dei dati.

Modelli di insieme

Puoi creare stimatori per i modelli ensemble utilizzando il modulo bigframes.ml.ensemble.

  • Per creare modelli di classificazione random forest, utilizza la classe RandomForestClassifier. Utilizza questi modelli per costruire più alberi decisionali del metodo di apprendimento per la classificazione.

  • Per creare modelli di regressione foresta casuale, utilizza la classe RandomForestRegressor. Utilizza questi modelli per costruire più alberi decisionali del metodo di apprendimento per la regressione.

  • Per creare modelli di classificazione basati su Gradient Boosted Decision Tree, utilizza la classe XGBClassifier. Utilizza questi modelli per costruire in modo additivo più alberi decisionali del metodo di apprendimento per la classificazione.

  • Per creare modelli di regressione basati su Gradient Boosted Decision Tree, utilizza la classe XGBRegressor. Utilizza questi modelli per costruire in modo additivo più alberi decisionali del metodo di apprendimento per la regressione.

Modelli di previsione

Puoi creare stimatori per i modelli di previsione utilizzando il modulo bigframes.ml.forecasting. Per creare modelli di previsione delle serie temporali, utilizza la classe ARIMAPlus.

Modelli importati

Puoi creare stimatori per i modelli importati utilizzando il modulo bigframes.ml.imported.

Modelli lineari

Crea stimatori per modelli lineari utilizzando il modulo bigframes.ml.linear_model.

  • Per creare modelli di regressione lineare, utilizza la classe LinearRegression. Utilizza questi modelli per le previsioni, ad esempio per prevedere le vendite di un articolo in un determinato giorno.

  • Per creare modelli di regressione logistica, utilizza la classe LogisticRegression. Utilizza questi modelli per la classificazione di due o più valori possibili, ad esempio se un input è low-value, medium-value o high-value.

Il seguente esempio di codice mostra l'utilizzo di bigframes.ml per eseguire le seguenti operazioni:

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)

Modelli linguistici di grandi dimensioni

Puoi creare stimatori per i modelli LLM utilizzando il modulo bigframes.ml.llm.

  • Per creare modelli di generazione di testo Gemini, utilizza la classe GeminiTextGenerator. Utilizza questi modelli per le attività di generazione di testo.

  • Per creare stimatori per modelli linguistici di grandi dimensioni (LLM) remoti, utilizza il modulo bigframes.ml.llm.

Il seguente esempio di codice mostra l'utilizzo della classe bigframes.ml.llm GeminiTextGenerator per creare un modello Gemini per la generazione di codice:

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)

Modelli remoti

Per utilizzare i modelli remoti BigQuery DataFrames ML (bigframes.ml.remote o bigframes.ml.llm), devi abilitare le seguenti API:

Quando utilizzi i modelli remoti BigQuery DataFrames ML, devi disporre del ruolo Amministratore IAM progetto (roles/resourcemanager.projectIamAdmin) se utilizzi una connessione BigQuery predefinita o del ruolo Browser (roles/browser) se utilizzi una connessione preconfigurata. Puoi evitare questo requisito impostando l'opzione bigframes.pandas.options.bigquery.skip_bq_connection_check su True, nel qual caso la connessione (predefinita o preconfigurata) viene utilizzata così com'è senza alcun controllo di esistenza o autorizzazione. Se utilizzi la connessione preconfigurata e salti il controllo della connessione, verifica quanto segue:

  • La connessione viene creata nella posizione corretta.
  • Se utilizzi i modelli remoti BigQuery DataFrames ML, il service account ha il ruolo Utente Vertex AI (roles/aiplatform.user) nel progetto.

La creazione di un modello remoto in BigQuery DataFrames crea una connessione BigQuery. Per impostazione predefinita, viene utilizzata una connessione con il nome bigframes-default-connection. Se preferisci, puoi utilizzare una connessione BigQuery preconfigurata, nel qual caso la creazione della connessione viene ignorata. Al account di servizio per la connessione predefinita viene concesso il ruolo Utente Vertex AI (roles/aiplatform.user) nel progetto.

Crea pipeline

Puoi creare pipeline ML utilizzando il modulo bigframes.ml.pipeline. Le pipeline ti consentono di assemblare diversi passaggi ML da convalidare in modo incrociato insieme impostando parametri diversi. In questo modo il codice viene semplificato e puoi eseguire il deployment dei passaggi di pre-elaborazione dei dati e di uno strumento di stima insieme.

Per creare una pipeline di trasformazioni con uno stimatore finale, utilizza la classe Pipeline.

Seleziona modelli

Per dividere i set di dati di addestramento e test e selezionare i modelli migliori, utilizza il modulo bigframes.ml.model_selection:

  • Per dividere i dati in set di addestramento e test (valutazione), come mostrato nel seguente esempio di codice, utilizza la funzione train_test_split:

    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
    
  • Per creare set di addestramento e test multi-fold per addestrare e valutare i modelli, come mostrato nel seguente esempio di codice, utilizza la classe KFold e il metodo KFold.split. Questa funzionalità è utile per i piccoli set di dati.

    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
    
  • Per creare automaticamente set di addestramento e test multi-fold, addestra e valuta il modello e ottieni il risultato di ogni fold, come mostrato nel seguente esempio di codice, utilizza la funzione cross_validate:

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

Passaggi successivi