Best practice per la creazione di dati di addestramento tabulari

Questa pagina fornisce alcuni concetti di base da considerare quando si raccolgono i dati per un set di dati tabulari Vertex AI. Non deve essere inteso come un trattamento completo.

Alcune di queste best practice si applicano quando crei dati di addestramento tabulari per un modello con addestramento personalizzato o un modello AutoML. Altri sono specifici dei modelli tabulari AutoML.

Introduzione

Dati ben progettati aumentano la qualità del modello di machine learning risultante. Puoi utilizzare le linee guida riportate in questa pagina per migliorare la qualità dei dati e del modello di addestramento.

Se hai esperienza nella creazione di dati di addestramento per i modelli di machine learning e vuoi addestrare un modello AutoML, esamina le trasformazioni applicabili a AutoML. Quando addestri un modello AutoML, Vertex AI esegue molte attività di preparazione dei dati.

Best practice per la preparazione dei dati tabulari

Le seguenti best practice si applicano quando si crea un modello AutoML o un modello con addestramento personalizzato che utilizza dati tabulari.

Evitare fughe di destinazione

La fuga di dati si verifica quando i dati di addestramento includono informazioni predittive non disponibili quando richiedi una previsione. Una fuga di dati target può far sì che il tuo modello mostri metriche di valutazione eccellenti, ma prestazioni limitate sui dati reali.

Ad esempio, supponi di voler sapere quanto gelato andrà a vendere il tuo negozio domani. Non puoi includere la temperatura del giorno target nei dati di addestramento, perché non conosci la temperatura (non è ancora successo). Tuttavia, potresti utilizzare la temperatura prevista del giorno precedente, che potrebbe essere inclusa nella richiesta di previsione.

Evitare il disallineamento della pubblicazione

L'allineamento dell'addestramento si verifica quando generi i dati di addestramento in modo diverso rispetto ai dati che utilizzi per richiedere le previsioni.

Ad esempio, se utilizzi un valore medio e ai fini dell'addestramento hai una media di 10 giorni, ma quando richiedi la previsione, ottieni una media nell'ultimo mese.

In generale, qualsiasi differenza tra il modo in cui generi i dati di addestramento e i dati di pubblicazione (i dati che utilizzi per generare previsioni) dovrebbe essere esaminata per evitare che i dati di addestramento vengano alterati.

Disallineamento addestramento/distribuzione dei dati

Un disallineamento di addestramento può inoltre verificarsi in base alla distribuzione dei dati nelle tue suddivisioni di dati di addestramento, convalida e test. Spesso c'è una differenza tra la distribuzione dei dati che vede un modello quando viene sottoposto a deployment in produzione rispetto alla distribuzione dei dati del set di dati su cui il modello viene addestrato. Ad esempio, in produzione, un modello può essere applicato a una popolazione di utenti completamente diversa rispetto a quella vista durante l'addestramento oppure essere utilizzato per effettuare previsioni 30 giorni dopo la registrazione dei dati finali dell'addestramento.

Per ottenere risultati ottimali, assicurati che la distribuzione delle suddivisioni dei dati utilizzate per creare il modello rispecchi in modo accurato la differenza tra i dati di addestramento e i dati su cui eseguirai previsioni nel tuo ambiente di produzione. Vertex AI potrebbe produrre previsioni non monotone e se i dati di produzione vengono campionati da una distribuzione molto diversa rispetto ai dati di addestramento, le previsioni non mononotiche non sono molto affidabili.

Inoltre, la differenza tra i dati di produzione e i dati di addestramento deve essere riflessa nella differenza tra suddivisione dati dei dati di addestramento e suddivisione dei dati di addestramento e suddivisione dei dati di convalida.

Ad esempio, se hai intenzione di fare previsioni sul lifetime value utente (LTV) nei prossimi 30 giorni, assicurati che i dati nella suddivisione dei dati di convalida siano di 30 giorni dopo quelli nella suddivisione dei dati di addestramento e che i dati nella suddivisione dei dati di test siano di 30 giorni dalla suddivisione dei dati di convalida.

Analogamente, se vuoi che il tuo modello sia ottimizzato per eseguire previsioni generalizzate sui nuovi utenti, assicurati che i dati di un utente specifico siano contenuti solo in un'unica suddivisione dei dati di addestramento. Ad esempio, tutte le righe che appartengono a user1 rientrano nella suddivisione dati di addestramento, tutte le righe che appartengono a user2 rientrano nella suddivisione dati di convalida e tutte le righe che appartengono a user3 rientrano nella suddivisione dati di test.

