Suddivisioni dei dati per i dati tabulari

Quando utilizzi un set di dati per addestrare un modello AutoML, i dati vengono suddivisi in tre parti: una suddivisione per l'addestramento, una per la convalida e una per il test. L'obiettivo principale durante la creazione delle suddivisioni dei dati è assicurarsi che il set di test representi con precisione i dati di produzione. In questo modo, le metriche di valutazione forniscono un indicatore accurato delle prestazioni del modello sui dati reali.

Questa pagina descrive in che modo Vertex AI utilizza i set di addestramento, convalida e test dei dati per addestrare un modello AutoML e i modi in cui puoi controllare la suddivisione dei dati in questi tre set. Gli algoritmi di suddivisione dei dati per la classificazione e la regressione sono diversi da quelli per le previsioni.

Suddivisioni dei dati per classificazione e regressione

Come vengono utilizzate le suddivisioni dei dati

Le suddivisioni dei dati vengono utilizzate nel processo di addestramento come segue:

  1. Prove del modello

    Il set di addestramento viene utilizzato per addestrare i modelli con diverse combinazioni di opzioni di preelaborazione, architettura e iperparametri. Questi modelli vengono valutati per la qualità nel set di convalida, che guida l'esplorazione di combinazioni di opzioni aggiuntive. Il set di convalida viene utilizzato anche per selezionare il miglior checkpoint dalla valutazione periodica durante l'addestramento. I parametri e le architetture migliori determinati nella fase di ottimizzazione parallela vengono utilizzati per addestrare due modelli di ensemble come descritto di seguito.

  2. 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 del modello finali su questo modello utilizzando il set di test. È la prima volta che viene utilizzato il set di test durante la procedura. Questo approccio garantisce che le metriche di valutazione finali rappresentino un riflesso imparziale del rendimento del modello addestrato finale in produzione.

  3. Modello di pubblicazione

    Un modello viene addestrato con i set di addestramento, convalida e test per massimizzare la quantità di dati di addestramento. Questo è il modello che utilizzi per richiedere previsioni online o previsioni batch.

Suddivisione dei 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:

  • Invariato nel tempo.
  • Relativamente equilibrato.
  • Distribuiti come i dati utilizzati per le previsioni in produzione.

Per utilizzare la suddivisione dei dati predefinita, accetta il valore predefinito nella console Google Cloud o lascia vuoto il campo split per l'API.

Opzioni per controllare le suddivisioni dei dati

Puoi controllare quali righe vengono selezionate per ogni suddivisione utilizzando uno dei seguenti approcci:

Scegli una sola di queste opzioni; la scelta viene effettuata durante l'addestramento del modello. Alcune di queste opzioni richiedono modifiche ai dati di addestramento (ad esempio la colonna di suddivisione dei dati o la colonna di tempo). L'inclusione dei dati per le opzioni di suddivisione dei dati non comporta l'obbligo di utilizzarle. 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, devi utilizzare una suddivisione cronologica o una suddivisione manuale che consenta di utilizzare i dati più recenti come set di test.

  • I dati di test includono dati di popolazioni che non saranno rappresentate in produzione.

    Ad esempio, supponiamo che tu stia addestrando un modello con i dati di acquisto di diversi negozi. Tuttavia, sai che il modello verrà utilizzato principalmente per fare predizioni per i negozi che non sono presenti nei dati di addestramento. Per assicurarti che il modello possa essere generalizzato a negozi non visti, devi separare i set di dati per negozi. In altre parole, il set di test deve includere solo negozi diversi dall'insieme di convalida e l'insieme di convalida deve includere solo negozi diversi dall'insieme di addestramento.

  • I tuoi corsi non sono bilanciati.

    Se nei dati di addestramento hai molte più istanze di una classe rispetto a un'altra, potresti dover includere manualmente più esempi della classe di minoranza nei dati di test. Vertex AI non esegue il campionamento stratificato, pertanto il set di test potrebbe includere pochi o addirittura zero esempi della classe di minoranza.

Suddivisione casuale

La suddivisione casuale è nota anche come "suddivisione matematica" o "suddivisione in frazioni".

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 Google Cloud Console, puoi modificare le percentuali in qualsiasi valore che sommi 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.

Le righe vengono selezionate per una suddivisione dei dati in modo casuale, ma deterministico. Se non sei soddisfatto della composizione delle suddivisioni dei dati generate, devi utilizzare una suddivisione manualmente o modificare i dati di addestramento. L'addestramento di un nuovo modello con gli stessi dati di addestramento genera la stessa suddivisione dei dati.

Suddivisione manuale

La suddivisione manuale è nota anche come "suddivisione predefinita".

Una colonna di suddivisione dati ti 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 (sensibile alle maiuscole):

  • TRAIN
  • VALIDATE
  • TEST
  • UNASSIGNED

