Addestramento con l'impiego dell'algoritmo TabNet integrato

L'addestramento con algoritmi integrati in AI Platform Training ti consente di inviare il tuo set di dati e addestrare un modello senza scrivere codice di addestramento. In questa pagina viene spiegato come funziona l'algoritmo TabNet integrato e come utilizzarlo.

Panoramica

Questo algoritmo integrato esegue la pre-elaborazione e l'addestramento:

  1. Pre-elaborazione: l'addestramento con AI Platform elabora la tua combinazione di dati categorici e numerici in un set di dati interamente numerico al fine di prepararla per l'addestramento.
  2. Addestramento: utilizzando il set di dati e i parametri del modello forniti, AI Platform Training esegue l'addestramento mediante lo strumento di stima personalizzato di TensorFlow.

Limitazioni

Le seguenti funzionalità non sono supportate per l'addestramento con l'algoritmo TabNet integrato:

Tipi di macchine supportati

Sono supportati i seguenti livelli e tipi di macchine di AI Platform Training:

Formatta i dati di input

Ogni riga di un set di dati rappresenta un'istanza e ogni colonna di un set di dati rappresenta un valore della funzionalità. La colonna target rappresenta il valore da prevedere.

Prepara il file CSV

I dati di input devono essere un file CSV con codifica UTF-8. Se i dati di addestramento sono composti solo da valori numerici e categorici, puoi utilizzare il nostro modulo di pre-elaborazione per inserire valori numerici mancanti, suddividere il set di dati e rimuovere le righe con più del 10% dei valori mancanti. In caso contrario, puoi eseguire l'addestramento senza attivare automaticamente la pre-elaborazione.

Devi preparare il file CSV di input per soddisfare i seguenti requisiti:

  • Rimuovi la riga di intestazione. La riga di intestazione contiene le etichette per ogni colonna. Rimuovi la riga di intestazione per evitare di inviarla con le altre istanze di dati come parte dei dati di addestramento.
  • Assicurati che la colonna di destinazione sia la prima colonna. La colonna target contiene il valore che stai cercando di prevedere. Per un algoritmo di classificazione, tutti i valori nella colonna di destinazione sono una classe o una categoria. Per un algoritmo di regressione, tutti i valori nella colonna di destinazione sono un valore numerico.

Gestire i valori interi

Il significato dei valori interi può essere ambiguo, il che rende le colonne di valori interi problematici nella pre-elaborazione automatica. AI Platform Training determina automaticamente come gestire i valori interi. Per impostazione predefinita:

  • Se ogni valore intero è univoco, la colonna viene trattata come chiavi di istanza.
  • Se ci sono solo alcuni valori interi univoci, la colonna viene considerata come categoria.
  • In caso contrario, i valori nella colonna vengono convertiti in floating e trattati come valori numerici.

Per eseguire l'override di queste determinazioni predefinite:

  • Se i dati devono essere considerati come numerici, converti tutti i valori interi nella colonna in virgola mobile, ad esempio {101.0, 102.0, 103.0}
  • Se i dati devono essere trattati come categorici, anteponi un prefisso non numerico a tutti i valori interi nella colonna, ad esempio {code_101, codice_102, code_103}

Inviare un job di addestramento TabNet

Questa sezione spiega come inviare un job di addestramento utilizzando l'algoritmo TabNet integrato.

Puoi trovare brevi spiegazioni di ogni iperparametro nella console Google Cloud e una spiegazione più completa nel riferimento per l'algoritmo TabNet integrato.

Console

  1. Vai alla pagina AI Platform Training Jobs di AI Platform nella console Google Cloud:

    Pagina AI Platform Trainings di AI Platform

  2. Fai clic sul pulsante Nuovo job di addestramento. Fai clic su Addestramento con algoritmo integrato tra le opzioni visualizzate di seguito.

  3. Nella pagina Crea un nuovo job di addestramento, seleziona TabNet e fai clic su Avanti.

  4. Per scoprire di più su tutti i parametri disponibili, segui i link nella console Google Cloud e consulta il riferimento TabNet integrato.

gcloud

  1. Imposta le variabili di ambiente per il job, inserendo [VALUES-IN-BRACKETS] con i tuoi valori:

       # 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. Invia il job di addestramento con 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. Monitora lo stato del job di addestramento visualizzando i log con gcloud. Fai riferimento a gcloud ai-platform jobs describe e gcloud ai-platform jobs stream-logs.

       gcloud ai-platform jobs describe ${JOB_ID}
       gcloud ai-platform jobs stream-logs ${JOB_ID}
    

Come funziona la pre-elaborazione

La pre-elaborazione automatica funziona per dati categorici e numerici. La routine di pre-elaborazione innanzitutto analizza e poi trasforma i dati.

Analisi

Innanzitutto, AI Platform Training rileva automaticamente il tipo di dati di ogni colonna, identifica in che modo deve essere trattato ogni colonna e calcola alcune statistiche dei dati al suo interno. Queste informazioni vengono acquisite nel file metadata.json.