Fornisci un indicatore di tempo

Per quanto riguarda i modelli di classificazione e regressione, se il modello sottostante nei tuoi dati ha probabilità di cambiare nel tempo (non è distribuito casualmente nel tempo), assicurati di fornire tali informazioni a Vertex AI. Puoi fornire un indicatore temporale in diversi modi:

  • Se ogni riga di dati ha un timestamp, assicurati che la colonna sia inclusa, abbia un tipo di trasformazione Timestamp e sia impostata come colonna Time quando addestra il modello. Questo ordinamento è utilizzato per suddividere i dati, con i dati più recenti come dati di test, e i primi dati come dati di addestramento. Scopri di più

  • Se la colonna temporale non ha molti valori distinti, devi utilizzare una suddivisione manuale invece di utilizzare la colonna Tempo per suddividere i dati. In caso contrario, potresti non avere un numero sufficiente di righe in ogni set di dati e questo potrebbe causare l'errore dell'addestramento.

  • Se le informazioni sull'orario non sono contenute in una singola colonna, puoi utilizzare una suddivisione dei dati manuale per utilizzare i dati più recenti come dati di test e i primi dati come dati di addestramento.

Fare in modo che le informazioni siano esplicite quando necessario

Per alcune primitive di dati, puoi migliorare la qualità del modello grazie a funzionalità di progettazione.

Ad esempio, se i dati includono longitudine e latitudine, queste colonne vengono trattate come numeri, senza calcoli speciali. Se la località o la distanza fornisce un segnale per il tuo problema, devi progettare una funzionalità che fornisca esplicitamente queste informazioni.

Alcuni tipi di dati che potrebbero richiedere funzionalità di feature engineering:

  • Longitudine/Latitudine
  • URL
  • Indirizzi IP
  • Indirizzi email
  • Numeri di telefono
  • Altri codici geografici (ad es. codici postali)

Includere dati calcolati o aggregati in una riga

Vertex AI utilizza solo i dati di input in una singola riga per prevedere il valore target per quella riga. Se hai calcolato o aggregati dati di altre righe o origini utili per determinare il valore previsto per una riga, includi tali dati nella riga di origine. Fai attenzione che la nuova colonna non causi fughe di target o disallineamento di pubblicazione della formazione.

Ad esempio, se vuoi prevedere la domanda del prossimo settimana, puoi migliorare la qualità della previsione includendo colonne con i seguenti valori:

  • Il numero totale di articoli disponibili della stessa categoria del prodotto.
  • Il prezzo medio degli articoli disponibili, della stessa categoria del prodotto.
  • Il numero di giorni prima di una festività nota in cui è richiesta la previsione.
  • E così via...

In un altro esempio, se vuoi prevedere se un utente specifico acquisterà un prodotto, puoi migliorare la qualità della previsione includendo colonne con i seguenti valori:

  • Il tasso di conversione storico medio o la percentuale di clic per l'utente specifico.
  • Quanti prodotti sono attualmente presenti nel carrello dell'utente.

Evita i bias

Assicurati che i dati di addestramento rappresentino l'intero universo dei dati potenziali per i quali effettuerai le previsioni. Ad esempio, se hai clienti che vivono in tutto il mondo, non devi utilizzare i dati di addestramento di un solo paese.

Best practice per la preparazione dei dati tabulari per i modelli AutoML

Le best practice seguenti sono per la creazione di dati di addestramento tabulari per i modelli tabulari AutoML.

Rappresentare in modo appropriato i valori nulli

Se esegui un'importazione da CSV, utilizza stringhe vuote per rappresentare i valori nulli. Da BigQuery, utilizza il valore NULL.

Se i dati utilizzano caratteri o numeri speciali per rappresentare valori null, inclusi zero, questi valori vengono interpretati in modo errato, riducendo la qualità del modello.

Se possibile, evita valori mancanti

Controlla i dati mancanti e correggili, se possibile. Altrimenti, puoi lasciare vuoto il valore, che viene considerato come un valore null.

Utilizza spazi per separare il testo

Vertex AI tokenizza le stringhe di testo e può ricavare il segnale di addestramento da singole parole. Utilizza gli spazi per separare le parole; le parole separate da altri caratteri vengono considerate come una singola entità.

Ad esempio, se fornisci il testo "rosso/verde/blu", non viene tokenizzato in "rosso", "verde" e "blu". Se queste singole parole possono essere importanti per l'addestramento del modello, devi trasformare il testo in "rosso-blu" blu prima di includerlo nei dati di addestramento.

