L'addestramento con 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 XGBoost compatibile con AI Platform Training.
Questo documento descrive una versione dell'algoritmo che viene eseguita su un singolo computer 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:
- Pre-elaborazione: AI Platform Training elabora il tuo mix di categorie e dati numerici in un set di dati numerico per prepararlo con XGBoost.
- 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 replica singola dell'algoritmo XGBoost integrato:
- Addestramento con GPU. Per l'addestramento con le GPU, utilizza l'algoritmo XGBoost distribuito integrato.
- Addestramento distribuito. Per eseguire un job di addestramento distribuito, utilizza l'algoritmo XGBoost distribuito integrato.
Tipi di macchine supportati
I seguenti livelli di scalabilità e tipi di macchine di AI Platform Training sono supportati:
BASIC
livello di scalabilitàCUSTOM
con uno dei tipi di macchine Compute Engine supportati da AI Platform Training.- Livello di scalabilità
CUSTOM
con uno dei seguenti tipi di macchine legacy:standard
large_model
complex_model_s
complex_model_m
complex_model_l
Formattare i dati di input
XGBoost funziona con dati tabulari numerici. Ogni riga di un set di dati rappresenta un'istanza e ogni colonna di un set di dati rappresenta un valore di caratteristica. La colonna target rappresenta il valore che vuoi prevedere.
Preparare il file CSV
I dati inseriti devono essere in un file CSV con codifica UTF-8. Se i tuoi dati di addestramento è costituito solo da valori categorici e numerici, puoi utilizzare di pre-elaborazione per convertire i dati categorici in dati numerici. Altrimenti, puoi eseguire l'addestramento senza abilitare la pre-elaborazione automatica.
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 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 di regressione lineare, tutti i valori nella colonna target sono valori 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 pochi valori interi univoci, la colonna viene trattata come categorico.
- 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 da colonna a rappresentazione 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 della colonna, ad esempio {code_101, code_102, code_103}
Normalizzare i valori target per la regressione
Per i job di addestramento di regressione, assicurati di normalizzare i valori target in modo ogni valore è compreso tra 0 e 1.
Controlla le autorizzazioni del bucket Cloud Storage
Per archiviare i dati, utilizza un bucket Cloud Storage nello stesso Google Cloud progetto che stai utilizzando per eseguire job di AI Platform Training. Altrimenti, concedere ad AI Platform Training l'accesso 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 ogni iperparametro all'interno console Google Cloud e una spiegazione più completa nel riferimento per l'algoritmo XGBoost integrato.
Console
Vai alla pagina dei job di addestramento su AI Platform nella console Google Cloud:
Fai clic sul pulsante Nuovo job di addestramento. Dalle opzioni visualizzate di seguito, fai clic su Addestramento con algoritmi integrati.
Nella pagina Crea un nuovo job di addestramento, seleziona XGBoost integrato e fai clic su Avanti.
Per scoprire di più su tutti i parametri disponibili, segui i link in alla console Google Cloud e consulta le Riferimento XGBoost integrato per ulteriori dettagli.
gcloud
Imposta le variabili di ambiente per il job, completando
[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}"
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
Monitora lo stato del job di addestramento visualizzando i log con
gcloud
. Consultagcloud ai-platform jobs describe
egcloud 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
In primo luogo, AI Platform Training rileva automaticamente il tipo di dati
colonna, identifica il modo in cui deve essere trattata ogni colonna e calcola alcune
statistiche dei dati nella colonna. Queste informazioni vengono acquisite nel
metadata.json
file.
La formazione della piattaforma AI 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
, determina
restituisce un errore. Indica in modo esplicito come deve essere trattata la colonna di destinazione
formattare i dati in modo chiaro in 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, è considerato una costante.
- Se la colonna è categorica e include valori univoci in tutti alle righe, viene considerato come row_identifier.
- Se la colonna è numerica con valori in virgola mobile o se è numerica con valori interi e contiene molti valori univoci, la colonna considerati come numerici.
- 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 viene considerata con pochi valori univoci se il numero di valori univoci nella colonna sono inferiori al 20% del numero di righe in il 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 categorica è 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 gruppo sperimentale è in hashing, la di hash di un bucket è calcolato in base alla cardinalità nella colonna.
Trasformazione
Al termine dell'analisi iniziale del set di dati, la formazione della piattaforma AI 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:
- 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).
- Rimuove le righe in cui manca più del 10% delle funzionalità.
Compila i valori mancanti. La media viene utilizzata per le colonne numeriche e gli zeri per le colonne categoriche. Vedi un esempio di seguito.
Per ogni colonna categorica con trattamento vocabolario e identità, AI Platform Training esegue la codifica one-hot sui valori della colonna. Guarda un esempio di seguito.
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 la di bucket di hash.
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 riportati di seguito, si suppone che la riga contenga 10 valori. Per semplicità, ogni riga di esempio viene 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; ..., "frutta", __, __] |
Riga rimossa | Manca più del 10% dei valori nella riga. |
Valore numerico mancante | [3; 0,45; ..., "frutta", 0, __] |
[3, 0,45, ..., 1, 0, 0, 0, 0,54] |
|
Valore categorico mancante | [3; 0,45; ..., __, 0, 1] |
[3, 0,45, ..., 0, 0, 0, 0, 1] |
|
Al termine della pre-elaborazione automatica, AI Platform Training carica i dati il set di dati elaborato nuovamente nel bucket Cloud Storage nella directory specificato nella richiesta di job.
Passaggi successivi
- Scopri di più su XGBoost.
- Fai riferimento al riferimento XGBoost integrato per conoscere tutti i diversi parametri.