Engenharia de características
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
editarO 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
editarA lista a seguir[4] fornece algumas maneiras típicas de fabricar características úteis
- Transformações numéricas (como calcular frações ou mudar a escala)
- Codificação de categorias como one-hot-encoder ou ou target-encoder (para dados categóricos)[5]
- Agrupamento
- Valores agregados por grupos
- Análise de componentes principais (para dados numéricos)
- Construção de características: construir novos parâmetros "físicos", baseados no conhecimento, relevantes para o problema.[6] Por exemplo, em física, a construção de números adimensionais, como número de Reynolds em dinâmica de fluidos, o número de Nusselt em transferência de calor, o número de Arquimedes em sedimentação, a construção de primeiras aproximações da solução, como resistência analítica de soluções de materiais em mecânica, etc.[7]
Relevância
editarAs 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
editarA 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
editarA 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)
editarO 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
editarExistem 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
editarO 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
editarO 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
editarReferências
editar- ↑ «Machine Learning and AI via Brain simulations». Stanford University. Consultado em 1 de agosto de 2019
- ↑ «Big Data: Week 3 Video 3 - Feature Engineering». youtube.com
- ↑ 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
- ↑ «Creating Features». kaggle.com (em inglês). Consultado em 30 de setembro de 2021
- ↑ «Category Encoders — Category Encoders 2.2.2 documentation». contrib.scikit-learn.org. Consultado em 1 de outubro de 2021
- ↑ 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.10295 . doi:10.1038/s41598-021-04590-0
- ↑ «SOLID-LIQUID MIXING IN STIRRED TANKS : Modeling, Validation, Design Optimization and Suspension Quality Prediction». 2021
- ↑ «Feature Engineering» (PDF). 22 de abril de 2010. Consultado em 12 de novembro de 2015
- ↑ «Feature engineering and selection» (PDF). Alexandre Bouchard-Côté. 1 de outubro de 2009. Consultado em 12 de novembro de 2015
- ↑ «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
- ↑ 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
- ↑ «Its all about the features». Reality AI Blog. Setembro de 2017
- ↑ «A Comparative Study Of Multi-Relational Decision Tree Learning Algorithm». CiteSeerX 10.1.1.636.2932
- ↑ Leiva, Hector; Atramentov, Anna; Honavar, Vasant (2002). «Experiments with MRDTL – A Multi-relational Decision Tree Learning Algorithm» (PDF)
- ↑ 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
- ↑ 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
- ↑ «How automated feature engineering works - The most efficient feature engineering solution for relational data and time series». Consultado em 21 de novembro de 2019
- ↑ «What is Featuretools?». Consultado em 7 de setembro de 2022
- ↑ «Featuretools - An open source python framework for automated feature engineering». Consultado em 7 de setembro de 2022
- ↑ «github: alteryx/featuretools». Consultado em 7 de setembro de 2022
- ↑ Thanh Lam, Hoang; Thiebaut, Johann-Michael (1 de junho de 2017). «One button machine for automating feature engineering in relational databases». arXiv:1706.00327 [cs.DB]
- ↑ 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.00327 [cs.DB]
- ↑ «getML documentation». Consultado em 7 de setembro de 2022
- ↑ a b c «github: getml/getml-community». Consultado em 7 de setembro de 2022
- ↑ «tsfresh documentation». Consultado em 7 de setembro de 2022
- ↑ «Time Series FeatuRe Extraction on basis of Scalable Hypothesis tests (tsfresh – A Python package)». Consultado em 7 de setembro de 2022
- ↑ «predict-idlab/tsflex». Consultado em 7 de setembro de 2022
- ↑ «tsflex: Flexible time series processing & feature extraction». Consultado em 7 de setembro de 2022
- ↑ «seglearn user guide». Consultado em 7 de setembro de 2022
- ↑ «Welcome to TSFEL documentation!». Consultado em 7 de setembro de 2022
- ↑ «github: facebookresearch/Kats». Consultado em 7 de setembro de 2022
- ↑ «Automating big-data analysis»
- ↑ 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
- ↑ «What is a feature store». Consultado em 19 de abril de 2022
- ↑ «An Introduction to Feature Stores». Consultado em 15 de abril de 2021
Leitura adicional
editar- 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