Quando utilizzi un set di dati per addestrare un modello AutoML, Vertex AI divide i dati in tre suddivisioni: una suddivisione di addestramento, una suddivisione di convalida e una suddivisione di test. L'obiettivo principale della creazione delle suddivisioni dei dati è garantire che il set di test rappresenti accuratamente i dati di produzione. Ciò garantisce che le metriche di valutazione forniscano un segnale accurato sulle prestazioni del modello con dati reali.
Questa pagina descrive come Vertex AI utilizza i set di dati di training, convalida e test per addestrare un modello AutoML. Descrive anche i modi in cui puoi controllare come vengono suddivisi i tuoi dati tra questi tre set. Gli algoritmi di suddivisione dei dati per la classificazione e la regressione sono diversi da quelli per la previsione.
Divisioni dei dati per la classificazione e la regressione
Come vengono utilizzati gli split dei dati
Le suddivisioni dei dati vengono utilizzate nel processo di addestramento nel seguente modo:
Prove del modello
Il set di addestramento viene utilizzato per addestrare modelli con diverse combinazioni di opzioni di preelaborazione, architettura e iperparametri. Vertex AI valuta questi modelli sul set di convalida per la qualità, il che guida l'esplorazione di ulteriori combinazioni di opzioni. Il set di convalida viene utilizzato anche per selezionare il miglior checkpoint dalla valutazione periodica durante l'addestramento. Vertex AI utilizza i parametri e le architetture migliori determinati nella fase di ottimizzazione parallela per addestrare due modelli di ensemble come descritto di seguito.
Valutazione del modello
Vertex AI addestra un modello di valutazione utilizzando i set di addestramento e di convalida come dati di addestramento. Vertex AI genera le metriche di valutazione del modello finali su questo modello utilizzando il set di test. Questa è la prima volta nella procedura in cui viene utilizzato il set di test. Questo approccio garantisce che le metriche di valutazione finali riflettano in modo imparziale il rendimento del modello addestrato finale in produzione.
Modello di pubblicazione
Vertex AI addestra un modello con i set di addestramento, convalida e test per massimizzare la quantità di dati di addestramento. Utilizza questo modello per richiedere previsioni online o previsioni batch.
Suddivisione dati predefinita
Per impostazione predefinita, Vertex AI utilizza un algoritmo di suddivisione casuale per separare i dati nelle tre suddivisioni. Vertex AI seleziona in modo casuale l'80% delle righe di dati per il set di addestramento, il 10% per il set di convalida e il 10% per il set di test. Consigliamo la suddivisione predefinita per i set di dati che:
- Non cambia nel tempo.
- Relativamente equilibrato.
- Distribuito come i dati utilizzati per le previsioni in produzione.
Per utilizzare la suddivisione predefinita dei dati, accetta il valore predefinito nella console Google Cloud oppure lascia vuoto il campo split per l'API.
Opzioni per controllare le suddivisioni dei dati
Puoi controllare quali righe vengono selezionate per quale divisione utilizzando uno dei seguenti approcci:
- Suddivisione casuale: imposta le percentuali di suddivisione e assegna casualmente le righe di dati.
- Suddivisione manuale: seleziona righe specifiche da utilizzare per l'addestramento, la convalida e il test nella colonna di suddivisione dei dati.
- Divisione cronologica: dividi i dati in base al tempo nella colonna Ora.
Scegli solo una di queste opzioni quando addestri il modello. Alcune di queste opzioni richiedono modifiche ai dati di addestramento (ad esempio, la colonna di suddivisione dei dati o la colonna del tempo). L'inclusione dei dati per le opzioni di suddivisione dei dati non richiede l'utilizzo di queste opzioni. Puoi comunque scegliere un'altra opzione quando addestri il modello.
La suddivisione predefinita non è la scelta migliore se:
Non stai addestrando un modello di previsione, ma i tuoi dati sono sensibili al tempo.
In questo caso, utilizza una divisione cronologica o una divisione manuale che comporti l'utilizzo dei dati più recenti come set di test.
I dati di test includono dati di popolazioni che non saranno rappresentate nella produzione.
Ad esempio, supponiamo di addestrare un modello con i dati di acquisto di diversi negozi. Tuttavia, sai che il modello verrà utilizzato principalmente per fare previsioni per i negozi che non sono inclusi nei dati di addestramento. Per assicurarti che il modello possa generalizzare i negozi non visualizzati, separa i set di dati per negozi. In altre parole, il set di test deve includere solo negozi diversi dal set di convalida e il set di convalida deve includere solo negozi diversi dal set di addestramento.
Le classi non sono bilanciate.
Se nei dati di addestramento hai molti più esempi di una classe rispetto a un'altra, potresti dover includere manualmente più esempi della classe minoritaria nei dati di test. Vertex AI non esegue il campionamento stratificato, quindi il set di test potrebbe includere un numero troppo basso o addirittura zero di esempi della classe minoritaria.
Divisione casuale
La suddivisione casuale è nota anche come "suddivisione matematica" o "suddivisione frazionaria".
Per impostazione predefinita, le percentuali di dati di addestramento utilizzati per i set di addestramento, convalida e test sono rispettivamente 80, 10 e 10. Se utilizzi la console Google Cloud , puoi modificare le percentuali con qualsiasi valore che dia come risultato 100. Se utilizzi l'API Vertex AI, utilizza frazioni che sommate danno 1.0.
Per modificare le percentuali (frazioni), utilizza l'oggetto FractionSplit per definire le frazioni.
Vertex AI seleziona le righe per una suddivisione dei dati in modo casuale, ma deterministico. Se non sei soddisfatto della composizione delle suddivisioni dei dati generate, utilizza una suddivisione manuale o modifica i dati di addestramento. L'addestramento di un nuovo modello con gli stessi dati di addestramento comporta la stessa suddivisione dei dati.
Divisione manuale
La suddivisione manuale è nota anche come "suddivisione predefinita".
Una colonna di suddivisione dati consente di selezionare righe specifiche da utilizzare per addestramento, convalida e test. Quando crei i dati di addestramento, aggiungi una colonna che può contenere uno dei seguenti valori (sensibili alle maiuscole):
TRAIN
VALIDATE
TEST
UNASSIGNED
I valori in questa colonna devono essere una delle due combinazioni seguenti:
- Tutti i contenuti di
TRAIN
,VALIDATE
eTEST
- Solo
TEST
eUNASSIGNED
Ogni riga deve avere un valore per questa colonna, che non può essere la stringa vuota.
Ad esempio, con tutti i set specificati:
"TRAIN","John","Doe","555-55-5555" "TEST","Jane","Doe","444-44-4444" "TRAIN","Roger","Rogers","123-45-6789" "VALIDATE","Sarah","Smith","333-33-3333"
Se viene specificato solo il set di test:
"UNASSIGNED","John","Doe","555-55-5555" "TEST","Jane","Doe","444-44-4444" "UNASSIGNED","Roger","Rogers","123-45-6789" "UNASSIGNED","Sarah","Smith","333-33-3333"
La colonna di suddivisione dei dati può avere qualsiasi nome di colonna valido; il suo tipo di trasformazione può essere Categorico, Testo o Automatico.
Se il valore della colonna di suddivisione dati è UNASSIGNED
, Vertex AI
assegna automaticamente la riga al set di addestramento o convalida.
Designa una colonna come colonna di suddivisione dei dati durante l'addestramento del modello.
Divisione cronologica
La suddivisione cronologica è nota anche come "suddivisione in base al timestamp".
Se i tuoi dati dipendono dal tempo, puoi designare una colonna come colonna Ora. Vertex AI utilizza la colonna Time per suddividere i dati. Le prime righe vengono utilizzate per l'addestramento, quelle successive per la convalida e le ultime per il test.
Vertex AI considera ogni riga come un esempio di addestramento indipendente e identicamente distribuito; l'impostazione della colonna Time non cambia questo comportamento. La colonna Ora viene utilizzata solo per dividere il set di dati.
Se specifichi una colonna Tempo, includi un valore per la colonna Tempo per ogni riga del set di dati. Assicurati che la colonna Time contenga un numero sufficiente di valori distinti, in modo che i set di convalida e di test non siano vuoti. In genere, almeno 20 valori distinti dovrebbero essere sufficienti.
I dati nella colonna Ora devono essere conformi a uno dei formati supportati dalla trasformazione del timestamp. Tuttavia, la colonna Time può avere qualsiasi trasformazione supportata, perché la trasformazione influisce solo sul modo in cui questa colonna viene utilizzata nell'addestramento; le trasformazioni non influiscono sulla divisione dei dati.
Puoi anche specificare le percentuali dei dati di addestramento assegnate a ogni set.
Designa una colonna come colonna Time durante l'addestramento del modello.
Divisioni dei dati per la previsione
Per impostazione predefinita, Vertex AI utilizza un algoritmo di suddivisione cronologica per separare i dati di previsione nelle tre suddivisioni di dati. Ti consigliamo di utilizzare la suddivisione predefinita. Tuttavia, se vuoi controllare quali righe di dati di addestramento vengono utilizzate per quale suddivisione, utilizza una suddivisione manuale.
Come vengono utilizzati gli split dei dati
Le suddivisioni dei dati vengono utilizzate nel processo di addestramento nel seguente modo:
Prove del modello
Il set di addestramento viene utilizzato per addestrare modelli con diverse combinazioni di opzioni di preelaborazione, architettura e iperparametri. Vertex AI valuta questi modelli sul set di convalida per la qualità, il che guida l'esplorazione di ulteriori combinazioni di opzioni. Il set di convalida viene utilizzato anche per selezionare il miglior checkpoint dalla valutazione periodica durante l'addestramento. Vertex AI utilizza i parametri e le architetture migliori determinati nella fase di ottimizzazione parallela per addestrare due modelli di ensemble come descritto di seguito.
Valutazione del modello
Vertex AI addestra un modello di valutazione utilizzando i set di addestramento e convalida come dati di addestramento. Vertex AI genera le metriche di valutazione finale del modello su questo modello, utilizzando il set di test. Questa è la prima volta nella procedura in cui viene utilizzato il set di test. Questo approccio garantisce che le metriche di valutazione finali riflettano in modo imparziale il rendimento del modello addestrato finale in produzione.
Modello di pubblicazione
Vertex AI addestra un modello con il set di addestramento e convalida. Il modello viene convalidato (per selezionare il miglior checkpoint) utilizzando il set di test. Il set di test non viene mai utilizzato per l'addestramento nel senso che la perdita viene calcolata a partire da questo. Puoi utilizzare questo modello per ottenere inferenze.
Divisione predefinita
La suddivisione dei dati predefinita (cronologica) funziona nel seguente modo:
- Vertex AI ordina i dati di addestramento per data.
- Utilizzando le percentuali del set predeterminate (80/10/10), Vertex AI separa il periodo di tempo coperto dai dati di addestramento in tre blocchi, uno per ogni set di addestramento.
- Vertex AI aggiunge righe vuote all'inizio di ogni serie temporale per consentire al modello di apprendere da righe con una cronologia insufficiente (finestra contestuale). Il numero di righe aggiunte corrisponde alla dimensione della finestra di contesto impostata al momento dell'addestramento.
Utilizzando le dimensioni dell'orizzonte di previsione impostate al momento dell'addestramento, Vertex AI utilizza ogni riga i cui dati futuri (orizzonte di previsione) rientrano completamente in uno dei set di dati per quel set. Vertex AI scarta le righe il cui orizzonte di previsione si estende su due set per evitare la perdita di dati.
Divisione manuale
Una colonna di suddivisione dati consente di selezionare righe specifiche da utilizzare per addestramento, convalida e test. Quando crei i dati di addestramento, aggiungi una colonna che può contenere uno dei seguenti valori (sensibili alle maiuscole):
TRAIN
VALIDATE
TEST
Ogni riga deve avere un valore per questa colonna, che non può essere la stringa vuota.
Ad esempio:
"TRAIN","sku_id_1","2020-09-21","10" "TEST","sku_id_1","2020-09-22","23" "TRAIN","sku_id_2","2020-09-22","3" "VALIDATE","sku_id_2","2020-09-23","45"
La colonna di suddivisione dei dati può avere qualsiasi nome di colonna valido; il suo tipo di trasformazione può essere Categorico, Testo o Automatico.
Designa una colonna come colonna di suddivisione dei dati durante l'addestramento del modello.
Assicurati di fare attenzione a evitare la perdita di dati tra le serie temporali.