I valori in questa colonna devono essere una delle due seguenti combinazioni:

  • Tutti in TRAIN, VALIDATE e TEST
  • Solo TEST e UNASSIGNED

Ogni riga deve avere un valore per questa colonna; non può essere la stringa vuota.

Ad esempio, con tutti gli insiemi 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 tipo di trasformazione può essere Categoriale, Testo o Automatico.

Se il valore della colonna di suddivisione dei 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.

Suddivisione cronologica

La suddivisione cronologica è nota anche come "suddivisione in base al timestamp".

Se i dati sono basati sul tempo, puoi designare una colonna come colonna Ora. Vertex AI utilizza la colonna Tempo per suddividere i dati, con la riga più antica utilizzata per l'addestramento, le righe successive per la convalida e le righe più recenti per i test.

Vertex AI tratta ogni riga come un esempio di addestramento indipendente e distribuito in modo identico. L'impostazione della colonna Tempo non cambia questo aspetto. La colonna Ora viene utilizzata solo per suddividere il set di dati.

Se specifichi una colonna Tempo, devi includere un valore per la colonna Tempo per ogni riga del set di dati. Assicurati che la colonna Ora contenga valori distinti sufficienti, in modo che i set di convalida e di test non siano vuoti. In genere, è sufficiente avere almeno 20 valori distinti.

I dati nella colonna Ora devono essere conformi a uno dei formati supportati dalla trasformazione timestamp. Tuttavia, la colonna Ora può avere qualsiasi trasformazione supportata, perché la trasformazione influisce solo sul modo in cui la colonna viene utilizzata nell'addestramento. Le trasformazioni non influiscono sulla suddivisione dei dati.

Puoi anche specificare le percentuali dei dati di addestramento assegnate a ciascun set.

Designa una colonna come colonna Tempo durante l'addestramento del modello.

Suddivisioni 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 le righe di dati di addestramento da utilizzare per ogni suddivisione, utilizza una suddivisione manuale.

Come vengono utilizzate le suddivisioni dei dati

Le suddivisioni dei dati vengono utilizzate nel processo di addestramento come segue:

  1. Prove del modello

    Il set di addestramento viene utilizzato per addestrare i modelli con diverse combinazioni di opzioni di preelaborazione, architettura e iperparametri. Questi modelli vengono valutati per la qualità nel set di convalida, che guida l'esplorazione di combinazioni di opzioni aggiuntive. Il set di convalida viene utilizzato anche per selezionare il miglior checkpoint dalla valutazione periodica durante l'addestramento. I parametri e le architetture migliori determinati nella fase di ottimizzazione parallela vengono utilizzati per addestrare due modelli di ensemble come descritto di seguito.

  2. 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 del modello finali su questo modello utilizzando il set di test. È la prima volta che viene utilizzato il set di test durante la procedura. Questo approccio garantisce che le metriche di valutazione finali rappresentino un riflesso imparziale del rendimento del modello addestrato finale in produzione.

  3. Modello di pubblicazione

    Un modello viene addestrato con il set di addestramento e convalida. Viene convalidato (per selezionare il checkpoint migliore) utilizzando il set di test. Il set di test non viene mai addestrato nel senso che la perdita viene calcolata in base a questo. Questo è il modello che utilizzi per richiedere le previsioni.

Suddivisione predefinita

La suddivisione dei dati predefinita (cronologica) funziona nel seguente modo:

  1. I dati di addestramento sono ordinati per data.
  2. Utilizzando le percentuali predeterminate impostate (80/10/10), il periodo di tempo coperto dai dati di addestramento è suddiviso in tre blocchi, uno per ogni set di addestramento.
  3. Le righe vuote vengono aggiunte all'inizio di ogni serie temporale per consentire al modello di apprendere dalle righe che non hanno una cronologia sufficiente (finestra di contesto). Il numero di righe aggiunte corrisponde alle dimensioni della finestra di contesto impostata al momento dell'addestramento.
  4. Utilizzando la dimensione dell'orizzonte di previsione impostata al momento dell'addestramento, ogni riga i cui dati futuri (orizzonte di previsione) rientrano completamente in uno dei set di dati viene utilizzata per quel set. Le righe il cui orizzonte di previsione si estende su due set vengono eliminate per evitare la fuga di dati.

    Diagramma di suddivisione cronologica

Suddivisione manuale

Una colonna di suddivisione dati ti 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 (sensibile alle maiuscole):

  • TRAIN
  • VALIDATE
  • TEST

Ogni riga deve avere un valore per questa colonna; 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 tipo di trasformazione può essere Categoriale, Testo o Automatico.

Designa una colonna come colonna di suddivisione dei dati durante l'addestramento del modello.

Assicurati di evitare la perdita di dati tra le serie temporali.