1. Introduction
Dans cet atelier, vous allez utiliser BigQuery pour entraîner et diffuser un modèle avec des données tabulaires à l'aide d'une console. Cette offre est un complément idéal à l'entraînement et à la diffusion de modèles basés sur SQL. BigQuery ML permet aux utilisateurs de créer et d'exécuter des modèles de machine learning dans BigQuery à l'aide de requêtes SQL. L'objectif est de démocratiser le machine learning en permettant aux utilisateurs de SQL de créer des modèles à l'aide de leurs propres outils et d'accélérer le rythme de développement en leur évitant d'avoir à transférer des données.
Objectifs de l'atelier
- Explorer les données disponibles dans BigQuery
- Créer un modèle à l'aide de SQL dans BigQuery à l'aide de la console
- Évaluer les résultats du modèle créé
- Prédire si une transaction est frauduleuse ou non avec le modèle créé
2. À propos des données
Les ensembles de données contiennent des transactions effectuées par carte de crédit en septembre 2013 par des titulaires de cartes européens. Cet ensemble de données présente les transactions effectuées sur deux jours, avec 492 transactions frauduleuses sur 284 807. Il est très déséquilibré, la classe positive (fraudes) représentant 0,172 % de toutes les transactions.
Elle ne contient que des variables d'entrée numériques résultant d'une transformation PCA. Malheureusement, pour des raisons de confidentialité, nous ne pouvons pas vous fournir les fonctionnalités d'origine ni plus d'informations sur les données.
- Features V1, V2, ... V28 sont les composants principaux obtenus avec l'ACP. Les seules caractéristiques qui n'ont pas été transformées avec l'ACP sont "Time" et "Amount".
- La caractéristique "Heure" contient le nombre de secondes écoulées entre chaque transaction et la première transaction de l'ensemble de données.
- La caractéristique "Montant" correspond au montant de la transaction. Elle peut être utilisée pour l'apprentissage sensible aux coûts dépendant des exemples.
- La classe de fonctionnalité est la variable de réponse. Elle prend la valeur 1 en cas de fraude et 0 dans le cas contraire.
L'ensemble de données a été collecté et analysé lors d'une collaboration de recherche entre Worldline et le groupe Machine Learning ( http://mlg.ulb.ac.be) de l'ULB (Université Libre de Bruxelles) sur l'exploration de big data et la détection de la fraude.
Pour en savoir plus sur les projets actuels et passés sur des thèmes connexes, consultez https://www.researchgate.net/project/Fraud-detection-5 et la page du projet DefeatFraud.
Citation :
Andrea Dal Pozzolo, Olivier Caelen, Reid A. Johnson et Gianluca Bontempi. Calibration des probabilités avec sous-échantillonnage pour la classification déséquilibrée. In Symposium on Computational Intelligence and Data Mining (CIDM), IEEE, 2015
Dal Pozzolo, Andrea; Caelen, Olivier; Le Borgne, Yann-Ael; Waterschoot, Serge; Bontempi, Gianluca. Learned lessons in credit card fraud detection from a practitioner perspective, Expert systems with applications,41,10,4915-4928,2014, Pergamon
Dal Pozzolo, Andrea; Boracchi, Giacomo; Caelen, Olivier; Alippi, Cesare; Bontempi, Gianluca. Credit card fraud detection: a realistic modeling and a novel learning strategy,IEEE transactions on neural networks and learning systems,29,8,3784-3797,2018,IEEE
Dal Pozzolo, Andrea Adaptive Machine learning for credit card fraud detection ULB MLG PhD thesis (supervised by G. Bontempi)
Carcillo, Fabrizio; Dal Pozzolo, Andrea; Le Borgne, Yann-Aël; Caelen, Olivier; Mazzer, Yannis; Bontempi, Gianluca. Scarff : un framework évolutif pour la détection des fraudes à la carte de crédit en streaming avec Spark, Information fusion,41, 182-194,2018,Elsevier
Carcillo, Fabrizio; Le Borgne, Yann-Aël; Caelen, Olivier; Bontempi, Gianluca. Streaming active learning strategies for real-life credit card fraud detection: assessment and visualization,International Journal of Data Science and Analytics, 5,4,285-300,2018,Springer International Publishing
Bertrand Lebichot, Yann-Aël Le Borgne, Liyun He, Frederic Oblé, Gianluca Bontempi Deep-Learning Domain Adaptation Techniques for Credit Cards Fraud Detection, INNSBDDL 2019: Recent Advances in Big Data and Deep Learning, pp 78-88, 2019
Fabrizio Carcillo, Yann-Aël Le Borgne, Olivier Caelen, Frederic Oblé, Gianluca Bontempi Combining Unsupervised and Supervised Learning in Credit Card Fraud Detection Information Sciences, 2019
3. Configurer votre environnement
Pour suivre cet atelier de programmation, vous aurez besoin d'un projet Google Cloud Platform dans lequel la facturation est activée. Pour créer un projet, suivez ces instructions.
- Activer l'API BigQuery
Accédez à BigQuery et cliquez sur "Activer" si ce n'est pas déjà fait. Vous en aurez besoin pour créer votre modèle.
4. Explorer les données
Étape 1 : Accédez à BigQuery
Recherchez BigQuery sur https://cloud.google.com/console.
Étape 2 : Explorez les données à l'aide d'une requête
Dans l'éditeur , saisissez la requête SQL ci-dessous pour examiner les données de l'ensemble de données public .
SELECT * FROM `bigquery-public-data.ml_datasets.ulb_fraud_detection` LIMIT 5
Étape 3 : Exécuter
Appuyez sur la commande "Exécuter" ci-dessus pour exécuter la requête.

Résultats
Ils doivent s'afficher dans le panneau "Résultats de la requête" et ressembler à ceci : Les données peuvent varier

Explorez les colonnes concernées et la sortie.
Vous pouvez exécuter plusieurs requêtes pour comprendre comment les données sont distribuées. Voici quelques exemples :
SELECT count(*) FROM `bigquery-public-data.ml_datasets.ulb_fraud_detection`
where Class=0;
SELECT count(*) FROM `bigquery-public-data.ml_datasets.ulb_fraud_detection`
where Class=1;
5. Créer un ensemble de données de sortie
Étape 1 : Créez un ensemble de données pour créer votre modèle
- Dans le panneau "Explorateur" à gauche, sélectionnez le projet sur lequel vous travaillez actuellement, puis cliquez sur les trois points à côté.

- Cliquez sur "Créer un ensemble de données" en haut à droite.

- Saisissez les détails du nom de l'ensemble de données, de la période de conservation, de l'emplacement, etc. Utiliser ces paramètres

6. Créer un modèle de régression logistique
Étape 1 : Créez une déclaration
Dans la fenêtre "Requête", saisissez la requête ci-dessous pour créer le modèle. Comprendre les options clés grâce à cette déclaration Pour en savoir plus, consultez ce lien.
INPUT_LABEL_COLS indique l'étiquette de prédiction.
AUTO_CLASS_WEIGHTS est utilisé pour les ensembles de données déséquilibrés.
MODEL_TYPE indique l'algorithme utilisé. Dans ce cas, il s'agit de la régression logistique.
DATA_SPLIT_METHOD indique la répartition entre les données d'entraînement et de test.
CREATE OR REPLACE MODEL advdata.ulb_fraud_detection
TRANSFORM(
* EXCEPT(Amount),
SAFE.LOG(Amount) AS log_amount
)
OPTIONS(
INPUT_LABEL_COLS=['class'],
AUTO_CLASS_WEIGHTS = TRUE,
DATA_SPLIT_METHOD='seq',
DATA_SPLIT_COL='Time',
MODEL_TYPE='logistic_reg'
) AS
SELECT
*
FROM `bigquery-public-data.ml_datasets.ulb_fraud_detection`
Étape 2 : Exécuter
Exécutez l'instruction ci-dessus. Cette opération prend quelques minutes.
Remarquez les éléments clés après l'exécution

- Le panneau "Explorer" affichera le modèle créé.
- Le panneau "Résultats de la requête" indiquera la durée du traitement du ML SQL, comme pour toute instruction SQL.
- Le panneau "Résultats de la requête" contient également le lien "Accéder au modèle" pour vous permettre d'explorer.
Étape 3 : Explorer
Explorez le modèle créé en cliquant sur "Accéder au modèle" ou dans le panneau "Explorateur". Les onglets fournissent des informations sur le modèle créé , l'entraînement, l'évaluation, etc. Examinez les résultats.

Nous aborderons ce point plus en détail dans les sections suivantes.
Pour en savoir plus sur la régression logistique, cliquez ici.
7. Explorer les métriques d'évaluation du modèle
Au cours de cette étape, nous allons examiner les performances de notre modèle.
Une fois le job d'entraînement de votre modèle terminé, cliquez sur le modèle que vous venez d'entraîner et accédez à l'onglet "Évaluer". De nombreuses métriques d'évaluation sont disponibles. Nous n'en examinerons qu'une seule : roc_auc.
SELECT * FROM ML.EVALUATE(MODEL advdata.ulb_fraud_detection)
Les résultats ressembleraient à ceci. roc_auc est généralement plus important sur un ensemble de données déséquilibré

Pour en savoir plus sur les résultats. Consultez la documentation ML.Evaluate ici.
8. Prédire la classe pour une certaine période
Cliquez sur "Saisir une nouvelle requête" et exécutez le code SQL ci-dessous. Le temps identifié ici correspond à un montant frauduleux. Nous essayons de vérifier que la prédiction fonctionne.
SELECT Amount, predicted_class_probs, Class
FROM ML.PREDICT( MODEL advdata.ulb_fraud_detection,
(SELECT * FROM `bigquery-public-data.ml_datasets.ulb_fraud_detection` WHERE Time = 85285.0)
)
Le résultat devrait ressembler à ceci (les nombres peuvent varier) :

Dans cet exemple, nous affichons le montant avec la probabilité associée de l'étiquette. La colonne "Classe" indique les résultats réels.
Pour en savoir plus sur ML.PREDICT. Cliquez ici
9. Nettoyage
Si vous souhaitez nettoyer les ressources créées avec cet atelier, ouvrez l'ensemble de données à partir du panneau "Explorer" sur la gauche.

Cliquez sur "Supprimer l'ensemble de données" en haut à droite.

Saisissez à nouveau le nom de l'ensemble de données pour confirmer les informations. Dans notre cas, il s'agit de advdata.
10. Félicitations
Félicitations, vous venez de créer votre premier modèle, de l'évaluer et de faire des prédictions à l'aide du machine learning supervisé.
Vous connaissez désormais les principales étapes nécessaires pour créer un modèle de régression logistique.
Et ensuite ?
Découvrez d'autres façons de prédire
- Premiers pas avec BigQuery ML
- Prévisions de séries temporelles avec BigQuery ML
- Modèle de détection de fraudes à l'aide d'AutoML
- Détection des fraudes à l'aide de TensorFlow