Utiliser le ML et l'IA avec BigQuery DataFrames
BigQuery DataFrames fournit des fonctionnalités de ML et d'IA pour BigQuery DataFrames à l'aide de la bibliothèque bigframes.ml.
Vous pouvez prétraiter des données, créer des estimateurs pour entraîner des modèles dans BigQuery DataFrames, créer des pipelines de ML et diviser les ensembles de données d'entraînement et de test.
Rôles requis
Pour obtenir les autorisations nécessaires pour effectuer les tâches décrites dans ce document, demandez à votre administrateur de vous accorder les rôles IAM suivants sur votre projet :
-
Utiliser des modèles distants ou des fonctionnalités d'IA :
Administrateur de connexion BigQuery (
roles/bigquery.connectionAdmin) -
Utiliser BigQuery DataFrames dans un notebook BigQuery :
-
Utilisateur BigQuery (
roles/bigquery.user) -
Utilisateur de l'environnement d'exécution de notebook (
roles/aiplatform.notebookRuntimeUser) -
Créateur de code (
roles/dataform.codeCreator)
-
Utilisateur BigQuery (
-
Utiliser la connexion BigQuery par défaut :
-
Éditeur de données BigQuery (
roles/bigquery.dataEditor) -
Administrateur de connexion BigQuery (
roles/bigquery.connectionAdmin) -
Développeur Cloud Functions (
roles/cloudfunctions.developer) -
Utilisateur du compte de service (
roles/iam.serviceAccountUser) -
Lecteur des objets Storage (
roles/storage.objectViewer)
-
Éditeur de données BigQuery (
-
Utiliser des modèles distants BigQuery DataFrames ML :
Administrateur BigQuery Connection (
roles/bigquery.connectionAdmin)
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
Emplacements de ML
La bibliothèque bigframes.ml est compatible avec les mêmes emplacements que BigQuery ML. La prédiction de modèle BigQuery ML et d'autres fonctions de ML sont acceptées dans toutes les régions BigQuery. La compatibilité de l'entraînement de modèle varie selon les régions. Pour en savoir plus, consultez la page Emplacements BigQuery ML.
Procéder au prétraitement des données
Créez des transformateurs pour préparer les données à utiliser dans des estimateurs (modèles) à l'aide des modules bigframes.ml.preprocessing et bigframes.ml.compose.
BigQuery DataFrames propose les transformations suivantes :
Pour regrouper des données continues en intervalles, utilisez la classe
KBinsDiscretizerdans le modulebigframes.ml.preprocessing.Pour normaliser les libellés cibles sous forme de valeurs entières, utilisez la classe
LabelEncoderdans le modulebigframes.ml.preprocessing.Pour adapter chaque caractéristique à la plage
[-1, 1]en fonction de sa valeur absolue maximale, utilisez la classeMaxAbsScalerdans le modulebigframes.ml.preprocessing.Pour standardiser les caractéristiques en les ajustant à la plage
[0, 1], utilisez la classeMinMaxScalerdans le modulebigframes.ml.preprocessing.Pour standardiser les caractéristiques en supprimant la moyenne et en effectuant un scaling à la hausse de la variance unitaire, utilisez la classe
StandardScalerdans le modulebigframes.ml.preprocessing.Pour transformer des valeurs catégorielles en format numérique, utilisez la classe
OneHotEncoderdans le modulebigframes.ml.preprocessing.Pour appliquer des transformateurs aux colonnes DataFrames, utilisez la classe
ColumnTransformerdans le modulebigframes.ml.compose.
Entraîner des modèles
Vous pouvez créer des estimateurs pour entraîner des modèles dans BigQuery DataFrames.
Modèles de clustering
Vous pouvez créer des estimateurs pour les modèles de clustering à l'aide du module bigframes.ml.cluster.
Pour créer des modèles de clustering en k-moyennes, utilisez la classe KMeans. Utilisez ces modèles pour segmenter les données. Par exemple, pour identifier des segments de clientèle. Les k-moyennes étant une technique d'apprentissage non supervisée, l'entraînement ou l'évaluation du modèle ne nécessitent pas d'étiquettes ni de données fractionnées.
Vous pouvez utiliser le module bigframes.ml.cluster pour créer des estimateurs pour les modèles de clustering.
L'exemple de code suivant montre comment utiliser la classe bigframes.ml.cluster KMeans pour créer un modèle de clustering en k-moyennes pour la segmentation des données :
Modèles de décomposition
Vous pouvez créer des estimateurs pour les modèles de décomposition à l'aide du module bigframes.ml.decomposition.
Pour créer des modèles d'analyse des composants principaux (ACP), utilisez la classe PCA. Utilisez ces modèles pour calculer les composants principaux et les utiliser pour effectuer un changement de base sur les données. L'utilisation de la classe PCA permet de réduire la dimensionnalité en ne projetant chaque point de données que sur les premiers composants principaux afin d'obtenir des données de dimension inférieure tout en conservant autant que possible les variations de données.
Modèles ensemblistes
Vous pouvez créer des estimateurs pour les modèles d'ensemble à l'aide du module bigframes.ml.ensemble.
Pour créer des modèles de classificateur de forêt d'arbres décisionnels, utilisez la classe
RandomForestClassifier. Utilisez ces modèles pour créer plusieurs arbres de décision de méthode d'apprentissage pour la classification.Pour créer des modèles de régression de forêt d'arbres décisionnels, utilisez la classe
RandomForestRegressor. Utilisez ces modèles pour créer plusieurs arbres de décision de méthode d'apprentissage pour la régression.Pour créer des modèles de classificateur d'arbre de décision à boosting de gradient, utilisez la classe
XGBClassifier. Utilisez ces modèles pour créer de manière additive plusieurs arbres de décision de méthode d'apprentissage pour la classification.Pour créer des modèles de régression d'arbre de décision à boosting de gradient, utilisez la classe
XGBRegressor. Utilisez ces modèles pour créer de manière additive plusieurs arbres de décision de méthode d'apprentissage pour la régression.
Modèles de prévision
Vous pouvez créer des estimateurs pour les modèles de prévision à l'aide du module bigframes.ml.forecasting.
Pour créer des modèles de prévision de séries temporelles, utilisez la classe ARIMAPlus.
Modèles importés
Vous pouvez créer des estimateurs pour les modèles importés à l'aide du module bigframes.ml.imported.
Pour importer des modèles Open Neural Network Exchange (ONNX), utilisez la classe
ONNXModel.Pour importer un modèle TensorFlow, utilisez la classe
TensorFlowModel.Pour importer des modèles XGBoostModel, utilisez la classe
XGBoostModel.
Modèles linéaires
Créez des estimateurs pour les modèles linéaires à l'aide du module bigframes.ml.linear_model.
Pour créer des modèles de régression linéaire, utilisez la classe
LinearRegression. Utilisez ces modèles pour les prévisions, par exemple pour prévoir les ventes d'un article un jour donné.Pour créer des modèles de régression logistique, utilisez la classe
LogisticRegression. Utilisez ces modèles pour classer au moins deux valeurs possibles (par exemple, si une entrée estlow-value,medium-valueouhigh-value).
L'exemple de code suivant montre comment utiliser bigframes.ml pour effectuer les opérations suivantes :
- Charger des données à partir de BigQuery
- Nettoyez et préparez les données d'entraînement.
- Créez et appliquez un modèle de régression bigframes.ml.LinearRegression.
Grands modèles de langage
Vous pouvez créer des estimateurs pour les LLM à l'aide du module bigframes.ml.llm.
Pour créer des modèles génératifs de texte Gemini, utilisez la classe
GeminiTextGenerator. Utilisez ces modèles pour les tâches de génération de texte.Pour créer des estimateurs pour les grands modèles de langage (LLM) distants, utilisez le module
bigframes.ml.llm.
L'exemple de code suivant montre comment utiliser la classe bigframes.ml.llm
GeminiTextGenerator pour créer un modèle Gemini pour la génération de code :
Modèles distants
Pour utiliser des modèles distants de DataFrame BigQuery ML (bigframes.ml.remote ou bigframes.ml.llm), vous devez activer les API suivantes :
Lorsque vous utilisez des modèles ML distants BigQuery DataFrames, vous avez besoin du rôle Administrateur de projet IAM (roles/resourcemanager.projectIamAdmin) si vous utilisez une connexion BigQuery par défaut, ou du rôle Navigateur (roles/browser) si vous utilisez une connexion préconfigurée. Vous pouvez éviter cette exigence en définissant l'option bigframes.pandas.options.bigquery.skip_bq_connection_check sur True. Dans ce cas, la connexion (par défaut ou préconfigurée) est utilisée telle quelle, sans aucune vérification d'existence ni d'autorisation. Si vous utilisez la connexion préconfigurée et que vous ignorez la vérification de connexion, vérifiez les points suivants :
- La connexion est créée au bon endroit.
- Si vous utilisez des modèles distants BigQuery DataFrames ML, le compte de service dispose du rôle Utilisateur Vertex AI (
roles/aiplatform.user) dans le projet.
La création d'un modèle distant dans BigQuery DataFrames crée une connexion BigQuery.
Par défaut, une connexion nommée bigframes-default-connection est utilisée. Si vous préférez, vous pouvez utiliser une connexion BigQuery préconfigurée. Dans ce cas, la création de la connexion est ignorée. Le compte de service pour la connexion par défaut se voit attribuer le rôle Utilisateur Vertex AI (roles/aiplatform.user) sur le projet.
Créer des pipelines
Vous pouvez créer des pipelines de ML à l'aide du module bigframes.ml.pipeline.
Les pipelines vous permettent de combiner plusieurs étapes de ML pour qu'elles puissent faire l'objet d'une validation croisée tout en définissant différents paramètres. Cela simplifie votre code et vous permet de déployer ensemble les étapes de prétraitement des données et un estimateur.
Pour créer un pipeline de transformations avec un estimateur final, utilisez la classe Pipeline.
Sélectionner des modèles
Pour diviser vos ensembles de données d'entraînement et de test, et sélectionner les meilleurs modèles, utilisez le module bigframes.ml.model_selection :
Pour répartir les données entre les ensembles d'entraînement et de test (évaluation), comme indiqué dans l'exemple de code suivant, utilisez la fonction
train_test_split:X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)Pour créer des ensembles d'entraînement et de test à plusieurs plis afin d'entraîner et d'évaluer des modèles, comme indiqué dans l'exemple de code suivant, utilisez la classe
KFoldet la méthodeKFold.split. Cette fonctionnalité est utile pour les petits ensembles de données.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 setsPour créer automatiquement des ensembles d'entraînement et de test multicouches, entraîner et évaluer le modèle, et obtenir le résultat de chaque pli, comme indiqué dans l'exemple de code suivant, utilisez la fonction
cross_validate:scores = cross_validate(model, X, y, cv=5)
Étapes suivantes
- En savoir plus sur le système de types de données BigQuery DataFrames
- Découvrez comment générer du code BigQuery DataFrames avec Gemini.
- Découvrez comment analyser les téléchargements de packages depuis PyPI avec BigQuery DataFrames.
- Consultez le code source, les exemples de notebooks et les exemples de BigQuery DataFrames sur GitHub.
- Explorez la documentation de référence de l'API BigQuery DataFrames.