BigQuery ML permet aux utilisateurs de créer et d’exécuter des modèles de Machine Learning dans BigQuery en utilisant des requêtes SQL standard. L’intérêt de l’outil est qu’il permet à des personnes connaissant le SQL de pouvoir utiliser ‘out-of-the-box’ des technologies de type Machine Learning sans avoir de grandes connaissances en Data Science, et sans avoir recours à l’écriture de programmes Java ou Python.
Les analystes de données peuvent ainsi utiliser le Machine Learning directement depuis BigQuery, leur outil Data Warehouse principal.
Un autre avantage est que l’outil permet de développer des modèles personnalisés de Machine Learning sur des très gros volumes d’informations sans avoir besoin de déplacer les données. BigQuery ML augmente la vitesse de développement et d’innovation en amenant le Machine Learning au niveau des données.
Pour ceux qui ont plus de connaissances en Machine Learning BigQuery ML permet d’ajuster finement de nombreuses options et hyperparamètres des modèles utilisés comme le learning rate, la taille des batch, les régularisations, le drop out, l’architecture des modèles deep neural network, les optimizers, la répartition des données en ensembles d’entraînement et d’évaluation,…
Les modèles de Machine Learning supportés par BigQuery ML
BigQuery ML supporte les modèles suivants:
- Régression linéaire pour l’inférence de valeurs continues (des nombres), par exemple les ventes d’un jour donné
- Boosted Tree Regressor également pour l’inférence de valeurs continues, via des Boosted Trees XGBoost
- DNN Regressor également pour l’inférence de valeurs continues, via des réseaux de neurones profonds
- AutoML Regressor également pour l’inférence de valeurs continues, via AutoML
- Régression logistique binaire et Régression logistique multi-classe pour la classification et l’inférence de valeurs discrètes (catégories), par exemple pour déterminer si un client fera un achat
- Boosted Tree Classifier également pour l’inférence de valeurs discrètes, via des Boosted Trees XGBoost
- DNN Classifier également pour l’inférence de valeurs discrètes, via des réseaux de neurones profonds
- AutoML Classifier également pour l’inférence de valeurs discrètes, via AutoML
- Clustering K-means pour la segmentation de données, par exemple pour identifier la segmentation des clients d’une entreprise
- Factorisation de matrices pour des systèmes de recommandation, par exemple pour inférer les articles préférés des clients qu’ils n’ont pas évalués avant
- Arima pour la prévision de séries de temps via un modèle univarié, par exemple pour prédire des points de données futurs à partir d’une ou plusieurs séries de temps
- Tensorflow pour l’utilisation de modèles personnalisés Tensorflow directement dans BigQuery ML
Le processus BigQuery ML
BigQuery ML démocratise la création et l’exécution de modèles de Machine Learning avec des extensions SQL propriétaires qui permettent de décrire les phases principales du cycle de vie d’un modèle de machine learning.
« Insérer diagramme create - evaluate - predict»
Création des jeux de données
Les jeux de données BigQuery ML sont les datasets BigQuery. BigQuery ML va utiliser les tables ou des résultats de requêtes, pour entraîner des modèles puis évaluer les modèles et enfin inférer les prédictions à partir des modèles entraînés. Lors de la création d’un modèle on peut spécifier la méthode (DATA_SPLIT_METHOD) utilisée pour répartir les données en jeux de données d’entraînement et d’évaluation. Parmi les options disponibles il est possible de laisser BigQuery répartir automatiquement les données d’entraînement ou d’évaluation, ou de spécifier à BigQuery quels exemples doivent être utilisés pour l’entraînement ou l’évaluation.
Entraînement des modèles
L’instruction CREATE MODEL permet de créer et d’entraîner un modèle de Machine Learning avec BigQuery ML.
Elle propose des options permettant notamment de:
- nommer le modèle utilisé et le dataset BigQuery qui hébergera le modèle entraîné
- spécifier les jeux de données sur lesquels entraîner et évaluer le modèle
- préciser les colonnes qui correspondent aux labels, dans le cadre d’un entraînement de type supervisé
- définir tous les hyper hyperparamètres (learning rate, hidden units, optimizers, dropout,…) utilisés pour contrôler l’apprentissage lors de l’entraînement du modèle
Bien évidemment les options passées à l’instruction CREATE MODEL varient en fonction du type de modèle entraîné.
A la fin de l’exécution de cette instruction, un modèle BigQuery ML est disponible dans le dataset spécifié lors de sa création.
La fonction ML.TRAINING_INFO fournit des informations à propos de l’entraînement d’un modèle, par exemple l’itération courante, la valeur de la loss ou du learning rate. Elle peut être exécutée pendant l’entraînement d’un modèle ou après.
Evaluation des modèles
Une fois le modèle entraîné, BigQuery ML présente une des informations directement dans la console permettant d’évaluer les métriques principaux du modèle de machine learning.
BigQuery ML fournit également des fonctions pour obtenir ces métriques, notamment:
- ML.CONFUSION_MATRIX qui retourne une matrice de confusion pour les modèles de régression logistique
- ML.EVALUATE qui permet d’évaluer les métriques des modèles telles que la précision, le recall, l’accuracy, le f1 score, la log loss, ou la roc auc
- ML.ROC_CURVE qui permet d’évaluer des métriques spécifiques à la régression logistique avec différents seuils: recall, taux de faux positifs, vrais positifs, faux positifs, vrais négatifs, faux négatifs
Prédiction à partir de modèles entraînés
Lorsqu’un modèle entraîné est disponible dans BigQuery ML il est possible de l’utiliser pour réaliser des prédictions. Différentes fonctions sont disponibles suivant le type de modèle:
- ML.PREDICT pour les modèles de type regression logistique, régression linéaire, k-means et TensorFlow. Cette fonction peut également être utilisée pendant l’entraînement (à condition qu’une itération ait été réalisée)
- ML.FORECAST pour les modèles de type time series Arima
- ML.RECOMMEND pour chaque combinaison de lignes utilisateur produit pour les modèles de factorisation de matrices
Inspecter les modèles
BigQuery ML met à disposition de nombreuses fonctions pour inspecter les modèles et leurs caractéristiques. On notera:
- ML.ARIMA_COEFFICIENTS pour voir les coefficients d’un modèle ARIMA
- ML_CENTROIDS pour obtenir des informations sur les centroids d’un modèle k-means
- ML.FEATURE_IMPORTANCE pour obtenir un score d’importance de feature pour les modèles Boosted Tree
- ML.FEATURE_INFO pour obtenir des informations sur les caractéristiques d’entrée utilisées pour entraîner un modèle: min, max, mean, stddev, null_count,…
- ML.TRAINING_INFO pour obtenir des informations sur les itérations d’entraînement d’un modèle
- ML.WEIGHTS pour obtenir les poids utilisés par un modèle lors des prédictions
Préparation des données et feature engineering
Il y a deux types de préparation des données dans BigQuery ML: automatique et manuelle.
BigQuery ML prépare automatiquement les données pendant l’entraînement des modèles via l’instruction CREATE MODEL. Les variables ou caractéristiques d’entrée sont transformées: standartisation des colonnes numériques, one-hot encoding des colonnes non numériques (hors timestamp), multi-hot encoding des tableaux, extraction des composants de timestamp, expansion des structures en colonnes uniques, gestion des données manquantes via imputation. Ce préprocessing automatique est inclu lors de l’export d’un modèle.
BigQuery ML fournit la clause TRANSFORM pour définir manuellement des prétraitements spécifiques sur les données ou leurs caractéristiques. Des fonctions spécifiques de préprocessing scalaires (par exemple ML.BUCKETIZE) ou analytiques (par exemple ML.QUANTILE_BUCKETIZE) sont disponibles. Le préprocessing définit par la clause TRANSFORM est inclu dans le modèle et est automatiquement appliqué lors des phases d’évaluation et de prédiction. Il n’est toutefois pas possible d’exporter un modèle si la clause TRANSFORM a été utilisée pour faire du feature engineering.
Export des modèles entraînés
L’instruction EXPORT MODEL permet d’exporter dans Cloud Storage la plupart des modèles entrainés avec BigQuery ML. Les modèles sont exportés au format TensorFlow SavedModel ou XGBoost Booster dans le cas des boosted trees. Ces modèles pourront ensuite être utilisés pour faire de la prédiction en ligne ou être édités en Python. Les modèles exportés non-AutoML pourront aussi être déployés dans Google Cloud AI Platform.
Modèles built-in et modèles externes
Les modèles built-in sont entraînés au sein de BigQuery. Ce sont les modèles comme la régression linéaire, la régression logistique, k-means, la factorisation de matrices et les modèles de séries temporelles.
Les modèles exdeternes sont entraînés en utilisant d’autres services Google Cloud. Les modèles Deep Neural Network et Boosted Tree sont entraînés sur AI Platform. Les modèles AutoML sont entrainés sur le backend AutoML Tables. Étant donné que les modèles externes sont entraînés en dehors de BigQuery, ces charges de travail ne sont pas préemptives. Par conséquent, pour garantir que les autres charges de travail ne sont pas affectées, seules les réservations avec une affectation de type de travail ML_EXTERNAL peuvent être utilisées pour ces travaux externes.