O que é engenharia de funcionalidades?

Autores

Jacob Murel Ph.D.

Senior Technical Content Creator

Eda Kavlakoglu

Business Development + Partnerships

IBM Research

O que é engenharia de atributos?

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.

As mais recentes tendências em IA, trazidas a você por especialistas

Receba insights selecionados sobre as notícias mais importantes (e intrigantes) sobre IA. Inscreva-se no nosso boletim informativo semanal Think. Consulte a Declaração de privacidade da IBM.

Agradecemos a você! Você se inscreveu.

Sua assinatura será entregue em inglês. Você encontrará um link para cancelar a assinatura em cada boletim informativo. Você pode gerenciar suas assinaturas ou cancelar a assinatura aqui. Consulte nossa Declaração de privacidade da IBM para obter mais informações.

Processo de engenharia de funcionalidades

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.

Mixture of Experts | 12 de dezembro, episódio 85

Decodificando a IA: resumo semanal das notícias

Participe do nosso renomado painel de engenheiros, pesquisadores, líderes de produtos e outros enquanto filtram as informações sobre IA para trazerem a você as mais recentes notícias e insights sobre IA.

Técnicas de engenharia de funcionalidades

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.

Transformação de funcionalidades

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

Tabela ilustrando a codificação one-hot para classificação de spam

Extração e seleção de funcionalidades

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

Dimensionamento de funcionalidades

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 ) . O escalonamento mín-máx é calculado usando a fórmula:14

Equação de mín-máx

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:

Equação do Z-score

Aqui, um determinado valor de atributo (x) é calculado em relação à média do atributo 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 atributos como PCA e LDA, pois esses dois métodos exigem que os atributos compartilhem a mesma escala.15

Pesquisa recente

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

Soluções relacionadas
IBM watsonx.ai

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.

Conheça o watsonx.ai
Soluções de inteligência artificial

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.

Explore as soluções de IA
Consultoria e serviços em IA

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.

Explore os serviços de IA
Dê o próximo passo

Obtenha acesso completo aos recursos que abrangem o ciclo de vida do desenvolvimento da IA. Produza soluções poderosas de IA com interfaces fáceis de usar, fluxos de trabalhos e acesso a APIs e SDKs padrão do setor.

Explore o watsonx.ai Agende uma demonstração em tempo real
Notas de rodapé

1 Alice Zheng e Amanda Casari. Feature Engineering for Machine Learning [Engenharia de atributos para aprendizado de máquina]. O'Reilly. 2018. Sinan Ozdemir e Divya Susarla. Feature Engineering Made Easy [Engenharia de atributos simplificada]. Packt. 2018.

2 Yoav Goldberg. Neural Network Methods for Natural Language Processing [Métodos de rede neural para processamento de linguagem natural]. Springer. 2022.

3 Suhang Wang, Jiliang Tang e Huan Liu. “Feature Selection” [Seleção de atributos]. Encyclopedia of Machine Learning and Data Mining. Springer. 2017.

4 Sinan Ozdemir. Feature Engineering Bookcamp [Bootcamp de engenharia de atributos]. Manning Publications. 2022. Sinan Ozdemir e Divya Susarla. Feature Engineering Made Easy [Engenharia de atributos simplificada]. Packt. 2018.

5 Max Kuhn e Kjell Johnson. Applied Predictive Modeling [Modelagem preditiva aplicada]. Springer. 2016.

6 Alice Zheng e Amanda Casari. Feature Engineering for Machine Learning [Engenharia de atributos para aprendizado de máquina]. O'Reilly. 2018.

7 Jiawei Han. Data Mining: Concepts and Techniques [Mineração de dados: conceitos e técnicas]. 3ª edição. 2012.

8 Kevin Murphy. Machine Learning: A Probabilistic Perspective [Aprendizado de máquina: uma perspectiva probabilística]. MIT Press. 2012. Soledad Galli. Cookbook de engenharia de recursos do Python [book de engenharia de recursos do Python]. segunda edição. Packt. 2022.

9 Max Kuhn e Kjell Johnson. Applied Predictive Modeling [Modelagem preditiva aplicada]. Springer. 2016.

