Usar ML e IA com BigQuery DataFrames
A biblioteca bigframes.ml no BigQuery DataFrames permite
integrar recursos de IA e machine learning (ML)
aos fluxos de trabalho de análise de dados. O pré-processamento de dados,
o treinamento de modelos e a criação de pipelines de ML
diretamente no BigQuery permitem escalonar suas análises sem
extrair conjuntos de dados do data warehouse.
Funções exigidas
Para receber as permissões necessárias para realizar as tarefas neste documento, peça ao administrador para conceder a você os seguintes papéis do IAM no seu projeto:
-
Usar modelos remotos ou funções de IA:
Administrador de conexão do BigQuery (
roles/bigquery.connectionAdmin) -
Use os BigQuery DataFrames 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 de ML do BigQuery DataFrames:
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 oferece suporte aos 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
Criar transformadores a fim de 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 atributo 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 recurso para o intervalo
[0, 1], use a classeMinMaxScalerno módulobigframes.ml.preprocessing.Para padronizar atributos removendo a média e escalonando 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 BigQuery DataFrames.
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, na sigla em inglês), use a classe PCA. Use esses
modelos para calcular os componentes principais e usá-los para realizar uma alteração
de base nos dados. O uso da 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 com boost de 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 com boost de 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 o 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 prever as 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.
- Limpar e preparar dados de treinamento.
- Criar e aplicar 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 BigQuery DataFrames (bigframes.ml.remote
ou bigframes.ml.llm), ative as seguintes APIs:
Ao usar modelos remotos de ML do BigQuery DataFrames, você precisa do
papel de administrador do IAM do projeto (roles/resourcemanager.projectIamAdmin)
se usar uma conexão padrão do BigQuery ou do
papel 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 no estado em que se encontra, sem qualquer existência ou verificação de 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ê usa modelos remotos de ML do BigQuery DataFrames, a conta de serviço tem o papel de usuário da plataforma de agente (
roles/aiplatform.user) no projeto.
A criação de um modelo remoto no BigQuery DataFrames 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 Agent Platform (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:
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 de 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
- Aprenda 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 amostra e as amostras do BigQuery DataFrames no GitHub.
- Confira a referência da API BigQuery DataFrames.