L'entraînement à l'aide des algorithmes intégrés d'AI Platform Training vous permet d'envoyer votre ensemble de données et d'entraîner un modèle sans avoir à écrire un code d'entraînement. Cette page explique le fonctionnement de l'algorithme intégré XGBoost, ainsi que son utilisation.
Présentation
L'algorithme intégré XGBoost est un wrapper pour l'algorithme XGBoost, qui est compatible pour une exécution sur AI Platform Training.
Ce document décrit une version de l'algorithme qui s'exécute sur une seule instance dupliquée de machine virtuelle. Il existe également une version distribuée de cet algorithme qui exploite plusieurs machines virtuelles pour l'entraînement et impose une utilisation légèrement différente. Cet algorithme comporte deux phases :
- Prétraitement : AI Platform Training transforme votre mélange de données catégorielles et numériques en ensemble de données entièrement numérique afin de le préparer à l'entraînement avec XGBoost.
- Entraînement : AI Platform Training exécute la tâche d'entraînement à l'aide de l'algorithme XGBoost à partir de votre ensemble de données et des paramètres de modèle que vous avez fournis. La mise en œuvre actuelle est basée sur la version 0.81 de XGBoost.
Limites
Les fonctionnalités suivantes ne sont pas compatibles avec l'entraînement effectué à l'aide de la version intégrée et à instance unique de l'algorithme XGBoost :
- Entraînement à l'aide de GPU. Pour effectuer un entraînement avec des GPU, utilisez l'algorithme XGBoost distribué intégré.
- Entraînement distribué. Pour exécuter une tâche d'entraînement distribué, utilisez l'algorithme distribué intégré XGBoost.
Types de machines compatibles
Voici les niveaux d'évolutivité et types de machines d'AI Platform Training qui sont compatibles :
- Niveau d'évolutivité
BASIC
- Niveau d'évolutivité
CUSTOM
avec n'importe lequel des types de machine Compute Engine compatible avec AI Platform Training. - Niveau d'évolutivité
CUSTOM
avec n'importe lequel des anciens types de machine suivants :standard
large_model
complex_model_s
complex_model_m
complex_model_l
Mettre en forme les données d'entrée
XGBoost fonctionne sur des données tabulaires numériques. Chaque ligne d'un ensemble de données représente une instance, et chaque colonne d'un ensemble de données représente une valeur de caractéristique. La colonne cible représente la valeur que vous souhaitez prédire.
Préparer un fichier CSV
Vos données d'entrée doivent être contenues dans un fichier CSV encodé en UTF-8. Si vos données d'entraînement ne contiennent que des valeurs catégorielles et numériques, vous pouvez utiliser notre module de prétraitement pour convertir les données catégorielles en données numériques. Vous pouvez aussi exécuter la tâche d'entraînement sans activer le prétraitement automatique.
Vous devez préparer votre fichier d'entrée CSV conformément aux conditions suivantes :
- Supprimez la ligne d'en-tête. Cette ligne contient les libellés de chaque colonne. Supprimez-la afin d'éviter de l'envoyer avec le reste des instances de données en tant que données d'entraînement.
- Assurez-vous que la colonne cible est placée en premier. La colonne cible contient la valeur que vous essayez de prédire. Pour un algorithme de classification, toutes les valeurs de la colonne cible représentent une classe ou une catégorie. Pour un algorithme de régression, toutes les valeurs de la colonne cible sont des valeurs numériques.
Gérer les valeurs des entiers
La signification des valeurs des entiers peut être ambiguë. Par conséquent, les colonnes comprenant ce type de valeurs sont problématiques pour le prétraitement automatique. AI Platform Training détermine automatiquement comment gérer les valeurs des entiers. Par défaut :
- Si chaque valeur d'entier est unique, la colonne est considérée comme une liste de clés d'instance.
- Si elle ne contient que quelques valeurs d'entiers uniques, la colonne est considérée comme catégorielle.
- Sinon, les valeurs de la colonne sont converties en valeurs à virgule flottante et traitées comme des valeurs numériques.
Pour remplacer ces définitions par défaut :
- Si les données doivent être traitées comme des données numériques, convertissez toutes les valeurs d'entiers de la colonne en valeurs à virgule flottante, comme dans l'exemple suivant : {101.0, 102.0, 103.0}.
- Si les données doivent être traitées comme des données catégorielles, ajoutez un préfixe non numérique à toutes les valeurs d'entiers de la colonne, comme dans l'exemple suivant : {code_101, code_102, code_103}
Normaliser les valeurs cibles pour la régression
Pour les tâches d'entraînement par régression, veillez à normaliser vos valeurs cibles de sorte que chaque valeur soit comprise entre 0 et 1.
Vérifier les autorisations du bucket Cloud Storage
Pour stocker vos données, utilisez un bucket Cloud Storage dans le projet Google Cloud que vous utilisez pour exécuter les tâches AI Platform Training. Sinon, accordez à AI Platform Training l'accès au bucket Cloud Storage où vos données sont stockées.
Envoyer une tâche d'entraînement XGBoost
Cette section explique comment envoyer une tâche d'entraînement utilisant l'algorithme intégré XGBoost.
Vous trouverez de brèves explications sur chaque hyperparamètre dans Google Cloud Console, ainsi qu'une explication plus complète dans la documentation de référence sur l'algorithme XGBoost intégré.
Console
Accédez à la page "Tâches" d'AI Platform Training dans Google Cloud Console :
Cliquez sur le bouton Nouvelle tâche d'entraînement. Dans les options qui s'affichent en dessous, cliquez sur Entraînement de l'algorithme intégré.
Sur la page Créer une tâche d'entraînement, sélectionnez XGBoost intégré, puis cliquez sur Suivant.
Pour en savoir plus sur tous les paramètres disponibles, suivez les liens présents dans Google Cloud Console, et consultez la documentation de référence sur l'algorithme XGBoost intégré.
gcloud
Définissez des variables d'environnement pour votre tâche, en remplaçant les éléments entre crochets (
[VALUES-IN-BRACKETS]
) par vos propres valeurs :# Specify the name of the Cloud Storage bucket where you want your # training outputs to be stored, and the Docker container for # your built-in algorithm selection. BUCKET_NAME='[YOUR-BUCKET-NAME]' IMAGE_URI='gcr.io/cloud-ml-algos/boosted_trees:latest' # Specify the Cloud Storage path to your training input data. TRAINING_DATA='gs://[YOUR_BUCKET_NAME]/[YOUR_FILE_NAME].csv' DATASET_NAME='census' ALGORITHM='xgboost' MODEL_TYPE='classification' DATE='date '+%Y%m%d_%H%M%S'' MODEL_NAME="${DATASET_NAME}_${ALGORITHM}_${MODEL_TYPE}" JOB_ID="${MODEL_NAME}_${DATE}" JOB_DIR="gs://${BUCKET_NAME}/algorithm_training/${MODEL_NAME}/${DATE}"
Envoyez la tâche d'entraînement à l'aide de
gcloud ai-platform jobs training submit
:gcloud ai-platform jobs submit training $JOB_ID \ --master-image-uri=$IMAGE_URI --scale-tier=BASIC --job-dir=$JOB_DIR \ -- \ --preprocess --objective=binary:logistic \ --training_data_path=$TRAINING_DATA
Surveillez l'état de votre tâche d'entraînement en consultant les journaux avec
gcloud
. Reportez-vous aux commandesgcloud ai-platform jobs describe
etgcloud ai-platform jobs stream-logs
.gcloud ai-platform jobs describe ${JOB_ID} gcloud ai-platform jobs stream-logs ${JOB_ID}
Fonctionnement du prétraitement
Le prétraitement automatique fonctionne avec les données catégorielles et numériques. La routine de prétraitement commence par analyser les données, puis les transforme.
Analyse
Tout d'abord, AI Platform Training détecte automatiquement le type de données de chaque colonne, détermine comment traiter chaque colonne, puis effectue certains calculs statistiques sur les données de la colonne. Ces informations sont capturées dans le fichier metadata.json
.
AI Platform Training analyse le type de la colonne cible pour déterminer si l'ensemble de données en question est destiné à la régression ou à la classification. Si cette analyse entre en conflit avec votre sélection de objective
, une erreur est générée. Indiquez de façon explicite comment la colonne cible doit être traitée en formatant vos données de façon claire dans les cas ambigus.
Type : la colonne peut être numérique ou catégorielle.
Traitement : AI Platform Training détermine comment traiter chaque colonne de la manière suivante :
- Si la colonne inclut une seule valeur dans toutes les lignes, elle est traitée comme une constante.
- Si la colonne est catégorielle et inclut des valeurs uniques dans toutes les lignes, elle est traitée comme un identifiant de ligne.
- Si la colonne est numérique avec des valeurs à virgule flottante ou entières et qu'elle contient de nombreuses valeurs uniques, elle est traitée comme numérique.
- Si la colonne est numérique avec des valeurs d'entiers et qu'elle contient peu de valeurs uniques, elle est traitée comme une colonne catégorielle dans laquelle les valeurs d'entiers représentent l'identité ou le vocabulaire.
- Une colonne est considérée comme ayant peu de valeurs uniques si le nombre de celles-ci dans la colonne est inférieur à 20 % du nombre de lignes dans l'ensemble de données d'entrée.
- Si la colonne est catégorielle avec une cardinalité élevée, elle est traitée par hachage, le nombre de buckets de hachage étant égal à la racine carrée du nombre de valeurs uniques dans la colonne.
- Une colonne catégorielle est considérée comme ayant une cardinalité élevée si le nombre de valeurs uniques est supérieur à la racine carrée du nombre de lignes dans l'ensemble de données.
- Si la colonne est catégorielle et que le nombre de valeurs uniques est inférieur ou égal à la racine carrée du nombre de lignes dans l'ensemble de données, la colonne est traitée comme une colonne catégorielle normale avec un vocabulaire.
Statistiques : AI Platform Training calcule les statistiques suivantes en fonction du type de colonne et du traitement identifiés. Elles pourront être utilisées ultérieurement pour transformer la colonne.
- Si la colonne est numérique, les valeurs de moyenne et de variance sont calculées.
- Si la colonne est catégorielle et que le traitement est une identité ou un vocabulaire, les valeurs distinctes sont extraites de la colonne.
- Si la colonne est catégorielle et que le traitement est un hachage, le nombre de buckets de hachage est calculé par rapport à la cardinalité de la colonne.
Transformation
Une fois l'analyse initiale de l'ensemble de données terminée, AI Platform Training transforme les données en fonction des types, traitements et statistiques qui sont appliqués à l'ensemble de données. AI Platform Training effectue les transformations dans l'ordre suivant :
- Divise l'ensemble de données d'entraînement en ensembles de données de validation et de test si vous spécifiez la quantité de données d'entraînement à utiliser dans chaque ensemble (exprimée en pourcentage).
- Supprime les lignes contenant plus de 10 % de valeurs manquantes.
Remplit les valeurs manquantes. La moyenne est utilisée pour les colonnes numériques et les zéros sont utilisés pour les colonnes catégorielles. Consultez l'exemple ci-dessous.
Pour chaque colonne catégorielle dont le traitement est un vocabulaire ou une identité, AI Platform Training effectue un encodage one-hot sur les valeurs de la colonne. Consultez l'exemple ci-dessous.
Pour chaque colonne catégorielle dont le traitement est un hachage, AI Platform Training utilise FeatureHasher de scikit-learn pour hacher les caractéristiques. Le nombre de caractéristiques décomptées précédemment détermine le nombre de buckets de hachage.
Chaque colonne désignée par un traitement par clé de ligne ou par constante est supprimée.
Exemples de transformations
Les lignes contenant 10 % de valeurs manquantes sont supprimées. Dans les exemples suivants, nous supposons que la ligne contient 10 valeurs. Chaque ligne d'exemple est tronquée pour des raisons de simplicité.
Ligne concernée | Valeurs d'origine | Valeurs transformées | Explication |
---|---|---|---|
Exemple de ligne sans valeurs manquantes | [3, 0,45, ..., 'fruits', 0, 1] |
[3, 0,45, ..., 1, 0, 0, 0, 1] |
La chaîne "fruits" est transformée en valeurs "1, 0, 0" dans l'encodage one-hot. |
Trop de valeurs manquantes | [3, 0,45, ..., 'fruits', __, __] |
La ligne est supprimée. | Plus de 10 % des valeurs de la ligne sont manquantes. |
Valeur numérique manquante | [3, 0,45, ..., 'fruits', 0, __] |
[3, 0.45, ..., 1, 0, 0, 0, 0,54] |
|
Valeur catégorielle manquante | [3, 0,45, ..., __, 0, 1] |
[3, 0,45, ..., 0, 0, 0, 0, 1] |
|
Une fois le prétraitement automatique terminé, AI Platform Training importe l'ensemble de données traité dans votre bucket Cloud Storage, dans le répertoire que vous avez spécifié dans la requête de la tâche.
Étape suivante
- Obtenez plus d'informations sur XGBoost.
- Reportez-vous à la documentation de référence sur l'algorithme intégré XGBoost pour en savoir plus sur les différents paramètres.