Suddivisione dei dati per 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 chiave durante la creazione di suddivisioni di dati è garantire che il set di test che rappresenti in modo accurato 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 l'addestramento, la convalida e il test di dati per addestrare un modello AutoML e i modi in cui puoi controllare il modo in cui i dati vengono suddivisi tra questi tre insiemi. Gli algoritmi di suddivisione dati per la classificazione e la regressione sono diverse dagli algoritmi di suddivisione dati per eseguire previsioni.

Suddivisioni dei dati per classificazione e regressione

Come vengono utilizzate le suddivisioni di dati

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

  1. Prove di modelli

    Il set di addestramento viene utilizzato per addestrare modelli con diverse pre-elaborazioni, di architettura e opzioni degli 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 checkpoint migliore 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 siano 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 dati predefinita

Per impostazione predefinita, Vertex AI utilizza una segmentazione casuale per suddividere i dati in tre suddivisioni. Vertex AI seleziona in modo casuale l'80% delle righe di dati per il set di addestramento, il 10% per e il 10% per il set di test. Consigliamo la suddivisione predefinita per set di dati che sono:

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

Per utilizzare la suddivisione dati predefinita, accetta quella predefinita nella console Google Cloud o lascia il campo split vuoto 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). Sono inclusi i dati relativi a le opzioni di suddivisione dati non richiedono l'uso di tali opzioni; puoi ancora scegli 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 del test includono dati di popolazioni che non saranno rappresentate in e 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 un modello può generalizzare in modo che non vengano rilevati, è necessario separare i set di dati negozi. In altre parole, il set di test deve includere solo datastore dal set di convalida, che deve includere solo i negozi diverso dal set di addestramento.

  • I tuoi corsi sono sbilanciati.

    Se nei dati di addestramento sono presenti molti più elementi di una classe rispetto a un'altra, potresti dover includere manualmente altri esempi della classe di minoranza nel tuo dei dati di test. Vertex AI non esegue un campionamento stratificato, quindi il set di test potrebbe includere un numero troppo basso o addirittura zero di esempi della classe di minoranza.

Suddivisione casuale

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

Per impostazione predefinita, le percentuali dei dati di addestramento e i set di test sono rispettivamente 80, 10 e 10. Se utilizzi la console Google Cloud, puoi modificare le percentuali con qualsiasi valore sommato fino a 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 è anche nota come "suddivisione predefinita".

Una colonna di suddivisione dati consente di selezionare righe specifiche da utilizzare 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 di questa colonna devono essere una delle due combinazioni seguenti:

  • 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 dati può avere qualsiasi nome di colonna valido; le sue Il tipo di trasformazione può essere Categorico, 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.

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

Suddivisione cronologica

La suddivisione cronologica è nota anche come "suddivisione timestamp".

Se i dati dipendono dal tempo, puoi specificare come colonna Data/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. Accertati che la colonna Data sia sufficientemente distinta in modo che i set di convalida e test non siano vuoti. Di solito, avendo a dovrebbero essere sufficienti almeno 20 valori distinti.

I dati nella colonna Data/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 per ogni insieme.

Definisci una colonna come colonna temporale durante l'addestramento del modello.

Suddivisioni dei dati per la previsione

Per impostazione predefinita, Vertex AI utilizza una suddivisione cronologica per separare i dati di previsione nelle tre suddivisioni di dati. Ti consigliamo di utilizzare la suddivisione predefinita. Se però vuoi controllare quale addestramento righe di dati per cui vengono suddivisi i contenuti, usa una suddivisione manuale.

Come vengono utilizzate le suddivisioni dei dati

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

  1. Prove di modelli

    Il set di addestramento viene utilizzato per addestrare modelli con diverse pre-elaborazioni, di architettura e opzioni degli 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 checkpoint migliore 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 l'ultimo blocco metriche di valutazione del modello su questo modello, usando il set di test. È la prima volta che in un set di test. Questo approccio garantisce che le metriche di valutazione finali siano 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 previsioni.

Suddivisione predefinita

La suddivisione predefinita (cronologica) dei dati funziona come segue:

  1. I dati di addestramento sono ordinati per data.
  2. Utilizzando le percentuali predeterminate (80/10/10), il periodo di tempo coperto tramite i dati di addestramento è suddiviso in tre blocchi, uno per ogni per iniziare.
  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 è a cavallo di due gruppi sono eliminati per evitare la fuga di dati.)

    Diagramma di suddivisione cronologico

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 colonna che può contenere uno dei seguenti valori (sensibili alle maiuscole):

  • TRAIN
  • VALIDATE
  • TEST

Ogni riga deve avere un valore per questa colonna; non può essere una 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 dati può avere qualsiasi nome di colonna valido; le sue Il tipo di trasformazione può essere Categorico, Testo o Automatico.

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

Assicurati di evitare la fuga di dati tra una serie temporale e l'altra.