Usar ML e IA com DataFrames do BigQuery
O BigQuery DataFrames oferece recursos de ML e IA para DataFrames do BigQuery usando a biblioteca bigframes.ml.
É possível pré-processar dados, criar estimadores para treinar modelos nos DataFrames do BigQuery, criar pipelines de ML e dividir conjuntos de dados de treinamento e teste.
Funções exigidas
Para conseguir as permissões necessárias a fim de concluir as tarefas neste documento, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:
-
Usar modelos remotos ou funcionalidades de IA:
Administrador de conexão do BigQuery (
roles/bigquery.connectionAdmin) -
Use DataFrames do BigQuery em um notebook do BigQuery:
-
Usuário do BigQuery (
roles/bigquery.user) -
Usuário do ambiente de execução do notebook (
roles/aiplatform.notebookRuntimeUser) -
Criador de código (
roles/dataform.codeCreator)
-
Usuário do BigQuery (
-
Usar a conexão padrão do BigQuery:
-
Editor de dados do BigQuery (
roles/bigquery.dataEditor) -
Administrador de conexão do BigQuery (
roles/bigquery.connectionAdmin) -
Desenvolvedor do Cloud Functions (
roles/cloudfunctions.developer) -
Usuário da conta de serviço (
roles/iam.serviceAccountUser) -
Leitor de objetos do Storage (
roles/storage.objectViewer)
-
Editor de dados do BigQuery (
-
Usar modelos remotos do BigQuery DataFrames ML:
Administrador de conexão do BigQuery (
roles/bigquery.connectionAdmin)
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.
Locais ML
A biblioteca bigframes.ml é compatível com os mesmos locais que o BigQuery ML. A previsão do modelo do BigQuery ML e outras funções de ML são aceitas em todas as regiões do BigQuery. O suporte para
treinamento de modelo varia de acordo com a região. Para mais informações, consulte
Locais do BigQuery ML.
Pré-processar dados
Crie transformadores para preparar dados para uso em estimadores (modelos) usando o módulo bigframes.ml.preprocessing e o módulo bigframes.ml.compose.
O DataFrames do BigQuery oferece as seguintes transformações:
Para agrupar dados contínuos em intervalos, use a classe
KBinsDiscretizerno módulobigframes.ml.preprocessing.Para normalizar os rótulos de destino como valores inteiros, use a classe
LabelEncoderno módulobigframes.ml.preprocessing.Para dimensionar cada recurso para o intervalo
[-1, 1]de acordo com o valor absoluto máximo, use a classeMaxAbsScalerno módulobigframes.ml.preprocessing.Para padronizar recursos escalonando cada um para o intervalo
[0, 1], use a classeMinMaxScalerno módulobigframes.ml.preprocessing.Para padronizar recursos removendo a média e dimensionando para a variância da unidade, use a classe
StandardScalerno módulobigframes.ml.preprocessing.Para transformar valores categóricos em formato numérico, use a classe
OneHotEncoderno módulobigframes.ml.preprocessing.Para aplicar transformadores a colunas do DataFrames, use a classe
ColumnTransformerno módulobigframes.ml.compose.
Treinar modelos
É possível criar estimadores para treinar modelos nos DataFrames do BigQuery.
Modelos de clustering
Crie estimadores para modelos de clustering usando o módulo bigframes.ml.cluster.
Para criar modelos de clustering K-means, use a
classe KMeans. Use esses modelos para segmentação de dados. Por exemplo, identificar segmentos de clientes. K-means é uma técnica de aprendizado não supervisionada, portanto, treinamento de modelo não requer rótulos ou dados de divisão para treinamento ou avaliação.
Use o módulo bigframes.ml.cluster para criar estimadores para modelos de clustering.
O exemplo de código a seguir mostra o uso da classe bigframes.ml.cluster KMeans para criar um modelo de clustering K-means para segmentação de dados:
Modelos de decomposição
Crie estimadores para modelos de decomposição usando o módulo bigframes.ml.decomposition.
Para criar modelos de análise de componentes principais (PCA), use a classe PCA. Use esses
modelos para calcular os componentes principais e usá-los para realizar
uma mudança de base nos dados. Usar a classe PCA reduz a dimensionalidade, projetando cada ponto de dados apenas nos primeiros componentes principais. Assim, você consegue dados de dimensões menores, preservando o máximo possível da variação deles.
Modelos do conjunto
É possível criar estimadores para modelos de conjunto usando o
módulo bigframes.ml.ensemble.
Para criar modelos de classificador de floresta aleatória, use a classe
RandomForestClassifier. Use esses modelos para construir várias árvores de decisão de método de aprendizado para classificação.Para criar modelos de regressão de floresta aleatória, use a classe
RandomForestRegressor. Use esses modelos para construir várias árvores de decisão de método de aprendizado para regressão.Para criar modelos de classificador de árvore otimizada com gradiente, use a classe
XGBClassifier. Use esses modelos para construir aditivamente várias árvores de decisão de método de aprendizado para classificação.Para criar modelos de regressão de árvore otimizada com gradiente, use a classe
XGBRegressor. Use esses modelos para construir aditivamente várias árvores de decisão de método de aprendizado para regressão.
Modelos de previsão
É possível criar estimadores para modelos de previsão usando o
módulo bigframes.ml.forecasting.
Para criar modelos de previsão de série temporal, use a
classe ARIMAPlus.
Modelos importados
É possível criar estimadores para modelos importados usando o módulo bigframes.ml.imported.
Para importar modelos Open Neural Network Exchange (ONNX), use a classe
ONNXModel.Para importar um modelo do TensorFlow, use a classe
TensorFlowModel.Para importar modelos XGBoostModel, use a classe
XGBoostModel.
Modelos lineares
Crie estimadores para modelos lineares usando o
módulo bigframes.ml.linear_model.
Para criar modelos de regressão linear, use a classe
LinearRegression. Use esses modelos para previsão, como a previsão das vendas de um item em um determinado dia.Para criar modelos de regressão logística, use a classe
LogisticRegression. Use esses modelos para a classificação de dois ou mais valores possíveis, por exemplo, se uma entrada élow-value,medium-valueouhigh-value.
O exemplo de código abaixo mostra o uso de bigframes.ml para realizar as seguintes ações:
- Carregar dados do BigQuery.
- Limpe e prepare os dados de treinamento.
- Crie e aplique um modelo de regressão bigframes.ml.LinearRegression.
Modelos de linguagem grande
É possível criar estimadores para LLMs usando o módulo bigframes.ml.llm.
Para criar modelos geradores de texto do Gemini, use a classe
GeminiTextGenerator. Use esses modelos para tarefas de geração de texto.Para criar estimadores para modelos de linguagem grandes (LLMs) remotos, use o módulo
bigframes.ml.llm.
O exemplo de código a seguir mostra como usar a classe bigframes.ml.llm
GeminiTextGenerator
para criar um modelo do Gemini para geração de código:
Modelos remotos
Para usar modelos remotos de ML do DataFrames do BigQuery (bigframes.ml.remote
ou bigframes.ml.llm), ative as seguintes APIs:
Ao usar modelos remotos de ML do BigQuery DataFrames, você precisa da função de administrador do IAM do projeto (roles/resourcemanager.projectIamAdmin) se usar uma conexão padrão do BigQuery ou da função de navegador (roles/browser) se usar uma conexão pré-configurada. Para evitar esse requisito, defina a opção bigframes.pandas.options.bigquery.skip_bq_connection_check como True. Nesse caso, a conexão (padrão ou pré-configurada) será usada sem alterações, sem qualquer verificação de existência ou permissão. Se você usar a
conexão pré-configurada e pular a verificação de conexão, verifique o
seguinte:
- A conexão é criada no local certo.
- Se você usar modelos remotos de ML do DataFrames do BigQuery, a conta de serviço terá a função de usuário da Vertex AI (
roles/aiplatform.user) no projeto.
A criação de um modelo remoto no DataFrames do BigQuery cria uma conexão com o BigQuery.
Por padrão, uma conexão com o nome bigframes-default-connection é usada. Se preferir, use uma conexão pré-configurada do BigQuery. Nesse caso, a criação da conexão é ignorada. A conta de serviço
da conexão padrão recebe o
papel de usuário da Vertex AI (roles/aiplatform.user) no projeto.
Criar pipelines
É possível criar pipelines de ML usando o módulo bigframes.ml.pipeline.
Os pipelines permitem montar várias etapas de ML para validação cruzada ao definir parâmetros diferentes. Isso simplifica o código e permite implantar etapas de pré-processamento de dados e um estimador juntos.
Para criar um pipeline de transformações com um estimador final, use a
classe Pipeline.
Selecionar modelos
Para dividir os conjuntos de dados de treinamento e teste e selecionar os melhores modelos, use o módulo
bigframes.ml.model_selection
module:
Para dividir os dados em conjuntos de treinamento e teste (avaliação), conforme mostrado no exemplo de código a seguir, use a função
train_test_split:X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)Para criar conjuntos de treinamento e teste de várias dobras para treinar e avaliar modelos, conforme mostrado no exemplo de código a seguir, use a classe
KFolde o métodoKFold.split. Esse recurso é útil para conjuntos de dados pequenos.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 setsPara criar automaticamente conjuntos de treinamento e teste com várias dobras, treinar e avaliar o modelo e receber o resultado de cada dobra, conforme mostrado no exemplo de código a seguir, use a função
cross_validate:scores = cross_validate(model, X, y, cv=5)
A seguir
- Saiba mais sobre o sistema de tipos de dados do BigQuery DataFrames.
- Saiba como gerar código do BigQuery DataFrames com o Gemini.
- Saiba como analisar downloads de pacotes do PyPI com o BigQuery DataFrames.
- Confira o código-fonte, os notebooks de exemplo e as amostras dos DataFrames do BigQuery no GitHub.
- Confira a referência da API BigQuery DataFrames.