• Elaine Figueiredo

Feature Engineering - A engenharia de recursos – Pré modelagem ou Pré-Processamento


Feature engineering é o termo utilizado para definir um conjunto de técnicas utilizado na criação e manipulação de features (recursos), tendo como objetivo desenvolver um bom modelo de aprendizado de máquina. Essa etapa como pré-processamento de dados, embora muitos entendam o feature engineering faça parte dele. Essa é uma das fases mais importantes do processo de construção de um modelo preditivo.

Porém, feature engineering não se trata apenas de selecionar bons recursos para um modelo. Esse processo também abrange a transformação matemática nas features existentes para extrair o máximo potencial dos dados e criação de novas features. Neste artigo vou trazer as técnicas mais utilizadas.

O que é feature engineering?

Praticamente todos os algoritmos de Aprendizado de Máquina possuem entradas e saídas. As entradas são formadas por colunas de dados estruturados, onde cada coluna recebe o nome de feature, também conhecido como variáveis independentes ou atributos. Essas features podem ser palavras, pedaços de informação de uma imagem, etc. Os modelos de aprendizado de máquina utilizam esses recursos para classificar as informações. Por exemplo, sedentarismo e fator hereditário são variáveis independentes para quando se quer prever se alguém vai ter câncer ou não.

As saídas, por sua vez, são chamadas de variáveis dependentes ou classe, e essa é a variável que estamos tentando prever. O nosso resultado pode ser 0 e 1 correspondendo a 'Não' e 'Sim' respectivamente, que responde a uma pergunta como: "Fulano é bom pagador?" ou a probabilidade de alguém comprar um produto ou não.

Utilizando o conhecimento da área de negócio que estamos analisando, procuramos descobrir quais são as características mais importantes dos dados e, então, os preparamos para entrar em um modelo de aprendizado de máquina. Quanto maior a correlação entre uma feature e a variável que se quer prever, mais importante essa feature é.

Alguns cuidados: se uma feature distância é importante e ela está em quilômetros, também podemos considerar inserí-la em metros no modelo. Porém, isso vai fazer com que o modelo considere essa informação como sendo mais relevante do que realmente é, já que ele a recebeu duas vezes. Portanto, o feature engineering não se trata apenas de selecionar boas features, esse processo também abrange a transformação matemática nas features existentes para extrair o máximo potencial dos dados e criação de novas features. Criar novas features a partir das existentes é ainda mais importante quando temos poucos dados, pois modelos que utilizam poucas instâncias tendem a realizar overfiting.

Overfitting: quando não se consegue ter boa assertividade com os dados novos por ter treinado a rede com os mesmos dados de treino, digamos que os dados tenham ficado "viciados", sempre com os mesmos parâmetros de entrada. Por exemplo, pense que você está estudando para uma prova, e você estuda somente se baseando no resumo que lhe foi dado. Então, na hora da prova, aparecem questões diferentes daquelas do teste e provavelmente você não vai saber resolver. O mesmo acontece com os modelos de Aprendizado de Máquina. É como se os modelos tivessem "decorado" certas informações e quando algo diferente daquilo aparece, a máquina não sabe o que fazer.


Por que utilizar feature engineering?

Pense que você vai fazer sua receita favorita. Você vai precisar dos ingredientes, digamos: tomate, alho, carne e macarrão. Então, você coloca tudo dentro da panela: os tomates e o alho inteiros e com casca, a carne crua e a massa com o plástico. Com certeza o resultado final vai passar longe de um macarrão à bolonhesa. Você vai precisar descascar, cortar, cozinhar a carne, retirar a massa do pacote... Enfim realizar o passo a passo e aprimorar-se ao longo do tempo

O mesmo acontece com os recursos: eles precisam ser pré-processados para colocá-los no modelo preditivo e obter um bom resultado final. Seu modelo não vai pegar os dados cheio de valores faltantes, variáveis duplicadas, inconsistências e resolver tudo em um passe de mágica. Não existe mágica.

Outro motivo para se preocupar é que conforme o tempo passa, tendemos a ter mais dados disponíveis, o que torna a seleção de quais desses dados são mais relevantes ainda mais trabalhosa e, ao mesmo tempo, cada vez mais importante, pois vai ser cada vez mais fácil selecionar features erradas em um mar de dados.

Algumas técnicas de feature engineering

Criação de feature

A primeira coisa a se fazer ao começar um processo de feature engineering é entender todas as variáveis preditoras importantes que precisam ser incluídas no modelo.

Depois, você deve se fazer as seguintes perguntas: "Eu tenho esses dados?" ,"Consigo criar esses dados?".

