Engenharia de features e dados: como ter um aprendizado de máquina eficiente

A engenharia de features é o que vai ensinar como ter um aprendizado de máquina eficiente. Assim, de forma bem direta. E é dessa forma direta que faço a seguinte pergunta: quanto mais features, melhor? 

Antes de dar um overview sobre a engenharia de features, é importante entendermos algumas definições. Suponhamos que se tenha dados brutos tabulados – ou em um banco de dados – para servir de input para uma análise de um treinamento de aprendizado. 

Estes dados tabulados seriam compostos por linhas e colunas, onde as colunas representariam os atributos, e as linhas as instâncias – ou seja, a quantidade de exemplos para o conjunto de atributos. 

Os atributos portanto, representam a propriedade de um objeto e definem um valor específico para uma certa instância. Só que nem todos os atributos devem estar presentes nesse conjunto de dados, ou dataset.

Por exemplo: para se fazer uma previsão de ocorrência de acidente de trânsito, baseada nos atributos dos clientes, podemos perceber que os atributos CPF e RG não fazem diferença, e na verdade podem até atrapalhar a construção do aprendizado de uma rede neural. Neste sentido, utilizamos a palavra feature para definir um atributo que tenha mais importância e mais significado. 

Então, respondendo a pergunta acima: não necessariamente. Mais features precisam de maior monitoramento e com isso mais engenharia.

É e dessa forma que começamos a falar sobre o processo de engenharia de features, que tem por objetivo filtrar ainda mais essas features. Existem casos em que necessitamos expandir, selecionar ou excluir algumas delas. Como a feature idade, que pode ser excluída se tivermos a feature data de nascimento, já que elas são redundantes e o modelo pode não convergir tão bem. 

Agora, vamos por partes. Separei aqui os principais tópicos para discutirmos sobre engenharia de features e dados.

O que são features?

Como já falamos acima, Features ou, em português, características, são fatores utilizados para definir um atributo que tenha mais importância e significado. Podemos ter como exemplo um conjunto de dados utilizado para treinar um sistema de um veículo autônomo, esse conjunto é composto por informações como: 

  • Aceleração;

  • Distância do objeto da frente;

  • Combustível;

  • Temperatura;

  • Tempo de viagem.

 

Cada uma dessas informações é chamada de feature. Para ficar mais claro, conversei com o Gestor do Núcleo de Tecnologia da Informação da Universidade Federal de Santa Maria, unidade de Palmeira das Missões, Heitor Scalco Neto e ele citou o seguinte exemplo:

Imagine uma planilha do Microsoft Excel (Figura 1): no topo há um cabeçalho, informando qual tipo de informação está contida em cada coluna. Sendo assim, cada coluna representa uma feature.

Figura 1: Exemplo de base de dados.

Então o que é a engenharia de features?

O trabalho de engenharia de features consiste em elencar as características mais importantes dos dados e, dependendo do modelo utilizado, normalizar os valores contidos na base de dados. 

A normalização de dados geralmente ocorre com a definição dos valores máximos e mínimos encontrados na base de dados, a partir desse momento é realizado o cálculo para que todos os valores fiquem entre 0 e 1. Para entender melhor, seguimos com os exemplos citados por Heitor:

Vamos iniciar com a feature “Irradiação Solar” (Figura 2), podemos perceber que o maior valor encontrado é “466.375”, que será representado por 1, e o menor valor é “40.775”, que será representado por 0. Na Figura 3 podemos ver a feature “Irradiação Solar” normalizada.

 

Figura 2: Base de dados, obtendo o maior e o menor valor de uma feature.

 

Figura 3: Feature “Irradiação Solar” normalizada.

 

Por que a engenharia de features é importante para um aprendizado eficiente de máquina?

O processo de engenharia de features é a fase mais importante e trabalhosa quando se deseja ter um aprendizado de máquina eficiente. Se, por exemplo, a modelagem estiver razoável, porém, com excelente tratamento dos dados, teremos um melhor resultado do que com uma modelagem excelente e dados com uma preparação mais pobre, seja por inconsistência, ruídos, dados faltantes ou até mesmo pouca quantidade de informação.