Assicurati che le caratteristiche categoriche siano accurate e chiare

Le incoerenze dei dati possono causare la suddivisione errata delle categorie. Ad esempio, se i dati includono "Marrone" e "Marrone", Vertex AI utilizza tali valori come categorie separate, quando si potrebbe volere che siano gli stessi. Gli errori di ortografia possono avere un effetto simile. Assicurati di rimuovere questi tipi di incoerenze dai tuoi dati categorici prima di creare i tuoi dati di addestramento.

Presta particolare attenzione alle classi sbilanciate per i modelli di classificazione

Se hai delle classi sbilanciate (un problema di classificazione con uno o più risultati visualizzati raramente), consulta i seguenti suggerimenti.

Fornire dati di addestramento sufficienti per la classe minoritaria

Se le righe di dati per una classe sono insufficienti, la qualità del modello viene compromessa. Se possibile, devi fornire almeno 100 righe di dati per ogni classe.

Valuta la possibilità di utilizzare una suddivisione manuale

Vertex AI seleziona le righe per il set di dati di test in modo casuale (ma deterministicamente). Per le classi sbilanciate, potresti finire con un numero limitato di classi di minoranza nel tuo set di dati di test, o persino nessuno, che impedisce l'addestramento.

Se le tue classi sono sbilanciate, potresti assegnare una suddivisione manuale per assicurarti che in ogni suddivisione vengano incluse un numero sufficiente di righe con i risultati delle minoranze.

Fornisci dati sufficienti per l'addestramento

Se non fornisci dati di addestramento sufficienti, il modello risultante potrebbe avere prestazioni scarse. Più colonne utilizzi per addestrare il modello, più dati dovrai fornire.

Il set di dati deve includere sempre almeno 1000 righe.

La tabella riportata di seguito fornisce alcune euristiche sulla quantità di dati di addestramento da fornire, a seconda del tuo obiettivo.

Obiettivo Quantità minima consigliata di dati di addestramento
Classificazione Almeno 10 volte il numero di righe rispetto alle colonne.
Previsione (anteprima) Almeno dieci serie temporali per ogni colonna utilizzata per addestrare il modello.
Regressione Almeno 50 volte il numero di righe.

Lascia tutte le altre attività di pre-elaborazione e trasformazione in Vertex AI

Se non diversamente indicato sopra, consenti a Vertex AI di eseguire la progettazione delle funzionalità per l'addestramento di un modello AutoML. AutoML funziona al meglio quando ha accesso ai tuoi dati sottostanti. Per un elenco di tutte le trasformazioni eseguite da AutoML per tipo di trasformazione, consulta la pagina relativa alle trasformazioni di Vertex AI.

Best practice per la preparazione dei dati di previsione

I dati di addestramento per i modelli di previsione (Anteprima) hanno alcune considerazioni speciali.

Identificatore di serie temporale

Una delle colonne nei dati di addestramento per un modello di previsione deve essere specificata come identificatore della serie temporale. I dati di addestramento delle previsioni in genere includono più serie temporali e l'identificatore indica a Vertex AI di quale serie temporale fa parte una determinata osservazione nei dati di addestramento. Tutte le righe di una determinata serie temporale hanno lo stesso valore nella colonna dell'identificatore della serie temporale.

Alcuni identificatori di serie temporali comuni potrebbero essere l'ID prodotto, un ID negozio o un'area geografica. Se i tuoi dati di addestramento includono più serie temporali, sarà disponibile una colonna specifica per distinguerli.

