Sistemi di ML di produzione: quando trasformare i dati?

I dati non elaborati devono essere sottoposti a feature engineering (trasformati). Quando trasformare i dati? In linea di massima, puoi eseguire la creazione di funzionalità in uno dei seguenti due periodi:

  • Prima di addestrare il modello.
  • Durante l'addestramento del modello.

Trasformazione dei dati prima dell'addestramento

In questo approccio, segui due passaggi:

  1. Scrivi codice o utilizza strumenti specializzati per trasformare i dati non elaborati.
  2. Archivia i dati trasformati in un luogo in cui il modello possa importarli, ad esempio su disco.

Vantaggi

  • Il sistema trasforma i dati non elaborati una sola volta.
  • Il sistema può analizzare l'intero set di dati per determinare la migliore strategia di trasformazione.

Svantaggi

Lo scostamento tra addestramento e pubblicazione è più pericoloso quando il sistema esegue l'inferenza dinamica (online). In un sistema che utilizza l'inferenza dinamica, il software che trasforma il set di dati non elaborato in genere è diverso da quello che genera le previsioni, il che può causare un disallineamento addestramento/produzione. I sistemi che utilizzano l'inferenza statica (offline), invece, a volte possono utilizzare lo stesso software.

Trasformazione dei dati durante l'addestramento

In questo approccio, la trasformazione fa parte del codice del modello. Il modello importa i dati non elaborati e li trasforma.

Vantaggi

  • Puoi comunque utilizzare gli stessi file di dati non elaborati se modifichi le trasformazioni.
  • Avrai le stesse trasformazioni al momento dell'addestramento e della previsione.

Svantaggi

  • Le trasformazioni complicate possono aumentare la latenza del modello.
  • Le trasformazioni vengono eseguite per ogni batch.

La trasformazione dei dati per batch può essere complicata. Ad esempio, supponiamo che tu voglia utilizzare la normalizzazione del punteggio Z per trasformare i dati numerici non elaborati. La normalizzazione del punteggio z richiede la media e la deviazione standard della caratteristica. Tuttavia, le trasformazioni per batch ti consentono di accedere solo a un batch di dati, non all'intero set di dati. Pertanto, se i batch sono molto diversi, un valore Z di, ad esempio, -2,5 in un batch non avrà lo stesso significato di -2,5 in un altro batch. Come soluzione alternativa, il sistema può precompilare la media e la deviazione standard in tutto il set di dati e poi utilizzarle come costanti nel modello.