Instruction CREATE MODEL pour les modèles de transformation uniquement
Ce document décrit l'instruction CREATE MODEL
pour créer des modèles de transformation uniquement dans BigQuery. Les modèles de transformation uniquement utilisent la clause TRANSFORM
pour appliquer des fonctions de prétraitement aux données d'entrée et renvoyer les données prétraitées. Les modèles de transformation uniquement dissocient le prétraitement des données de l'entraînement du modèle, ce qui vous permet de capturer et de réutiliser facilement un ensemble de règles de prétraitement des données.
Vous pouvez utiliser un modèle de transformation uniquement conjointement avec la fonction ML.TRANSFORM
pour fournir des données prétraitées à d'autres modèles :
- Vous pouvez l'utiliser dans l'instruction de requête lors de la création d'un autre modèle afin d'utiliser les données transformées en tant que données d'entraînement pour ce modèle.
- Vous pouvez l'utiliser dans l'argument
query statement
de la fonctionML.PREDICT
afin de fournir des données pour la prédiction traitées de la manière attendue par la cible du modèle.
Pour les transformations de caractéristiques par lot, il est préférable d'utiliser des modèles de transformation uniquement, car ils vous permettent de traiter de grandes quantités de données en peu de temps. Pour les transformations de caractéristiques en ligne, il est préférable d'utiliser Vertex AI Feature Store, car il fournit des réponses avec une faible latence.
Vous pouvez également définir un modèle de transformation uniquement avec la fonction ML.FEATURE_INFO
afin de renvoyer des informations sur les transformations de caractéristiques réalisées dans le modèle.
Pour en savoir plus sur les instructions et les fonctions SQL compatibles avec chaque type de modèle, consultez la section Parcours utilisateur de bout en bout pour chaque modèle.
Syntaxe de CREATE MODEL
{CREATE MODEL | CREATE MODEL IF NOT EXISTS | CREATE OR REPLACE MODEL} model_name TRANSFORM (select_list) OPTIONS(MODEL_TYPE = 'TRANSFORM_ONLY') AS query_statement
CREATE MODEL
Crée et entraîne un modèle dans l'ensemble de données spécifié. Si le nom du modèle existe, CREATE MODEL
renvoie une erreur.
CREATE MODEL IF NOT EXISTS
Crée et entraîne un modèle uniquement si celui-ci n'existe pas dans l'ensemble de données spécifié.
CREATE OR REPLACE MODEL
Crée et entraîne un modèle. Permet également de remplacer un modèle existant du même nom dans l'ensemble de données spécifié.
model_name
Nom du modèle que vous créez ou remplacez. Le nom du modèle doit être unique dans l'ensemble de données. Aucun autre modèle, ni table ne peut porter le même nom. Le nom du modèle doit respecter les mêmes règles de dénomination que celles des tables BigQuery. Un nom de modèle peut :
- contenir jusqu'à 1 024 caractères ;
- contenir des lettres (majuscules ou minuscules), des chiffres et des traits de soulignement.
model_name
n'est pas sensible à la casse.
Si aucun projet par défaut n'est configuré, vous devez préfixer le nom du modèle par l'ID du projet en respectant le format suivant (y compris les accents graves) :
`[PROJECT_ID].[DATASET].[MODEL]`
par exemple, `myproject.mydataset.mymodel`.
select_list
Vous pouvez transmettre les colonnes de query_statement
pour l'entraînement du modèle sans transformation en utilisant *
, * EXCEPT()
ou en répertoriant directement les noms des colonnes.
Les colonnes de query_statement
ne sont pas toutes requises dans la clause TRANSFORM
. Vous pouvez donc supprimer certaines colonnes de query_statement
en les omettant dans la clause TRANSFORM
.
Vous pouvez transformer les entrées dans query_statement
en utilisant des expressions dans select_list
. select_list
est semblable à une instruction SELECT
normale.
select_list
accepte la syntaxe suivante :
*
* EXCEPT()
* REPLACE()
expression
expression.*
Les éléments suivants ne peuvent pas apparaître dans select_list
:
- Fonctions d'agrégation
- Fonctions d'analyse autres que BigQuery ML Pour en savoir plus sur les fonctions compatibles, consultez la page Prétraitement manuel des caractéristiques.
- Fonctions définies par l'utilisateur
- Sous-requêtes
- Colonnes anonymes. Par exemple,
a + b as c
est autorisé, contrairement àa + b
.
Les colonnes de résultats de select_list
peuvent être de n'importe quel type de données accepté par BigQuery.
Si elles sont présentes, les colonnes suivantes doivent apparaître dans select_list
sans transformation :
label
data_split_col
kmeans_init_col
instance_weight_col
Si ces colonnes sont renvoyées par query_statement
, vous devez les référencer dans select_list
par nom de colonne en dehors de toute expression, ou en utilisant *
. Vous ne pouvez pas utiliser d'alias avec ces colonnes.
MODEL_TYPE
Syntaxe
MODEL_TYPE = 'TRANSFORM_ONLY'
Description
Spécifie le type de modèle. Cette option est obligatoire.
query_statement
Requête GoogleSQL contenant les données à prétraiter Les statistiques calculées lors de la transformation de ces données sont appliquées aux données d'entrée de toutes les fonctions avec lesquelles vous utilisez le modèle.
Examples
Les exemples suivants montrent comment créer et utiliser des modèles de transformation uniquement.
Exemple 1
L'exemple suivant crée un modèle nommé mymodel
dans mydataset
dans votre projet par défaut. Le modèle transforme plusieurs colonnes de la table publique BigQuery bigquery-public-data.ml_datasets.penguins
:
CREATE MODEL `mydataset.transform_model` TRANSFORM( species, island, ML.MAX_ABS_SCALER(culmen_length_mm) OVER () AS culmen_length_mm, ML.MAX_ABS_SCALER(culmen_depth_mm) OVER () AS culmen_depth_mm, ML.MAX_ABS_SCALER(flipper_length_mm) OVER () AS flipper_length_mm, sex, body_mass_g) OPTIONS ( model_type = 'transform_only') AS ( SELECT * FROM `bigquery-public-data.ml_datasets.penguins` );
Exemple 2
L'exemple suivant crée un modèle nommé mymodel
dans mydataset
dans votre projet par défaut. Le modèle est entraîné sur des données prétraitées à l'aide d'un modèle de transformation uniquement :
CREATE MODEL `mydataset.mymodel` OPTIONS ( MODEL_TYPE = 'LINEAR_REG', MAX_ITERATIONS = 5, INPUT_LABEL_COLS = ['body_mass_g'] ) AS SELECT * FROM ML.TRANSFORM( MODEL `mydataset.transform_model`, TABLE `bigquery-public-data.ml_datasets.penguins`) WHERE body_mass_g IS NOT NULL;