Engenharia de características

Origem: Wikipédia, a enciclopédia livre.

A engenharia de características ou extração de características ou descoberta de características é o processo de usar o conhecimento do domínio para extrair características (informações, propriedades, atributos) de dados brutos.[1] A motivação é usar esses recursos extras para melhorar a qualidade dos resultados de um processo de aprendizado de máquina, em comparação com o fornecimento apenas de dados brutos para o processo de aprendizado de máquina.

Processo[editar | editar código-fonte]

O processo de engenharia de características é:[2]

  • Brainstorming ou teste de características[3]
  • Decisão de quais características criar
  • Criação das características
  • Testando o impacto das características identificadas na tarefa
  • Melhoria das características, se necessário
  • Repetição

Características construídas típicas[editar | editar código-fonte]

A lista a seguir[4] fornece algumas maneiras típicas de fabricar características úteis

Relevância[editar | editar código-fonte]

As características variam em importância.[8] Mesmo características relativamente insignificantes podem contribuir para um modelo. A seleção de características pode reduzir o número de características para evitar que um modelo se torne muito específico para o conjunto de dados de treinamento (overfitting).[9]

Explosão[editar | editar código-fonte]

A explosão de características ocorre quando o número de características identificadas cresce de forma inadequada. Causas comuns incluem:

  • Modelos de recursos - a implementação de modelos de características em vez de codificar novas características
  • Combinações de características - combinações que não podem ser representadas por um sistema linear

A explosão de características pode ser limitada por meio de técnicas como: regularização, métodos de kernel e seleção de características.[10]

Automação[editar | editar código-fonte]

A automação da engenharia de características é um tópico de pesquisa que remonta à década de 1990.[11] Desde 2016 estão disponíveis comercialmente softwares de aprendizado de máquina que incorporam engenharia de características automatizada.[12] A literatura acadêmica relacionada pode ser dividida em dois tipos:

  • O aprendizado de árvore de decisão multi-relacional (MRDTL, na sigla em inglês) usa um algoritmo supervisionado que é semelhante a uma árvore de decisão.
  • Deep Feature Synthesis usa métodos mais simples.

Aprendizado de árvore de decisão multi-relacional (MRDTL)[editar | editar código-fonte]

O MRDTL gera características na forma de consultas SQL adicionando cláusulas sucessivamente às consultas.[13] Por exemplo, o algoritmo pode começar com

SELECT COUNT(*) FROM ATOM t1 LEFT JOIN MOLECULE t2 ON t1.mol_id = t2.mol_id GROUP BY t1.mol_id

A consulta pode ser refinada sucessivamente adicionando condições, como "WHERE t1.charge <= -0,392".[14]

No entanto, a maioria dos estudos de MRDTL baseiam as implementações em bancos de dados relacionais, o que resulta em muitas operações redundantes. Essas redundâncias podem ser reduzidas usando técnicas como propagação de id de tupla.[15][16] A eficiência pode ser aumentada usando atualizações incrementais, o que elimina redundâncias.[17]

Implementações de código aberto[editar | editar código-fonte]

Existem várias bibliotecas e ferramentas de código aberto que automatizam a engenharia de características em dados relacionais e séries temporais:

  • featuretools é uma biblioteca Python para transformar séries temporais e dados relacionais em matrizes de recursos para aprendizado de máquina.[18][19][20]
  • OneBM ou One-Button Machine combina transformações de características e seleção de características em dados relacionais com técnicas de seleção de características.[21]