AI Platform Training analizza il tipo della colonna di destinazione per identificare se il set di dati specificato è destinato alla regressione o alla classificazione. Se questa analisi è in conflitto con la tua selezione per model_type, viene restituito un errore. Descrivi in modo esplicito la modalità di trattamento della colonna di destinazione formattando in modo chiaro i dati in casi ambigui.

  • Tipo: la colonna può essere numerica o categorica.

  • Trattamento: AI Platform Training identifica come trattare ogni colonna nel seguente modo:

    • Se la colonna include un singolo valore in tutte le righe, viene trattata come una costante.
    • Se la colonna è categorica e include valori univoci in tutte le righe, viene trattata come row_identifier.
    • Se la colonna è numerica con valori decimali o se è numerica con valori interi e contiene molti valori unici, la colonna viene trattata come numerica.
    • Se la colonna è numerica con valori interi e contiene pochi valori unici sufficienti, viene trattata come colonna categorica in cui i valori interi sono identity o vocabulary.
      • Si considera che una colonna abbia alcuni valori univoci se il numero di valori univoci nella colonna è inferiore al 20% del numero di righe nel set di dati di input.
    • Se la colonna è categorica con un'alta cardinalità, la colonna viene trattata con hashing, dove il numero di bucket hash è uguale alla radice quadrata del numero di valori unici nella colonna.
      • Una colonna categorica ha una cardinalità elevata se il numero di valori unici è maggiore della radice quadrata del numero di righe nel set di dati.
    • Se la colonna è categorica e il numero di valori unici è inferiore o uguale alla radice quadrata del numero di righe nel set di dati, la colonna viene trattata come una normale colonna categorica con vocabolario.
  • Statistiche: AI Platform Training calcola le seguenti statistiche, in base al tipo e alla modalità di trattamento delle colonne identificate, da utilizzare per trasformare la colonna in una fase successiva.

    • Se la colonna è numerica, vengono calcolati i valori medi e di varianza.
    • Se la colonna è di tipo categorico e il trattamento è rappresentato da identità o vocabolario, i valori distinti vengono estratti dalla colonna.
    • Se la colonna è di tipo categorico e il trattamento prevede l'hashing, il numero di bucket di hash viene calcolato in base alla cardinalità della colonna.

Trasformazione

Dopo che l'analisi iniziale del set di dati è stata completata, AI Platform Training trasforma i tuoi dati in base ai tipi, ai trattamenti e alle statistiche applicati al set di dati. AI Platform Training esegue trasformazioni nel seguente ordine:

  1. Suddividi il set di dati di addestramento in set di dati di convalida e test se specifichi le percentuali.
  2. Rimuove le righe che contengono più del 10% delle caratteristiche mancanti.
  3. Riempie i valori numerici mancanti utilizzando la media della colonna.

Esempi di trasformazioni

Le righe con il 10% dei valori mancanti vengono rimosse. Negli esempi seguenti, supponiamo che la riga abbia 10 valori. Ogni riga di esempio è troncata per semplicità.

Problema di riga Valori originali Valori trasformati Spiegazione
Riga di esempio senza valori mancanti [3, 0,45, ...,
'frutta', 0, 1]
[3, 0,45, ...,
1, 0, 0, 0, 1]
La stringa "frutta", viene trasformata nei valori "1, 0, 0" nella codifica one-hot. Questo avviene più tardi nel grafico TensorFlow.
Troppi valori mancanti [3, 0,45, ...,
'frutta', __, __]
Riga rimossa Più del 10% dei valori nella riga risulta mancante.
Valore numerico mancante [3, 0,45, ...,
'frutta), 0, __]
[3, 0,45, ...,
1, 0, 0, 0, 0,54]
  • Il valore medio della colonna sostituisce il valore numerico mancante. In questo esempio, la media è 0,54.
  • La stringa "frutta", viene trasformata nei valori "1, 0, 0" nella codifica one-hot. Questo avviene più tardi nel grafico TensorFlow.
Valore categorico mancante [3, 0,45, ...,
__, 0, 1]
[3, 0,45, ...,
0, 0, 0, 0, 1]
  • Il valore categorico mancante viene trasformato nei valori "0, 0, 0" nella codifica one-hot. Questo avviene più tardi nel grafico TensorFlow.

Colonne funzionalità

Durante la trasformazione, le colonne non vengono elaborate. I metadati prodotti durante l'analisi vengono invece trasferiti ad AI Platform Training per creare le colonne delle funzionalità di conseguenza:

Tipo di colonna Trattamento colonne Colonna della funzionalità risultante
Numerico (Tutti i tipi di trattamento a colonne) tf.feature_column.numeric_column

I valori medi e di varianza vengono utilizzati per standardizzare i valori:
new_value = (input_value - mean) / sqrt(variance)

Categorico Identità tf.feature_column.categorical_column_with_identity
Categorico Vocabolario tf.feature_column.categorical_column_with_vocabulary_list
Categorico Hashing tf.feature_column.categorical_column_with_hash_bucket
Categorico Identificatore costante o di riga Ignorato. Nessuna colonna funzione creata.

Al termine della pre-elaborazione automatica, AI Platform Training carica il set di dati elaborato nel bucket Cloud Storage nella directory specificata nella richiesta di job.

Ulteriori risorse di apprendimento