Um dos erros mais comuns é focar nos dados disponíveis ao invés de se questionar quais dados são necessários. Esse equívoco faz com que variáveis essenciais para o negócio sejam deixadas de lado, pois não existem nos dados.

Se muitas dessas variáveis essenciais não estiverem disponíveis para processamento, vale voltar para a etapa de coleta. Criar novas features pode trazer à tona informações que são de extrema importância, mas não estavam explícitas nos dados. Por exemplo, podemos ter a data em que alguém começou a usar um serviço mas o que realmente precisamos é apenas do mês para entender se há alguma sazonalidade. A partir da feature data é possível criar uma nova contendo apenas o mês.

Transformações de features

A transformação de features leva em consideração o tipo de dados e sua compatibilidade com o modelo e também se o tipo da variável passa a maior quantidade de informação possível. Algumas técnicas de transformação mais comuns são:

Missing values: Valores ausentes na base de dados podem ocorrer por vários motivos, como questões de permissões, erros humanos, erros de código, etc. A maioria dos algoritmos de aprendizado de máquina não aceitam conjuntos de dados com valores ausentes. Há um consenso de que se uma feature tiver mais que 20% dos dados faltantes em sua coluna, é melhor não utilizá-la e entender porque esses valores estão faltando. Caso uma feature tenha até 20% dos valores faltando, preencher esses dados com a média ou a mediana da variável. Quando for um valor categórico preencher com o valor categórico médio. E quando se tem menos de 2% dos dados de uma feature faltando, o mais indicado é deletar esses registros, pois como são poucos, sua base de dados não vai diminuir muito, além de poder causar outros problemas.

Manipulação de outliers: Outliers são valores fora do "padrão" encontrados nos dados. Ao identificar um outlier é sempre identificar o motivo de ter ocorrido, pois ele pode ser uma boa oportunidade de negócio. No entanto, os outliers também podem ser erros no conjunto de dados. Por exemplo: imagine o valor 1971 na coluna 'idade', provavelmente esse era o ano de nascimento de alguém e foi inserido de forma errada. Uma forma muito boa de identificar os outliers é através do gráfico boxplot.

Binning: Essa técnica é geralmente utilizada em dados numéricos e tem objetivo de separar os dados em conjuntos ou intervalos. Considerando nosso exemplo, poderíamos transformar o preço das casas em categorias como Alto, Médio e Baixo. O binning pode reduzir o desempenho do modelo mas vai evitar bastante overfitting, então é preciso fazer um balanço entre o quanto você vai perder de desempenho versus o quanto você vai reduzir de overfitting. Sem contar que você pode acabar perdendo muita informação nesse processo, então, novamente, é preciso conhecer muito a área de negócios para entender se o binning vai valer a pena.

One-hot encoding: é usado para transformar variáveis categóricas em colunas e atribuir valores 0 e 1 para os valores dessas colunas. O 0 é usado para quando um registro não possui aquele valor, e 1 para quando ele tem aquele valor. O objetivo é deixar os dados mais entendíveis para os algoritmos, já que as máquinas entendem 0's e 1's.

Grouping: Podemos realizar o agrupamento de variáveis categóricas e numéricas. No agrupamento numérico são utilizadas funções de média e soma dos casos, e no agrupamento categórico buscamos selecionar o rótulo de maior frequência. O objetivo do agrupamento é juntar linhas que estejam espalhadas e usar esse agrupamento para visualizar informações de média e mediana de outras features em relação a esse agrupamento.

Seleção de feature

Ao final da transformação, é preciso escolher quais delas vão para o modelo, pois às vezes possuímos recursos demais e o modelo de previsão não vai conseguir aguentar todas as variáveis possíveis, ou o tempo de treinamento do modelo vai aumentar muito.

Passar todas as features para o modelo pode fazer ele considerar relações que não existem e, até mesmo, considerar uma feature como mais importante do que ela realmente é. Por exemplo, se você tem uma grande quantidade de dados, algumas coincidências podem ter ocorrido e ficaram guardadas nos dados, e a máquina pode acabar considerando isso como uma regra com baixa correlação.

Essa etapa é um pouco exaustiva e manual, mas vai ser preciso testar várias combinações de features e medir qual gera a maior acurácia do modelo preditivo.

O processo de feature engineering é um dos mais importantes de toda a construção do aprendizado de máquina. Quanto melhor forem seus dados de entrada, melhor vai ser o resultado do seu modelo. Há outras técnicas de feature engineering além das abordadas aqui e o uso delas vai depender das características dos seus dados. Existem também alguns estudos para automatizar o processo de feature engineering a fim de reduzir o tempo de desenvolvimento de um projeto de aprendizado de máquina, bem como a necessidade de intervenção humana.


0 visualização0 comentário