Addestramento con l'impiego dell'algoritmo XGBoost integrato

L'addestramento con gli algoritmi integrati in AI Platform Training ti consente di inviare il tuo set di dati e addestrare un modello senza scrivere alcun codice di addestramento. Questa pagina spiega come funziona l'algoritmo XGBoost integrato e come utilizzarlo.

Panoramica

L'algoritmo XGBoost integrato è un wrapper per l'algoritmo XGBoost compatibile per l'esecuzione in AI Platform Training.

Questo documento descrive una versione dell'algoritmo che viene eseguita su una singola replica della macchina virtuale. Esiste anche una versione distribuita di questo algoritmo che utilizza più macchine virtuali per l'addestramento e richiede un utilizzo leggermente diverso. Questo algoritmo prevede due fasi:

  1. Preelaborazione: AI Platform Training elabora la combinazione di dati categorici e numerici in un set di dati interamente numerico per prepararlo all'addestramento con XGBoost.
  2. Addestramento: AI Platform Training esegue l'addestramento utilizzando l'algoritmo XGBoost in base al tuo set di dati e ai parametri del modello che hai fornito. L'implementazione attuale si basa sulla versione 0.81 di XGBoost.

Limitazioni

Le seguenti funzionalità non sono supportate per l'addestramento con la versione con una sola replica dell'algoritmo XGBoost integrato:

Tipi di macchine supportati

I seguenti livelli di scalabilità e tipi di macchine di AI Platform Training sono supportati:

Formattare i dati di input

XGBoost funziona con dati tabulari numerici. Ogni riga di un set di dati rappresenta un'istanza e ogni colonna un valore della funzionalità. La colonna target rappresenta il valore che vuoi prevedere.

Preparare il file CSV

I dati di input devono essere un file CSV con codifica UTF-8. Se i dati di addestramento sono costituiti solo da valori categorici e numerici, puoi utilizzare il nostro modulo di preelaborazione per convertire i dati categorici in dati numerici. In caso contrario, puoi eseguire l'addestramento senza attivare la pre-elaborazione automatica.

Devi preparare il file CSV di input in modo che soddisfi 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 il resto delle istanze di dati come parte dei dati di addestramento.
  • Assicurati che la colonna di destinazione sia la prima. La colonna target contiene il valore che stai cercando di prevedere. Per un algoritmo di classificazione, tutti i valori nella colonna target sono una classe o una categoria. Per un algoritmo di regressione, tutti i valori nella colonna di destinazione sono numerici.

Gestire i valori interi

Il significato dei valori interi può essere ambiguo, il che rende problematiche le colonne di valori interi nella preelaborazione 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 sono presenti solo alcuni valori interi univoci, la colonna viene trattata come categorica.
  • In caso contrario, i valori nella colonna vengono convertiti in valori float e trattati come numerici.

Per eseguire l'override di queste determinazioni predefinite:

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

Normalizzare i valori target per la regressione

Per i job di addestramento della regressione, assicurati di normalizzare i valori target in modo che ogni valore sia compreso tra 0 e 1.

Controllare le autorizzazioni dei bucket Cloud Storage

Per archiviare i dati, utilizza un bucket Cloud Storage nello stesso progetto Google Cloud che utilizzi per eseguire i job di AI Platform Training. In caso contrario, concedi l'accesso ad AI Platform Training al bucket Cloud Storage in cui sono archiviati i tuoi dati.

Invia un job di addestramento XGBoost

Questa sezione spiega come inviare un job di addestramento XGBoost integrato.

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

Console

  1. Vai alla pagina Job di addestramento della piattaforma AI nella console Google Cloud:

    Pagina Lavori di AI Platform Training

  2. Fai clic sul pulsante Nuovo job di addestramento. Dalle opzioni visualizzate di seguito, fai clic su Addestramento con algoritmi integrati.

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

  4. Per scoprire di più su tutti i parametri disponibili, segui i link nella console Google Cloud e consulta la documentazione di riferimento di XGBoost integrata per ulteriori dettagli.

gcloud

  1. Imposta le variabili di ambiente per il tuo job, compilando [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/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}"
    
  2. Invia il job di addestramento utilizzando 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
    
  3. Monitora lo stato del job di addestramento visualizzando i log con gcloud. Consulta 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 l'elaborazione preliminare

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

