Dado que um modelo é tão bom quanto os dados nos quais ele se baseia, os cientistas de dados gastam uma grande parte do tempo na preparação dos dados e na criação de funcionalidades para criar modelos de alta qualidade. Dependendo da complexidade dos dados brutos e do modelo preditivo desejado, a engenharia de funcionalidades pode exigir muitas tentativas e erros.
Algumas fontes e tutoriais on-line dividem a engenharia de funcionalidades em etapas discretas, cujo número e nomes geralmente variam. Essas etapas podem incluir compreensão de funcionalidades, estruturação ou construção, transformação, avaliação, otimização e assim por diante.4 Embora essa estratificação possa ser útil para fornecer uma visão geral das tarefas envolvidas na engenharia de funcionalidades, ela sugere que a engenharia de funcionalidades é um processo linear. Na verdade, a engenharia de funcionalidades é um processo iterativo.
A engenharia de funcionalidades depende do contexto. Exige análise de dados e conhecimento de domínio substanciais. Isso ocorre porque a codificação eficaz para funcionalidades pode ser determinada pelo tipo de modelo usado, pela relação entre preditores e saídas, bem como pelo problema que um modelo pretende resolver.5 Isso é combinado com o fato de que diferentes tipos de conjuntos de dados, por exemplo, texto versus imagens, podem ser mais adequados para diferentes técnicas de engenharia de funcionalidades.6 Assim, pode ser difícil fazer comentários específicos sobre a melhor forma de implementar a engenharia de funcionalidades em um determinado algoritmo de aprendizado de máquina.