Puoi addestrare un modello di previsione per una singola serie temporale (in altre parole, la colonna dell'identificatore della serie temporale contiene lo stesso valore per tutte le righe). Tuttavia, Vertex AI è la soluzione migliore per i dati di addestramento che contengono due o più serie temporali. Per ottenere risultati ottimali, devi avere almeno 10 serie temporali per ogni colonna utilizzata per addestrare il modello.

Considerazioni sulla scelta della granularità dei dati

Quando addestri un modello di previsione, specifichi la granularità dei dati o l'intervallo di tempo tra le righe dei dati di addestramento. Può essere oraria, giornaliera, settimanale, mensile o annuale. Inoltre, può essere ogni 1, 5, 10, 15 o 30 minuti.

La granularità dei dati deve essere coerente per tutti i dati di addestramento e tutti i dati di previsione batch. Se specifichi una granularità giornaliera e ci sono 2 giorni tra due righe di dati di addestramento, Vertex AI considera la giornata intermedia come dati mancanti, il che può ridurre le prestazioni del modello. Più righe nella stessa serie temporale con lo stesso timestamp (come stabilito dalla granularità) sono considerate errori di convalida al momento dell'addestramento.

Generalmente, le pratiche di raccolta dei dati determinano la granularità dei dati.

Best practice per suddividere manualmente i dati di addestramento per le serie temporali

Se la suddivisione cronologica predefinita (80/10/10) non è adatta ai tuoi dati di addestramento, puoi specificare manualmente quali righe dei dati di addestramento vengono utilizzate per quale segmento. Ad esempio, potresti voler utilizzare una percentuale diversa dei dati di addestramento per le suddivisioni. Per ulteriori informazioni, consulta Controllo delle suddivisioni di dati.

Assicurati di evitare perdite di dati tra le serie temporali; ciò può accadere quando i dati della stessa data vengono utilizzati per un set per una serie temporale e per un set diverso per una serie temporale diversa.

Considerazioni per l'impostazione della finestra di contesto e dell'orizzonte di previsione

Imposta la finestra di contesto e l'orizzonte di previsione quando addestri un modello di previsione.

  • La finestra contestuale imposta l'intervallo di tempo che assume il modello durante l'addestramento (e le previsioni). In altre parole, per ogni punto dati dell'addestramento, la finestra di contesto determina quanto indietro nel modello cerca modelli ricorrenti.

  • L'orizzonte di previsione determina quanto il futuro prevede che il modello preveda il valore target per ogni riga di dati di previsione.

L'incremento della finestra di contesto ha i seguenti effetti:

  • Aumenta il tempo di addestramento

    Con una finestra di contesto più ampia, il modello utilizza più punti dati nell'addestramento, aumentando il tempo di addestramento.

  • Aumenta la quantità di cronologia richiesta per i dati di previsione

    I dati di previsione devono fornire tutti i punti dati storici del valore della finestra di contesto.

Se prevedi di disporre di molti dati di previsione che non si estendono nel passato (freddi), inizia impostando la finestra di contesto su 0. In caso contrario, una finestra contestuale tra le dimensioni dell'orizzonte di previsione e 10 volte la dimensione dell'orizzonte di previsione dovrebbe funzionare bene.

Per trovare un buon valore per i tuoi dati, puoi provare i seguenti passaggi:

  1. Per la prima iterazione dell'addestramento, imposta la finestra di contesto e l'orizzonte di previsione sullo stesso valore, quindi imposta il budget di addestramento su almeno 6 ore.

  2. Addestra di nuovo il modello, con lo stesso budget di addestramento, ma raddoppia le dimensioni della finestra di contesto per raddoppiare le dimensioni dell'orizzonte di previsione.

  3. Se le metriche di valutazione per il secondo modello mostrano un miglioramento sostanziale, addestra di nuovo il modello, aumentando la finestra di contesto a cinque volte le dimensioni dell'orizzonte di previsione. Valuta la possibilità di aumentare in modo proporzionale il budget per l'addestramento (se il primo passaggio è stato eseguito per dieci ore, aumentalo a 50 ore).

  4. Continua ad aumentare la finestra di contesto fino a quando non vedrai più metriche di valutazione migliorate o finché non sarai soddisfatto dei risultati. Ripristina il valore più basso della finestra di contesto che ha prodotto risultati accettabili.

Modalità di utilizzo della finestra di contesto e dell'orizzonte di previsione durante l'addestramento e le previsioni

Supponi di avere dati raccolti mensilmente, con una finestra di contesto di 5 mesi e un orizzonte di previsione di cinque mesi. L'addestramento del modello con 12 mesi di dati comporterebbe i seguenti set di input e previsioni:

  • [1-5]:[6-10]
  • [2-6]:[7-11]
  • [3-7]:[8-12]

Dopo l'addestramento, il modello può essere utilizzato per prevedere i mesi da 13 a 17:

  • [8-12]:[13-17]

Il modello utilizza solo i dati che rientrano nella finestra di contesto per eseguire la previsione. Potresti fornire dati risalenti a un periodo più lontano, ma che non interesserebbero la previsione, in quanto verrebbero ignorati.

Dopo aver raccolto i dati per il mese 13, si potrebbe utilizzare per prevedere fino al mese 18:

  • [9-13]:[14-18]

Questo può continuare in futuro, a condizione di ottenere buoni risultati. In futuro, potresti riaddestrare il modello con i nuovi dati. Ad esempio, se hai riaddestrato il modello dopo aver aggiunto altri 6 mesi di dati, i dati di addestramento verranno utilizzati nel seguente modo:

  • [2-6]:[7-11]
  • [3-7]:[8-12]
  • [4-8]:[9-13]
  • [5-9]:[10-14]
  • [6-10]:[11-15]
  • [7-11]:[12-16]
  • [8-12]:[13-17]
  • [9-13]:[14-18]

Puoi quindi utilizzare il modello per prevedere dal mese 19 al 23:

  • [14-18]:[19-23]

Informazioni sul formato dei dati

Puoi creare i dati di addestramento in formato largo o ridotto. Per i modelli di regressione e di classificazione, il formato grande è ampiamente utilizzato e più semplice da montare e rivedere. Per i modelli di previsione (anteprima), l'uso di un formato ristretto può aiutarti a evitare di creare connessioni accidentali tra i tuoi dati e il target (fuga di dati).

Quando crei dati di addestramento per l'addestramento di un modello di previsione, ogni riga deve rappresentare una singola osservazione in una singola serie temporale. Devi avere una colonna che rappresenta il tuo identificatore della serie temporale (come si distingue le serie temporali) e una colonna che rappresenta il valore che prevedi (il tuo target). Quindi, ogni altro valore nella riga utilizzata per addestrare il modello deve essere presente al momento della richiesta di una previsione per il target.

Considera i seguenti dati di esempio per l'addestramento: (semplificato e abbreviato):

In data Widget_1_Domanda Widget_2_Domanda Widget_3_Domanda Promozione Area geografica
01/01/2019 112 241 0 0 CA
02/01/2019 141 219 0 1 CA
03/01/2019 149 244 0 0 CA
01/01/2019 52 0 43 0 IL
02/01/2019 81 0 26 1 IL
03/01/2019 89 0 86 0 IL

Questa tabella, in ampio formato, mostra i dati aziendali per data, ma non è utilizzabile per un modello di previsione nel formato attuale. Non è disponibile una singola colonna target, nessuna colonna ID serie temporale e, per una determinata data, non potrai conoscere la domanda degli altri widget al momento della previsione.

Puoi convertire questa tabella in questo formato:

In data Prodotto Richiesta_regione_CA Regione_IL_Domanda Promozione
01/01/2019 Widget_1 112 52 0
02/01/2019 Widget_1 141 81 1
03/01/2019 Widget_1 149 89 0
01/01/2019 Widget_2 241 0 0
02/01/2019 Widget_2 219 0 1
03/01/2019 Widget_2 244 0 0
01/01/2019 Widget_3 0 43 0
02/01/2019 Widget_3 0 26 1
03/01/2019 Widget_3 0 86 0

Ora è disponibile una potenziale colonna ID serie temporale: Prodotto. Tuttavia, questo formato può essere utilizzato solo per prevedere una delle aree geografiche e i dati relativi a quest'ultima devono essere noti al momento della previsione.

La soluzione consiste nel convertire in formato ristretto in modo che ogni riga rappresenti una singola osservazione. Tutti i dati indipendenti dalla serie temporale vengono ripetuti per ogni riga:

In data Domanda Prodotto Promozione Area geografica
01/01/2019 112 Widget_1 0 CA
02/01/2019 141 Widget_1 1 CA
03/01/2019 149 Widget_1 0 CA
01/01/2019 52 Widget_1 0 IL
02/01/2019 81 Widget_1 1 IL
03/01/2019 89 Widget_1 0 IL
01/01/2019 241 Widget_2 0 CA
02/01/2019 219 Widget_2 1 CA
03/01/2019 244 Widget_2 0 CA
01/01/2019 0 Widget_2 0 IL
02/01/2019 0 Widget_2 1 IL
03/01/2019 0 Widget_2 0 IL
01/01/2019 0 Widget_3 0 CA
02/01/2019 0 Widget_3 1 CA
03/01/2019 0 Widget_3 0 CA
01/01/2019 43 Widget_3 0 IL
02/01/2019 26 Widget_3 1 IL
03/01/2019 86 Widget_3 0 IL

Ora abbiamo un identificatore di serie temporali (Prodotto), una colonna di destinazione (Domanda) e una colonna di data/ora (Data). Inoltre, ogni riga si basa su una singola osservazione, che può essere utilizzata per prevedere il valore target. Le colonne Area geografica e Promozione sono utilizzate come elementi per addestrare il modello.

In realtà, avrai molte più righe e molte più colonne di questi esempi. Tuttavia, devi seguire queste linee guida per strutturare i dati in modo da evitare la fuga di dati.

Passaggi successivi