Analisi

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

AI Platform Training analizza il tipo di colonna di destinazione per identificare se il set di dati specificato è per la regressione o la classificazione. Se questa analisi è in conflitto con la tua selezione per objective, viene generato un errore. Indica esplicitamente come deve essere trattata la colonna di destinazione formattando i dati in modo chiaro nei casi ambigui.

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

  • Trattamento: AI Platform Training identifica come trattare ogni colonna come segue:

    • Se la colonna include un singolo valore in tutte le righe, viene trattata come costante.
    • Se la colonna è di tipo categorico e include valori univoci in tutte le righe, viene trattata come row_identifier.
    • Se la colonna è numerica con valori float o se è numerica con valori interi e contiene molti valori univoci, viene trattata come numerica.
    • Se la colonna è numerica con valori interi e contiene un numero sufficiente di valori univoci, viene trattata come una colonna categorica in cui i valori interi sono l'identità o il vocabolario.
      • Una colonna è considerata con pochi valori univoci se il numero di valori univoci al suo interno è inferiore al 20% del numero di righe nel set di dati di input.
    • Se la colonna è categorica con una cardinalità elevata, viene trattata con l'hashing, in cui il numero di bucket di hash è uguale alla radice quadrata del numero di valori univoci nella colonna.
      • Una colonna di tipo categoria è considerata ad alta cardinalità se il numero di valori univoci è maggiore della radice quadrata del numero di righe nel set di dati.
    • Se la colonna è categorica e il numero di valori univoci è inferiore o uguale alla radice quadrata del numero di righe nel set di dati, la colonna viene trattata come una normale colonna categorica con un vocabolario.
  • Statistiche: AI Platform Training calcola le seguenti statistiche, basate sul tipo di colonna e sul trattamento identificati, da utilizzare per trasformare la colonna in una fase successiva.

    • Se la colonna è numerica, vengono calcolati i valori di media e varianza.
    • Se la colonna è categorica e il trattamento è identità o vocabolario, i valori distinti vengono estratti dalla colonna.
    • Se la colonna è categorica e il trattamento è sottoposta ad hashing, il numero di bucket di hash viene calcolato in base alla cardinalità della colonna.

Trasformazione

Al termine dell'analisi iniziale del set di dati, AI Platform Training trasforma i dati in base ai tipi, ai trattamenti e alle statistiche applicati al set di dati. AI Platform Training esegue le trasformazioni nel seguente ordine:

  1. Suddivide il set di dati di addestramento in set di dati di convalida e test se specifichi la quantità di dati di addestramento da utilizzare in ciascuno (in percentuale).
  2. Rimuove le righe in cui manca più del 10% delle funzionalità.
  3. Compila i valori mancanti. La media viene utilizzata per le colonne numeriche e gli zeri per le colonne categoriche. Vedi un esempio di seguito.

  4. Per ogni colonna categorica con trattamento vocabolario e identità, AI Platform Training esegue la codifica one-hot sui valori della colonna. Vedi un esempio di seguito.

  5. Per ogni colonna categorica con trattamento di hashing, AI Platform Training utilizza FeatureHasher di scikit-learn per eseguire l'hashing delle funzionalità. Il numero di elementi conteggiati in precedenza determina il numero di bucket di hash.

  6. Ogni colonna designata con un trattamento row_key o constant viene rimuovere.

Trasformazioni di esempio

Le righe con il 10% di valori mancanti vengono rimosse. Negli esempi seguenti, si suppone che la riga contenga 10 valori. Per semplicità, ogni riga di esempio è troncata.

Problema con la riga Valori originali Valori trasformati Spiegazione
Riga di esempio senza valori mancanti [3, 0,45, ...,
'frutti', 0, 1]
[3, 0,45, ...,
1, 0, 0, 0, 1]
La stringa "frutti" viene trasformata nei valori "1, 0, 0" nella codifica one-hot.
Troppi valori mancanti [3, 0,45, ...,
'frutti', __, __]
Riga rimossa Manca più del 10% dei valori nella riga.
Valore numerico mancante [3, 0,45, ...,
'frutti', 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 "frutti" viene trasformata nei valori "1, 0, 0" nella codifica one-hot.
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.

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

Passaggi successivi