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:
- Grave código ou use ferramentas especializadas para transformar os dados brutos.
- 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
- É necessário recriar as transformações no momento da previsão. Cuidado com a distorção entre treinamento e exibição.
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.