10 IT Jolliffe. Principal Component Analysis [Análise de componentes principais]. Springer. 2002.

11 Chris Albon. Machine Learning with Python Cookbook [Manual prático de aprendizado de máquina com Python]. O'Reilly. 2018.

12 Alice Zheng e Amanda Casari. Feature Engineering for Machine Learning [Engenharia de atributos para aprendizado de máquina]. O'Reilly. 2018.

13 Zahraa Abdallah, Lan Du e Geoffrey Webb. “Data preparation” [Preparação de dados]. Encyclopedia of Machine Learning and Data Mining. Springer. 2017.

14 Alice Zheng e Amanda Casari. Feature Engineering for Machine Learning [Engenharia de atributos para aprendizado de máquina]. O'Reilly. 2018.

15 Zahraa Abdallah, Lan Du e Geoffrey Webb. “Data preparation” [Preparação de dados]. Encyclopedia of Machine Learning and Data Mining. Springer. 2017. Alice Zheng e Amanda Casari. Feature Engineering for Machine Learning [Engenharia de atributos para aprendizado de máquina]. O'Reilly. 2018.

16 James Kanter e Kalyan Veeramachaneni. “Deep feature synthesis: Towards automating data science endeavors” [Síntese profunda de atributos: rumo à automação da ciência de dados]. 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” [Cognito: engenharia automatizada de atributos para aprendizagem supervisionada]. IEEE 16th International Conference on Data Mining Workshops. 2016. pp. 1304–130. https://ieeexplore.ieee.org/abstract/document/7836821. Franziska Host, Robert Pack e Michael Rieger. “The autofeat Python Library for Automated Feature Engineering and Selection” [A biblioteca Python autofeat para engenharia e seleção automatizadas de atributos]. Joint European Conference on Machine Learning and Knowledge Discovery in Databases. 2019. pp. 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” [Revisão de soluções de ML e AutoML para previsão de dados em séries temporais]. Arquivos de Métodos Computacionais em Engenharia. Vol. 29. 2022. pp. 5297–5311. https://link.springer.com/article/10.1007/s11831-022-09765-0. Sjoerd Boeschoten, Cagatay Catal, Bedir Tekinerdogan, Arjen Lommen e Marco Blokland. "A automação do desenvolvimento de modelos de classificação e a melhoria da qualidade do modelo usando técnicas de engenharia de funcionalidades" [Automação do desenvolvimento de modelos de classificação e melhoria de qualidade usando técnicas de engenharia de funcionalidades]. 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 e Kalyan Veeramachaneni. "AutoML até o Momento e Além: Desafios e Oportunidades" [AutoML até o momento e além: desafios e oportunidades]. ACM Computing Surveys. Vol. 54. Nº 8. 2022. pp. 1-36. https://dl.acm.org/doi/abs/10.1145/3470918.

19 Yoav Goldberg. Neural Network Methods for Natural Language Processing [Métodos de rede neural para processamento de linguagem natural]. 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” [HOBA: nova metodologia de engenharia de atributos para detecção de fraudes de cartão de crédito usando arquitetura de deep-learning]. Information Sciences. Vol. 557. 2021. pp. 302–316. https://www.sciencedirect.com/science/article/abs/pii/S002002551930427X. Daniel Gibert, Jordi Planes, Carles Matheu e Quan Le. “Fusando engenharia de recursos e deep learning: um estudo de caso para classificação de malware” [Furing Feature Engineering and Deep Learning: um estudo de caso para classificação de malware]. Expert Systems with Applications. Vol. 207. 2022. https://www.sciencedirect.com/science/article/pii/S0957417422011927. Ebenezerm Esenogho, Ibomoiye Domor Mienye, Theo Swart, Kehinde Aruleba e George Obaido. “A Neural Network Ensemble With Feature Engineering for Improved Credit Card Fraud Detection” [Um conjunto de rede neural com engenharia de atributos para melhorar a detecção de fraudes de cartões de crédito]. IEEE Access. Vol. 10. 2020. pp. 16400–16407. https://ieeexplore.ieee.org/abstract/document/9698195.