Visão geral da Feature Engineering

A Feature Engineering (ou engenharia de recursos, em tradução livre) é a preparação de dados brutos que devem ser usados nos modelos de Machine Learning (ML) ou aprendizado de máquina. No ML, existem dois tipos de dados: entradas e saídas (inputs e outputs, em inglês). Independentemente do modelo que está sendo usado, as entradas são os dados que alimentam o modelo e as saídas são os resultados.

Na aprendizagem supervisionada, as entradas e saídas são conhecidas. Assim, um humano guia o modelo até que as previsões sejam altamente precisas. Na aprendizagem não supervisionada, as entradas são conhecidas, mas não as saídas. O algoritmo deve identificar padrões nos dados, detectar anomalias e, em seguida, fazer previsões por conta própria. A aprendizagem semi-supervisionada é uma combinação de ambos.

O sucesso do modelo depende da qualidade das entradas. Os dados de entrada são geralmente apresentados em linhas e colunas. Os valores nas colunas são características dos dados, enquanto a Feature Engineering é a preparação das características e do conjunto de dados. Jason Brownlee, Ph.D., cientista de dados e blogueiro bem conhecido, afirma que a preparação afeta diretamente os resultados que o modelo pode alcançar. Criar recursos ideais em qualquer modelo requer conhecimento de domínio e criatividade. Nesse sentido, muitas startups e provedores de nuvem estão automatizando o processo de Feature Engineering.

Um dos problemas que ocorrem ao exportar dados para uma planilha ou arquivo é que alguns campos terão valores ausentes. No entanto, existem ferramentas e técnicas que podem ser usadas para limpar os dados e que sejam consistentes em todos os aspectos. Gerar previsões altamente precisas depende disso. De acordo com a Forbes, a CrowFlower realizou uma pesquisa com cientistas de dados e descobriu que a preparação de dados representa 80% do trabalho.

Fonte: Fortune

Embora a Feature Engineering seja importante na criação do modelo certo, o blogueiro Jason Brownlee afirma que os resultados alcançados em um modelo dependem dos recursos, do modelo, dos dados e do enquadramento (framing) dos objetivos. Em outras palavras, criar um modelo de Machine Learning de alto desempenho depende de escolher o algoritmo certo, a qualidade dos dados, criar os recursos certos e fazer as perguntas certas.

Técnicas da Feature Engineering

Emre Rencberoglu, cientista de dados, listou nove técnicas para a engenharia de recursos ou Feature Engineering. Alguns são melhores do que outros. Em termos de qual usar em um modelo específico depende do caso de uso. Emre incluiu scripts Python para cada técnica em seu post. Tudo o que é necessário é a instalação de NumPy e Pandas.

Ambos são pacotes Python críticos para cientistas de dados. Eles permitem que os desenvolvedores criem objetos de matriz multidimensionais. NumPy (Python Numérico) é uma biblioteca Python que vem repleta de funções matemáticas e fornece computação matemática rápida em arrays e matrizes. Em uma nota lateral, NumPy, Scikit-learn, Matplotlib, TensorFlow, Pandas e outras ferramentas criam o “Python Machine Learning Ecosystem”.

Técnicas de Engenharia de Nove Recursos

1. Imputação: lida com valores ausentes, que são o resultado de erro humano, interrupções de fluxo de dados, etc. Alguns programas deletam linhas com valores ausentes, enquanto outros não aceitam conjuntos de dados com valores ausentes. Emre acredita que é melhor deletar as linhas ou colunas com valores ausentes. Aqui está o código Python que corrige o problema com valores ausentes. Ignore as letras iniciais.

  • threshold = 0.7

#Dropping columns with missing value rate higher than threshold

data = data[data.columns[data.isnull().mean() < threshold]]

#Dropping rows with missing value rate higher than threshold

data = data.loc[data.isnull().mean(axis=1) < threshold]

