Sistemas de ML de produção: quando transformar dados?

Os dados brutos precisam ser transformados em atributos. Quando você precisa transformar dados? De modo geral, é possível realizar a engenharia de recursos durante um dos seguintes períodos:

  • Antes de treinar o modelo.
  • Ao treinar o modelo.

Transformar dados antes do treinamento

Nessa abordagem, você segue duas etapas:

  1. Grave código ou use ferramentas especializadas para transformar os dados brutos.
  2. Armazene os dados transformados em um local que o modelo possa consumir, como no disco.

Vantagens

  • O sistema transforma os dados brutos apenas uma vez.
  • O sistema pode analisar o conjunto de dados inteiro para determinar a melhor estratégia de transformação.

Desvantagens

O desvio entre treinamento e disponibilização é mais perigoso quando o sistema realiza inferência dinâmica (on-line). Em um sistema que usa inferência dinâmica, o software que transforma o conjunto de dados brutos geralmente é diferente do software que disponibiliza as previsões, o que pode causar um desvio de treinamento/disponibilização. Por outro lado, os sistemas que usam inferência estática (off-line) às vezes podem usar o mesmo software.

Transformar dados durante o treinamento

Nessa abordagem, a transformação faz parte do código do modelo. O modelo recebe dados brutos e os transforma.

Vantagens

  • Você ainda pode usar os mesmos arquivos de dados brutos se mudar as transformações.
  • As mesmas transformações são garantidas no treinamento e na previsão.

Desvantagens

  • Transformações complicadas podem aumentar a latência do modelo.
  • As transformações ocorrem em todos os lotes.

Transformar os dados por lote pode ser complicado. Por exemplo, suponha que você queira usar a normalização de pontuação z para transformar dados numéricos brutos. A normalização de pontuação z requer a média e o desvio padrão do atributo. No entanto, as transformações por lote significam que você só terá acesso a um lote de dados, não ao conjunto de dados completo. Portanto, se os lotes forem muito variados, um Z-score de, digamos, -2,5 em um lote não terá o mesmo significado que -2,5 em outro lote. Como solução alternativa, o sistema pode pré-calcular a média e o desvio padrão em todo o conjunto de dados e, em seguida, usá-los como constantes no modelo.