[OneBM] ajuda os cientistas de dados a reduzir o tempo de exploração dos dados permitindo-os experimentar várias ideias em um curto período de tempo. Por outro lado, permite que não especialistas, sem familiaridade com ciência de dados, extraiam valor rapidamente de seus dados com pouco esforço, tempo e custo.[22]
  • A comunidade getML é uma ferramenta de código aberto para engenharia de características automatizada em séries temporais e dados relacionais.[23][24] É implementada em C/C++ com uma interface Python.[24] Demonstrou ser pelo menos 60 vezes mais rápido que tsflex, tsfresh, tsfel, featuretools ou kats.[24]
  • tsfresh é uma biblioteca Python para extração de características em dados de séries temporais.[25] Ela avalia a qualidade das características usando testes de hipóteses.[26]
  • tsflex é uma biblioteca Python de código aberto para extrair características de dados de séries temporais.[27] Apesar de ser 100% escrito em Python, demonstrou ser mais rápida e mais eficiente em termos de memória do que tsfresh, seglearn ou tsfel.[28]
  • seglearn é uma extensão para dados de séries temporais sequenciais e multivariados para a biblioteca em Python scikit-learn.[29]
  • tsfel é um pacote em Python para extração de características em dados de séries temporais.[30]
  • kats é um kit de ferramentas Python para analisar dados de séries temporais.[31]

Síntese profunda de características[editar | editar código-fonte]

O algoritmo de síntese profunda de características (DFS) venceu 615 de 906 equipes humanas em uma competição.[32][33]

Repositório de características[editar | editar código-fonte]

O Feature Store é um repositório onde as características são armazenadas e organizadas com o propósito explícito de serem usadas para treinar modelos (por cientistas de dados) ou fazer previsões (por aplicativos que possuem um modelo treinado). É um local central onde você pode criar ou atualizar grupos de características criadas a partir de várias fontes de dados diferentes ou criar e atualizar novos conjuntos de dados desses grupos de características para treinar modelos ou para uso em aplicativos que não desejam calcular as características, mas apenas recuperá-las quando precisar delas para fazer previsões.[34]

Um repositório de características inclui a capacidade de armazenar código usado para gerar características, aplicar o código a dados brutos e fornecer essas características a modelos mediante solicitação. Características úteis incluem controle de versão de características e políticas que regem as circunstâncias em que as características podem ser usadas.[35]

Os repositórios de características podem ser ferramentas de software independentes ou incorporadas a plataformas de aprendizado de máquina.

Ver também[editar | editar código-fonte]