Podemos dizer então que é um processo iterativo para transformar dados brutos em características que melhor representam o problema.  Um caso muito comum disso são os modelos de deep learning que recebem dados brutos e internamente já identificam as melhores features como as bordas, linhas e texturas em uma classificação de imagem. 

No processo de engenharia de features, temos primeiro a fase de brainstorming, depois a criação, seleção e avaliação. E esse processo funciona de forma cíclica. 

Na fase de brainstorming, entendemos o domínio do problema, reunindo informações para descobrirmos quais poderiam ser as minhas features. Na fase de criação produzimos as features. Na etapa de seleção podemos remover ou ainda expandir algumas features e na fase de avaliação realiza-se uma estimativa da qualidade do modelo, utilizando as features selecionadas.

Algumas técnicas e algoritmo podem ser usados para a aplicação do processo de engenharia de features. Após a fase de brainstorming, e para a fase de criação, pode se utilizar as técnicas de feature extraction ou feature construction. 

Aqui se trabalha com a etapa de extração do que é mais importante em observações muito volumosas, como mídias. Para esses casos é realizada frequentemente uma redução de dimensionalidade. Essa construção pode ser manual, ou até utilizando a deep learning, numa técnica chamada feature learning. 

Após a etapa de criação pode-se utilizar a técnica de feature importance para pontuar as melhores features, e assim mantê-las ou quebrá-las em mais. Aqui os algoritmos de árvore de decisão, como random forest e gradient boosting machine podem ser utilizados. 

As técnicas de Machine Learning têm uma certa sensibilidade ao aprender o padrão dos dados. Desta forma, o processo de engenharia de features é extremamente importante, pois retira o possível ruído dos dados. Segundo Heitor Scalco Neto, outro processo importante de engenharia de features é a escolha das características mais relevantes. 

“Em vários casos, algumas features ajudam o estabelecimento de padrões, porém, em outros, a utilização de determinadas features acabam atrapalhando o processo de aprendizagem. Isso acontece porque existe um aumento da complexidade do aprendizado e a necessidade de mais amostras de dados, a cada feature adicionada”, destaca. Por isso, deve-se realizar um estudo da importância de cada feature antes de utilizá-la no treinamento da técnica de Machine Learning.

Exemplos sobre o uso de dados na engenharia de features

Podemos dividir os dados em qualitativos e quantitativos. Dados qualitativos podem ser nomes de categorias, clientes, produtos ou qualquer dado descrito com uma ou mais palavras. 

Eles ainda podem ser separados em nominais – quando não se tem ordem, por exemplo idiomas ou cores – e ordinais – quando existe uma ordenação, como por exemplo o nível de escolaridade.

Já os dados quantitativos são expressos por numerais, geralmente são features que possuem um valor de distância entre si, por exemplo: tensão elétrica, quantidade de casos de determinada situação, área construída, dimensões e etc.

São números que podem ser discretos – geralmente definem quantidade de algo – ou contínuos – podendo ser ainda em intervalos como range de temperatura, ou em proporções como peso, altura, comprimento.

Esses dados são importantes porque evitam problemas com cálculos estatísticos. Pense num caso de se atribuir o valor (1) para graduação, (2) para mestrado e (3) para doutorado. Isso não quer dizer que doutorado é três vezes a graduação. 

Diversas técnicas de estatísticas são utilizadas nesta fase de pré-treinamento, sendo a medida do coeficiente de correlação uma das mais frequentes.

Gostou do artigo e quer saber mais? Envie uma mensagem para a gente e saiba mais sobre como levar essa metodologia de trabalho para a sua empresa.

Compartilhe o artigo

Talvez possa te interessar

Fale com a Viceri-Seidor.

Leve a revolução digital para a sua empresa hoje mesmo.

Onde estamos.

São Paulo
Belo Horizonte
Rio de Janeiro
Porto Alegre
Vila Velha
Goiânia
Jundiaí
Recife
Ribeirão Preto
Florianópolis
Curitiba

Tem alguma dúvida?

Entregamos muito mais que soluções tecnológicas, nós entregamos o valor real que o seu negócio precisa em toda nossa relação.

Faça parte.

Nós movemos o mundo junto com nossos talentos. Venha ser parte dessa transformação.