Entraînement à l'aide de l'algorithme intégré TabNet

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 TabNet intégré et explique comment l'utiliser.

Présentation

Cet algorithme intégré effectue les opérations de prétraitement et d'entraînement :

  1. 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.
  2. Entraînement : avec l'ensemble des données et les paramètres de modèle fournis, AI Platform Training exécute la tâche d'entraînement à l'aide de l'Estimator personnalisé de Tensorflow.

Limites

Les fonctionnalités suivantes ne sont pas compatibles avec l'entraînement à l'aide de l'algorithme TabNet intégré :

Types de machines compatibles

Voici les niveaux d'évolutivité et types de machines d'AI Platform Training qui sont compatibles :

Mettre en forme les données d'entrée

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 renseigner les valeurs numériques manquantes, fractionner l'ensemble de données et supprimer les lignes contenant plus de 10 % des valeurs manquantes. 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 étant catégorielles, ajoutez un préfixe non numérique à toutes les valeurs entières de la colonne, comme dans l'exemple suivant : {code_101, code_102, code_103}

Envoyer une tâche d'entraînement TabNet

Cette section explique comment envoyer une tâche d'entraînement à l'aide de l'algorithme TabNet intégré.

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 TabNet intégré.

Console

  1. Accédez à la page "Tâches" d'AI Platform Training dans Google Cloud Console :

    Page "Tâches" d'AI Platform Training

  2. 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é.

  3. Sur la page Créer une tâche d'entraînement, sélectionnez TabNet, puis cliquez sur Suivant.

  4. 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 TabNet intégré.

gcloud

  1. 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/tab_net: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='tabnet'
       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}"
    
  2. 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 \
      -- \
      --max_steps=2000 \
      --preprocess \
      --model_type=$MODEL_TYPE \
      --batch_size=4096 \
      --learning_rate=0.01 \
      --training_data_path=$TRAINING_DATA_PATH

  3. Surveillez l'état de votre tâche d'entraînement en consultant les journaux avec gcloud. Reportez-vous aux commandes gcloud ai-platform jobs describe et gcloud 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 model_type, 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 entières et qu'elle contient peu de valeurs uniques, elle est traitée comme une colonne catégorielle dans laquelle les valeurs entières 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 :

  1. Il divise l'ensemble de données d'entraînement en ensembles de données de validation et de test si vous spécifiez les pourcentages de répartition.
  2. Il supprime les lignes contenant plus de 10 % de valeurs manquantes.
  3. Il remplit les valeurs numériques manquantes à l'aide de la moyenne de la colonne.

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. Cette opération a lieu plus tard dans le graphe TensorFlow.
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]
  • La valeur moyenne de la colonne remplace la valeur numérique manquante. Dans cet exemple, la moyenne est 0,54.
  • La chaîne "fruits" est transformée en valeurs "1, 0, 0" dans l'encodage one-hot. Cette opération a lieu plus tard dans le graphe TensorFlow.
Valeur catégorielle manquante [3, 0,45, ...,
__, 0, 1]
[3, 0,45, ...,
0, 0, 0, 0, 1]
  • La valeur catégorielle manquante est transformée en valeurs "0, 0, 0" dans l'encodage one-hot. Cette opération a lieu plus tard dans le graphe TensorFlow.

Colonnes de caractéristiques

Lors de la transformation, les colonnes ne sont pas traitées. Au lieu de cela, les métadonnées générées lors de l'analyse sont transmises à AI Platform Training pour créer les colonnes de caractéristiques en conséquence :

Type de colonne Traitement de la colonne Colonne de caractéristiques obtenue
Numérique (Tous types de traitement de colonne) tf.feature_column.numeric_column

Les valeurs de moyenne et de variance sont utilisées pour normaliser les valeurs:
new_value = (input_value - mean) / sqrt(variance)

Catégoriel Identité tf.feature_column.categorical_column_with_identity
Catégorielle Vocabulaire tf.feature_column.categorical_column_with_vocabulary_list
Catégorielle Hachage tf.feature_column.categorical_column_with_hash_bucket
Catégorielle Identifiant de constante ou de ligne Ignoré. Aucune colonne de caractéristiques n'est créée.

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.

Autres ressources d'apprentissage