Usar ML e IA com o BigQuery DataFrames
O BigQuery DataFrames oferece recursos de ML e IA para o BigQuery DataFrames usando a biblioteca bigframes.ml.
É possível pré-processar dados, criar estimadores para treinar modelos no BigQuery DataFrames, criar pipelines de ML e dividir conjuntos de dados de treinamento e teste.
Funções exigidas
Para receber as permissões que você precisa para concluir 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 funcionalidades de IA:
Administrador de conexão do BigQuery (
roles/bigquery.connectionAdmin) -
Usar o 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 personalizados papéis ou outros predefinidos papéis.
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 o treinamento de modelo varia de acordo com a região. Para mais informações, consulte
Locais do BigQuery ML.
Pré-processar dados
Crie transformadores a fim de preparar dados para uso em estimadores (modelos) usando o
módulo
bigframes.ml.preprocessing
e o
bigframes.ml.compose.
O BigQuery DataFrames oferece as seguintes transformações:
Para agrupar dados contínuos em intervalos, use a
KBinsDiscretizerclasse nobigframes.ml.preprocessingmódulo.Para normalizar os rótulos de destino como valores inteiros, use a
LabelEncoderclasse nobigframes.ml.preprocessingmódulo.Para dimensionar cada recurso para o intervalo
[-1, 1]de acordo com o valor absoluto máximo, use aMaxAbsScalerclasse nobigframes.ml.preprocessingmódulo.Para padronizar recursos escalonando cada recurso para o intervalo
[0, 1], use aMinMaxScalerclasse no módulobigframes.ml.preprocessing.Para padronizar recursos removendo a média e o dimensionamento para a variância da unidade, use a
StandardScalerclasse no módulobigframes.ml.preprocessing.Para transformar valores categóricos em formato numérico, use a
OneHotEncoderclasse nobigframes.ml.preprocessingmódulo.Para aplicar transformadores a colunas do DataFrames, use a
ColumnTransformerclasse nobigframes.ml.composemódulo.
Treinar modelos
É possível criar estimadores para treinar modelos no BigQuery DataFrames.
Modelos de clustering
É possível criar estimadores para modelos de clustering usando o
bigframes.ml.cluster módulo.
Para criar modelos de clustering K-means, use a
KMeans classe. Use esses modelos para segmentação de dados. Por exemplo, identificar segmentos de clientes. K-means é uma técnica de aprendizagem não supervisionada, portanto, o treinamento de modelo não requer rótulos ou dados de divisão para treinamento ou avaliação.
É possível usar 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
É possível criar estimadores para modelos de decomposição usando o
bigframes.ml.decomposition módulo.
Para criar modelos de análise de componentes principais (PCA, na sigla em inglês), use a PCA
classe. 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 oferece redução de dimensionalidade, projetando cada ponto de dados apenas nos primeiros componentes principais para receber dados de menor dimensão, preservando o máximo possível da variação dos dados.
Modelos do conjunto
É possível criar estimadores para modelos de conjunto usando o
bigframes.ml.ensemble módulo.
Para criar modelos de classificador de floresta aleatória, use a
RandomForestClassifierclasse. 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
RandomForestRegressorclasse. 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 otimizados com gradiente, use a
XGBClassifierclasse. 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
XGBRegressorclasse. 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 Estimators para modelos de previsão usando o
bigframes.ml.forecasting módulo.
Para criar modelos de previsão de série temporal, use a
ARIMAPlus classe.
Modelos importados
É possível criar estimadores para modelos importados usando o
bigframes.ml.imported módulo.
Para importar modelos Open Neural Network Exchange (ONNX), use a
ONNXModelclasse.Para importar o modelo do TensorFlow, use a
TensorFlowModelclasse.Para importar modelos XGBoostModel, use a
XGBoostModelclasse.
Modelos lineares
Crie estimadores para modelos lineares usando o
bigframes.ml.linear_model módulo.
Para criar modelos de regressão linear, use a
LinearRegressionclasse. 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
LogisticRegressionclasse. 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 bigframes.ml.LinearRegression.
Modelos de linguagem grande
É possível criar estimadores para LLMs usando o
bigframes.ml.llm módulo.
Para criar modelos geradores de texto do Gemini, use a
GeminiTextGeneratorclasse. Use esses modelos para tarefas de geração de texto.Para criar estimadores para modelos de linguagem grandes (LLMs) remotos, use o
bigframes.ml.llmmódulo.
O exemplo de código a seguir mostra como usar a bigframes.ml.llm
GeminiTextGenerator
classe 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 o
papel de navegador (roles/browser)
se usar uma conexão pré-configurada. É possível evitar esse requisito definindo 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 a existência da conexão ou verificar as permissões dela. 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 correto.
- Se você usar modelos remotos de ML do BigQuery DataFrames, a conta de serviço terá o papel de usuário da Vertex AI (
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 Vertex AI (roles/aiplatform.user) no projeto.
Criar pipelines
É possível criar pipelines de ML usando o
bigframes.ml.pipeline módulo.
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
Pipeline classe.
Selecionar modelos
Para dividir os conjuntos de dados de treinamento e teste e selecionar os melhores modelos, use o
bigframes.ml.model_selection módulo
módulo:
Para dividir os dados em conjuntos de treinamento e teste (conjuntos de avaliação), conforme mostrado no exemplo de código a seguir, use a
train_test_splitfunção: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
KFoldclasse e oKFold.splitmétodo. Esse recurso é valioso 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
cross_validatefunção:scores = cross_validate(model, X, y, cv=5)
A seguir
- Saiba mais sobre o sistema de tipo 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 DataFrames do BigQuery.
- Confira o código-fonte do BigQuery DataFrames , notebooks de amostra e exemplos no GitHub.
- Confira a referência da API DataFrames do BigQuery.