A engenharia de funcionalidades pré-processa dados brutos em um formato legível por máquina. Ela otimiza o desempenho do modelo de ML ao transformar e selecionar funcionalidades relevantes.
A engenharia de funcionalidades é o processo de transformar dados brutos em informações relevantes para uso por modelos de aprendizado de máquina. Em outras palavras, a engenharia de funcionalidades é o processo de criação de funcionalidades de modelos preditivos. Uma funcionalidade, também chamada de dimensão, é uma variável de input usada para gerar previsões de modelos. Como o desempenho do modelo depende, em grande parte, da qualidade dos dados usados durante o treinamento, a engenharia de funcionalidades é uma técnica de pré-processamento crucial que requer a seleção dos aspectos mais relevantes dos dados brutos de treinamento, tanto para a tarefa preditiva quanto para o tipo de modelo em consideração.1
Antes de prosseguir, uma breve observação sobre a terminologia. Muitas fontes usam engenharia de funcionalidades e extração de funcionalidades de forma intercambiável para denotar o processamento da criação de variáveis de modelo.2 Às vezes, fontes também utilizam o termo extração de funcionalidades para se referir ao mapeamento de um espaço original de funcionalidades para um espaço de menor dimensão.3 Em contraste, a seleção de funcionalidades é uma forma de redução de dimensionalidade. Especificamente, é o processamento da seleção de um subconjunto de variáveis para criar um novo modelo com o objetivo de reduzir a multicolinearidade e, assim, maximizar a generalização e a otimização do modelo.
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.
Embora não haja um método ou pipeline de engenharia de funcionalidades universalmente preferido, há um punhado de tarefas comuns usadas para criar funcionalidades a partir de diferentes tipos de dados para diferentes modelos. Antes de implementar qualquer uma dessas técnicas, no entanto, é preciso lembrar de realizar uma análise completa dos dados para determinar as funcionalidades relevantes e o número apropriado de funcionalidades para resolver um determinado problema. Além disso, é melhor implementar várias técnicas de limpeza e pré-processamento de dados, como imputação de dados ausentes ou valores ausentes, além de lidar com os valores discrepantes que podem afetar negativamente as previsões do modelo.
A transformação de funcionalidades é o processo de converter um tipo de funcionalidade em outro, de forma mais legível para um modelo específico. Consiste em transformar dados contínuos em categóricos, ou vice-versa.
Binning. Essa técnica transforma essencialmente valores numéricos contínuos em funcionalidades categóricas. Especificamente, o binning compara cada valor com a comunidade de valores ao seu redor e, em seguida, classifica os pontos de dados em um número de bins. Um exemplo rudimentar de categorização é a demografia por idade, na qual idades contínuas são divididas em faixas etárias, por exemplo, 18-25, 25-30 e assim por diante. Depois que os valores foram colocados em bins, é possível suavizar ainda mais os bins por médias, medianas ou limites. A suavização de bins substitui os valores contidos em um bin por valores derivados de bins. Por exemplo, se suavizarmos um bin contendo valores de idade entre 18 e 25 pela média, substituímos cada valor nesse bin pela média dos valores desse bin. O binning cria valores categóricos a partir de valores contínuos. A suavização de bins é uma forma de suavização local destinada a reduzir o ruído nos dados de entrada.7
Codificação one-hot. É o inverso do binning: cria funcionalidades numéricas a partir de variáveis categóricas. A codificação one-hot mapeia funcionalidades categóricas para representações binárias, que são usadas para mapear a funcionalidade em uma matriz ou espaço vetorial. A literatura geralmente se refere a essa representação binária como uma variável fictícia. Como a codificação one-hot ignora a ordem, é mais adequada para categorias nominais. Os modelos de bag of words são um exemplo de codificação única frequentemente usada em tarefas de processamento de linguagem natural. Outro exemplo de codificação única é a classificação de filtragem de spam, na qual as categorias spam e não spam são convertidas em 1 e 0, respectivamente.8
A extração de funcionalidades é uma técnica para criar um novo espaço dimensional para um modelo, combinando variáveis em novas variáveis substitutas ou para reduzir as dimensões do espaço de funcionalidades do modelo.9 Em comparação, a seleção de funcionalidades denota técnicas para selecionar um subconjunto das funcionalidades mais relevantes para representar um modelo. Tanto a extração quanto a seleção de funcionalidades são formas de redução da dimensionalidade e, portanto, adequadas para problemas de regressão com um grande número de funcionalidades e amostras de dados disponíveis limitadas.
Análise de componentes principais. A análise de componentes principais (PCA) é um método comum de extração de funcionalidades que combina e transforma as funcionalidades originais de um conjunto de dados para produzir novas funcionalidades, chamadas de componentes principais. A PCA seleciona um subconjunto de variáveis de um modelo que, juntas, abrangem a maioria ou toda a variância presente no conjunto original de variáveis do modelo. Então, a PCA projeta dados em um novo espaço definido por esse subconjunto de variáveis.10
Análise discriminante linear. A análise discriminante linear (LDA) é muito semelhante à PCA, pois projeta dados do modelo em um novo espaço de menor dimensão. Como no PCA, as dimensões (ou funcionalidades) desse espaço do modelo são derivadas das funcionalidades do modelo inicial. No entanto, a LDA difere da PCA em sua preocupação em manter os rótulos de classificação no conjunto de dados original. Enquanto a PCA produz novas variáveis de componentes destinadas a maximizar a variância dos dados, a LDA produz variáveis de componentes destinadas principalmente a maximizar a diferença de classe nos dados.11
Certas funcionalidades possuem limites superiores e inferiores intrínsecos aos dados que restringem os valores possíveis, como dados de séries temporais ou idade. No entanto, em muitos casos, as funcionalidades do modelo podem não ter limitações nos valores possíveis, e escalas amplas (definidas pela diferença entre os valores mínimo e máximo de uma funcionalidade) podem impactar negativamente determinados modelos. O escalonamento de funcionalidades (às vezes chamado de normalização de funcionalidades) é uma técnica de padronização que redefine as escalas das funcionalidades para limitar o impacto de valores grandes nos modelos.12 Enquanto a transformação de funcionalidades altera os dados de um tipo para outro, o escalonamento ajusta os dados em termos de alcance e distribuição, preservando o tipo de dado original.13
Escalonamento mín-máx. O escalonamento mín-máx redimensiona todos os valores de uma funcionalidade para que fiquem entre valores mínimos e máximos especificados, geralmente 0 e 1. O valor de cada ponto de dados para a funcionalidade selecionada (representado por x) é calculado em relação aos valores mínimo e máximo decididos da funcionalidade, min(x) e máx(x) respectivamente, o que produz o novo valor da funcionalidade para esse ponto de dados (representado por x̃ ) . O escalonamento mín-máx é calculado usando a fórmula:14
Dimensionamento do Z-score. A literatura também se refere a isso como padronização e dimensionamento de variância. Enquanto as escalas mín-máx apresentam valores de funcionalidades para se ajustarem aos valores mínimo e máximo designados, o dimensionamento do Z-score redimensiona as funcionalidades de modo que tenham um desvio padrão compartilhado de 1 com uma média de 0. O dimensionamento do Z-score é representado pela fórmula:
Aqui, um determinado valor de recurso (x) é calculado em relação à média do recurso redimensionado e dividido pelo desvio padrão padronizado (representado como sqrt(var(x))). O dimensionamento do Z-score pode ser útil ao implementar métodos de extração de funcionalidades como PCA e LDA, pois esses dois métodos exigem que as funcionalidades compartilhem a mesma escala.15
Automação. A engenharia automatizada de funcionalidades, de fato, tem sido um campo de pesquisa em andamento há algumas décadas.16 As bibliotecas Python, como "tsflex" e "featuretools", ajudam a automatizar a extração e a transformação de funcionalidades para dados de séries temporais. Os desenvolvedores continuam a fornecer novos pacotes e algoritmos para automatizar a engenharia de recursos para modelos de regressão linear e outros tipos de dados que aumentam a precisão do modelo.17 Mais recentemente, a engenharia automatizada de funcionalidades passou a fazer parte de esforços maiores para construir sistemas de aprendizado de máquina automatizado (AutoML), que têm como objetivo tornar o aprendizado de máquina mais acessível para não especialistas.18
Deep learning. A engenharia de funcionalidades pode ser um processo trabalhoso e demorado, envolvendo uma quantidade significativa de tentativa e erro. O deep learning permite que o usuário especifique um pequeno conjunto de atributos básicos que a arquitetura da rede neural agrega em atributos de nível superior, também chamados de representações.19 Um exemplo disso é o processamento de imagens e o reconhecimento de padrões em visão computacional, no qual um modelo aprende a identificar objetos semanticamente significativos (por exemplo, carros, pessoas etc.) em termos de conceitos simples (como bordas, contornos etc.) ao concatenar mapas de atributos.20 Estudos recentes, no entanto, combinaram a engenharia de atributos com redes neurais e outras técnicas de deep learning em tarefas de classificação, como detecção de fraudes, com resultados promissores.21
O IBM® Granite é nossa família de modelos de IA abertos, de alto desempenho e confiáveis, personalizados para a empresa e otimizados para escalar suas aplicações de IA. Explore as opções de linguagem, código, séries temporais e proteções.
Entrevistamos duas mil organizações a respeito de suas iniciativas de IA para descobrir o que está funcionando, o que não está e como se preparar.
Explore abordagens de aprendizado supervisionado, como máquinas de vetores de suporte e classificadores probabilísticos.
Aprenda conceitos fundamentais e desenvolva suas habilidades com laboratórios práticos, cursos, projetos guiados, avaliações e muito mais.
Saiba como selecionar o modelo de base de IA mais adequado para seu caso de uso.
Treine, valide, ajuste e implemente recursos de IA generativa, modelos de base e recursos de aprendizado de máquina com o IBM watsonx.ai, um estúdio empresarial de última geração para construtores de IA. Crie aplicações de IA em uma fração do tempo com uma fração dos dados.
Use a IA a serviço de sua empresa com a experiência e o portfólio de soluções líder do setor da IBM à sua disposição.
Reinvente os fluxos de trabalho e operações críticos adicionando IA para maximizar experiências, tomadas de decisão em tempo real e valor de negócios.
1 Alice Zheng e Amanda Casari, Feature Engineering for Machine Learning, O’Reilly, 2018. Sinan Ozdemir e Divya Susarla, Feature Engineering Made Easy, Packt, 2018.
2 Yoav Goldberg, Neural Network Methods for Natural Language Processing, Springer, 2022.
3 Suhang Wang, Jiliang Tang e Huan Liu, “Feature Selection,” Encyclopedia of Machine Learning and Data Mining, Springer, 2017.
4 Sinan Ozdemir, Feature Engineering Bookcamp, Manning Publications, 2022. Sinan Ozdemir e Divya Susarla, Feature Engineering Made Easy, Packt, 2018.
5 Max Kuhn e Kjell Johnson, Applied Predictive Modeling, Springer, 2016.
6 Alice Zheng e Amanda Casari, Feature Engineering for Machine Learning, O’Reilly, 2018.
7 Jaiwei Han, Data Mining: Concepts and Techniques, 3ª edição, 2012.
8 Kevin Murphy, Machine Learning: A Probabilistic Perspective, MIT Press, 2012. Soledad Galli, Python Feature Engineering Cookbook,2ª edição, Packt, 2022.
9 Max Kuhn e Kjell Johnson, Applied Predictive Modeling, Springer, 2016.
10 I.T. Jollife, Principal Component Analysis, Springer, 2002.
11 Chris Albon, Machine Learning with Python Cookbook, O’Reilly, 2018.
12 Alice Zheng e Amanda Casari, Feature Engineering for Machine Learning, O’Reilly, 2018.
13 Zahraa Abdallah, Lan Du e Geoffrey Webb, “Data preparation,” Encyclopedia of Machine Learning and Data Mining, Springer, 2017.
14 Alice Zheng e Amanda Casari, Feature Engineering for Machine Learning, O’Reilly, 2018.
15 Zahraa Abdallah, Lan Du e Geoffrey Webb, “Data preparation,” Encyclopedia of Machine Learning and Data Mining, Springer, 2017. Alice Zheng e Amanda Casari, Feature Engineering for Machine Learning, O'Reilly, 2018.
16 James Kanter e Kalyan Veeramachaneni, "Deep feature synthesis: Towards automating data science endeavors," IEEE International Conference on Data Science and Advanced Analytics, 2015, https://ieeexplore.ieee.org/document/7344858.
17 Udayan Khurana, Deepak Turaga, Horst Samulowitz e Srinivasan Parthasrathy, "Cognito: Automated Feature Engineering for Supervised Learning," IEEE 16th International Conference on Data Mining Workshops, 2016, págs. 1304-130, https://ieeexplore.ieee.org/abstract/document/7836821. Franziska Horn, Robert Pack e Michael Rieger, "The autofeat Python Library for Automated Feature Engineering and Selection," Joint European Conference on Machine Learning and Knowledge Discovery in Databases, 2019, págs. 111-120, https://link.springer.com/chapter/10.1007/978-3-030-43823-4_10.
18 Ahmad Alsharef, Karan Aggarwal, Sonia, Manoj Kumar e Ashutosh Mishra, "Review of ML and AutoML Solutions to Forecast Time‑Series Data," Archives of Computational Methods in Engineering, Vol. 29, 2022, págs. 5297–5311, https://link.springer.com/article/10.1007/s11831-022-09765-0. Sjoerd Boeschoten, Cagatay Catal, Bedir Tekinerdogan, Arjen Lommen e Marco Blokland, "The automation of the development of classification models andimprovement of model quality using feature engineering techniques," Expert Systems with Applications, Vol. 213, 2023, https://www.sciencedirect.com/science/article/pii/S0957417422019303. Shubhra Kanti Karmaker, Mahadi Hassan, Micah Smith, Lei Xu, Chengxiang Zhai, and Kalyan Veeramachaneni, "AutoML to Date and Beyond: Challenges and Opportunities," ACM Computing Surveys, Vol. 54, No. 8, 2022, págs. 1-36, https://dl.acm.org/doi/abs/10.1145/3470918.
19 Yoav Goldberg, Neural Network Methods for Natural Language Processing, Springer, 2022.
20 Ian Goodfellow, Yoshua Bengio e Aaron Courville, Deep Learning, MIT Press, 2016, https://www.deeplearningbook.org/
21 Xinwei Zhang, Yaoci Han, Wei Xu e Qili Wang, "HOBA: A novel feature engineering methodology for credit card fraud detection with a deep learning architecture," Information Sciences, Vol. 557, 2021, págs. 302-316, https://www.sciencedirect.com/science/article/abs/pii/S002002551930427X. Daniel Gibert, Jordi Planes, Carles Mateu e Quan Le, "Fusing feature engineering and deep learning: A case study for malware classification," Expert Systems with Applications, Vol. 207, 2022, https://www.sciencedirect.com/science/article/pii/S0957417422011927. Ebenezerm Esenogho, Ibomoiye Domor Mienye, Theo Swart, Kehinde Aruleba, and George Obaido, "A Neural Network Ensemble With Feature Engineering for Improved Credit Card Fraud Detection," IEEE Access, Vol. 10, 2020, págs. 16400-16407, https://ieeexplore.ieee.org/abstract/document/9698195.