Referências[editar | editar código-fonte]

  1. «Machine Learning and AI via Brain simulations». Stanford University. Consultado em 1 de agosto de 2019 
  2. «Big Data: Week 3 Video 3 - Feature Engineering». youtube.com 
  3. Jalal, Ahmed Adeeb (1 de janeiro de 2018). «Big data and intelligent software systems». International Journal of Knowledge-based and Intelligent Engineering Systems. 22 (3): 177–193. doi:10.3233/KES-180383 – via content.iospress.com 
  4. «Creating Features». kaggle.com (em inglês). Consultado em 30 de setembro de 2021 
  5. «Category Encoders — Category Encoders 2.2.2 documentation». contrib.scikit-learn.org. Consultado em 1 de outubro de 2021 
  6. T., Dash (janeiro de 2022). «A review of some techniques for inclusion of domain-knowledge into deep neural networks». Scientific Reports. 12 (1): 1040. Bibcode:2022NatSR..12.1040D. arXiv:2107.10295Acessível livremente. doi:10.1038/s41598-021-04590-0 
  7. «SOLID-LIQUID MIXING IN STIRRED TANKS : Modeling, Validation, Design Optimization and Suspension Quality Prediction». 2021 
  8. «Feature Engineering» (PDF). 22 de abril de 2010. Consultado em 12 de novembro de 2015 
  9. «Feature engineering and selection» (PDF). Alexandre Bouchard-Côté. 1 de outubro de 2009. Consultado em 12 de novembro de 2015 
  10. «Feature engineering in Machine Learning» (PDF). Zdenek Zabokrtsky. Consultado em 12 de novembro de 2015. Arquivado do original (PDF) em 4 de março de 2016 
  11. Knobbe, Arno J.; Siebes, Arno; Van Der Wallen, Daniël (1999). «Multi-relational Decision Tree Induction». Principles of Data Mining and Knowledge Discovery. Col: Lecture Notes in Computer Science. 1704. [S.l.: s.n.] pp. 378–383. ISBN 978-3-540-66490-1. doi:10.1007/978-3-540-48247-5_46 
  12. «Its all about the features». Reality AI Blog. Setembro de 2017 
  13. «A Comparative Study Of Multi-Relational Decision Tree Learning Algorithm». CiteSeerX 10.1.1.636.2932Acessível livremente 
  14. Leiva, Hector; Atramentov, Anna; Honavar, Vasant (2002). «Experiments with MRDTL – A Multi-relational Decision Tree Learning Algorithm» (PDF) 
  15. Yin, Xiaoxin; Han, Jiawei; Yang, Jiong; Yu, Philip S. (2004). «CrossMine: Efficient Classification Across Multiple Database Relations». Proceedings. 20th International Conference on Data Engineering. [S.l.: s.n.] pp. 399–410. ISBN 0-7695-2065-0. doi:10.1109/ICDE.2004.1320014 
  16. Frank, Richard; Moser, Flavia; Ester, Martin (2007). «A Method for Multi-relational Classification Using Single and Multi-feature Aggregation Functions». Knowledge Discovery in Databases: PKDD 2007. Col: Lecture Notes in Computer Science. 4702. [S.l.: s.n.] pp. 430–437. ISBN 978-3-540-74975-2. doi:10.1007/978-3-540-74976-9_43 
  17. «How automated feature engineering works - The most efficient feature engineering solution for relational data and time series». Consultado em 21 de novembro de 2019 
  18. «What is Featuretools?». Consultado em 7 de setembro de 2022 
  19. «Featuretools - An open source python framework for automated feature engineering». Consultado em 7 de setembro de 2022 
  20. «github: alteryx/featuretools». Consultado em 7 de setembro de 2022 
  21. Thanh Lam, Hoang; Thiebaut, Johann-Michael (1 de junho de 2017). «One button machine for automating feature engineering in relational databases». arXiv:1706.00327Acessível livremente [cs.DB] 
  22. Thanh Lam, Hoang; Thiebaut, Johann-Michael; Sinn, Mathieu; Chen, Bei; Mai, Tiep; Alkan, Oznur (1 de junho de 2017). «One button machine for automating feature engineering in relational databases». arXiv:1706.00327Acessível livremente [cs.DB] 
  23. «getML documentation». Consultado em 7 de setembro de 2022 
  24. a b c «github: getml/getml-community». Consultado em 7 de setembro de 2022 
  25. «tsfresh documentation». Consultado em 7 de setembro de 2022 
  26. «Time Series FeatuRe Extraction on basis of Scalable Hypothesis tests (tsfresh – A Python package)». Consultado em 7 de setembro de 2022 
  27. «predict-idlab/tsflex». Consultado em 7 de setembro de 2022 
  28. «tsflex: Flexible time series processing & feature extraction». Consultado em 7 de setembro de 2022 
  29. «seglearn user guide». Consultado em 7 de setembro de 2022 
  30. «Welcome to TSFEL documentation!». Consultado em 7 de setembro de 2022 
  31. «github: facebookresearch/Kats». Consultado em 7 de setembro de 2022 
  32. «Automating big-data analysis» 
  33. Kanter, James Max; Veeramachaneni, Kalyan (2015). «Deep Feature Synthesis: Towards Automating Data Science Endeavors». 2015 IEEE International Conference on Data Science and Advanced Analytics (DSAA). [S.l.: s.n.] pp. 1–10. ISBN 978-1-4673-8272-4. doi:10.1109/DSAA.2015.7344858 
  34. «What is a feature store». Consultado em 19 de abril de 2022 
  35. «An Introduction to Feature Stores». Consultado em 15 de abril de 2021 

Leitura adicional[editar | editar código-fonte]

  • Boehmke, Bradley; Greenwell, Brandon (2019). «Feature & Target Engineering». Hands-On Machine Learning with R. [S.l.]: Chapman & Hall. pp. 41–75. ISBN 978-1-138-49568-5 
  • Zheng, Alice; Casari, Amanda (2018). Feature Engineering for Machine Learning: Principles and Techniques for Data Scientists. [S.l.]: O'Reilly. ISBN 978-1-4919-5324-2 
  • Zumel, Nina; Mount, John (2020). «Data Engineering and Data Shaping». Practical Data Science with R 2nd ed. [S.l.]: Manning. pp. 113–160. ISBN 978-1-61729-587-4