2. Manipulando Outliers: a melhor maneira de manipular um valor atípico ou outlier (dados separados) é plotá-lo em um gráfico. Dois métodos estatísticos para trabalhar em valores atípicos são desvio padrão e percentis.

3. Binning: é o agrupamento de dados numéricos em bins ou containers, também conhecido como quantização. Útil nos casos em que as colunas têm muitos valores e dificulta a criação de um modelo. Também é útil quando os valores estão fora dos intervalos esperados (distribuição normal). 

4. Log Transform: comumente usada para transformação matemática. Essa técnica é capaz de alterar dados distorcidos para uma distribuição normal. Também minimiza o impacto de outliers, ajudando o modelo a se tornar mais robusto.  

5. Codificação One-Hot: é um método de codificação que atribui 0 e 1 a valores em uma coluna. Os métodos alteram os dados para um formato numérico que pode ser mais fácil para o modelo entender. 

6. Operações de Agrupamento: ou grouping operations, é um método que utiliza Tidy. “Conjuntos de dados Tidy são fáceis de manipular, modelar e visualizar e têm uma estrutura específica: cada variável é uma coluna, cada observação é uma linha e cada tipo de unidade observacional é uma tabela.” Três maneiras diferentes de consolidar colunas são através de alta frequência, tabela dinâmica e codificação one-hot. 

7. Divisão de características: a feature split é uma abordagem que divide um recurso e, às vezes, o torna significativo para ML. Por exemplo, uma coluna que contém o primeiro nome e o sobrenome pode ser dividida em duas colunas. Uma coluna representa o primeiro nome e o segunda o sobrenome. 

8. Escalamento: é um método que usa o cálculo de k-NN e k-Means que pode normalizar os dados em intervalos fixos usando 0 e 1. 

9. Data de extração: abordagem que extrai datas e as normaliza, uma vez que as datas podem ser apresentadas com diferentes formatos como 01/01/1985 ou 01/01/85. 

As nove técnicas descritas acima são específicas para Emre Rencberoglu. Todo cientista de dados tem um método de Feature Engineering. O blogueiro Jason Brownlee tem um olhar diferente. Ele define Feature Engineering da seguinte forma:

Feature Engineering é o processo de transformar dados brutos em características que melhor representam o problema subjacente aos modelos preditivos, resultando em maior precisão do modelo em dados invisíveis.”

Em um post no blog, Jason escreve extensivamente sobre a Feature Engineering, no entanto, vai além do escopo desta discussão. Três destaques interessantes, no entanto, são os seguintes:

  • A Feature Engineering é um problema de representação, onde o modelo de ML deve encontrar uma solução a partir dos conjuntos de dados.
  • Pontuações podem ser atribuídas a características. As características com pontuações mais altas podem ser usadas em um modelo e características com pontuações mais baixas descartadas.
  • Construir as características ou recursos certos exige que o usuário gaste muito tempo revisando dados e aprendendo maneiras de expor os dados ao ML.

Em resumo, Feature Engineering é a preparação de dados brutos que devem ser usados no modelo de Machine Learning. Os dados são geralmente representados em colunas e linhas. As colunas geralmente são as características e a criação dos recursos certos afeta o desempenho (precisão) do modelo. Quatro fatores importantes para melhorar a precisão do modelo são as características, dados, modelo e enquadramento dos objetivos.

A limpeza de dados é uma parte importante da Feature Engineering. Existem várias ferramentas e técnicas disponíveis para ajudar o cientista de dados com o processo. Depois que os dados brutos são exportados para um arquivo, é provável que haja valores ausentes nas colunas. As nove técnicas mencionadas acima identificam os valores ausentes e, dependendo do caso de uso, removem a linha com os valores ausentes. NumPy e Pandas são bibliotecas e ferramentas Python que ajudam na limpeza de dados. Basta um simples script Python, e a ferramenta limpará os dados.

Scroll to Top