• Nenhum resultado encontrado

FEATURE ENGINEERING (ENGENHARIA DE RECURSOS) Dentro do universo de Inteligência Artificial e Aprendizado de

No documento Lucas de Souza Silva (páginas 41-47)

2 FUNDAMENTAÇÃO TEÓRICA

2.3 FEATURE ENGINEERING (ENGENHARIA DE RECURSOS) Dentro do universo de Inteligência Artificial e Aprendizado de

Máquina, uma feature (recurso), é tipicamente uma representação específica sobre determinados dados brutos, sendo um atributo mensurável individual, geralmente representando por uma coluna em um conjunto de dados, e finalmente, conhecido também como variável.

Considerando conjunto de dados bidimensional genérico, mostrado na Figura 3, cada observação é representada por uma linha e cada feature por uma coluna. Assim, cada linha, ou instância, normalmente indica um vetor de diferentes tipos de recursos e, por sua vez, todo o conjunto de recursos, para todas as observações, forma uma matriz bidimensional de recursos, também conhecida como feature matrix. Algoritmos de Aprendizado de Máquinas são capazes de trabalhar com essas matrizes, onde a maioria das técnicas de Feature Engineering lida com a conversão de dados brutos em alguma representação numérica, que pode facilmente ser compreendida por esses algoritmos.

Figura 3 - Conjunto de dados bidimensional genérico

Fonte: Elaborado pelo autor (2019).

As features podem ser de dois tipos principais baseados no conjunto de dados. Os recursos brutos inerentes são obtidos diretamente do conjunto de dados sem manipulação ou engenharia extra de dados. Já os recursos derivados geralmente são obtidos do processo de Feature Engineering, onde se extrai features de atributos de dados existentes. Um exemplo simples seria a criação de um novo recurso "Idade" de um conjunto de dados de funcionários contendo "Data de nascimento", subtraindo apenas a data de nascimento da data atual (SARKAR, 2018). Neste sentido, Feature Engineering é a ciência de extrair mais informações dos dados brutos existentes. A Figura 4, adaptada de Lam et al. (2017), mostra cinco etapas básicas em um projeto de análise preditiva. De acordo com os autores, entre essas etapas, a Feature Engineering é uma das tarefas mais importantes e que requer mais tempo, vez que exige um alto nível de compreensão e domínio em exploração de dados, preparando as entradas de dados corretamente para os modelos de Aprendizado de Máquina, e, desta maneira, influenciando diretamente no desempenho destes modelos.

Figura 4 - Cinco etapas básicas em um projeto de análise preditiva

O exemplo a seguir ilustra de forma básica e prática o processo de geração de uma feature a partir de determinado conjunto de dados. Considerando uma pequena amostra de dados, organizados e apresentados na Tabela 2, é possível observar três colunas de features com informações distintas.

Tabela 2 - Conjunto de dados genérico

ITEM_ID ITEM_PESO ITEM_PREÇO

F0157 9.3 249.81

F0158 5.9 48.27

F0159 17.5 141.62

Fonte: Elaborado pelo autor (2019).

Como dito anteriormente, o processo de Feature Engineering é justamente utilizar os dados brutos para criar informações úteis. A Tabela 3 ilustra de forma básica este resultado obtido de forma manual.

Tabela 3 - Processo de Feature Engineering

ID ITEM_PESO ITEM_PREÇO PREÇO_PESO

F01 9.3 249.81 26.86

F02 5.9 48.27 8.15

F03 17.5 141.62 8.09

Fonte: Elaborado pelo autor (2019).

De maneira geral, o processo de Feature Engineering é um exercício complexo, realizado iterativamente com tentativa e erro, e impulsionado pelo conhecimento que o modelador desenvolveu na respectiva área de pesquisa ao longo do tempo (KHURANA et al., 2016). Os autores mencionam em seu trabalho, que encontrar recursos adequados é um ingrediente crucial na aprendizagem de um bom modelo preditivo. Kanter e Veeramachaneni (2015) salientam que transformar dados brutos em recursos geralmente é a parte do processo que mais envolve seres humanos, porque é conduzido por intuição. Embora desenvolvimentos recentes em Deep Learning e processamento automatizado de imagens, texto e sinais, têm proporcionado significativos avanços no processo de automação em Feature Engineering, a criação de recursos para dados de comportamentos relacionais e humanos, permanece iterativo, orientado por intuição humana, desafiador e, portanto, demorado.

Recentemente, trabalhos sobre a automatização dos processos de Feature Engineering para aplicação em algoritmos de Aprendizado de Máquina vêm sendo apresentados na literatura. Nas competições públicas mais recentes em Ciência de Dados, a grande maioria dos cientistas reportou que a maior parte do tempo gasto durante a competição foi justamente nesta etapa, isto é, em trabalhar com dados brutos, preparando-os para a entrada nos modelos preditivos (LAM et al., 2017). Os autores ainda mencionam que a automação em Feature Engineering pode ajudar reduzindo significativamente a carga de trabalho dos cientistas de dados, permitindo-lhes “errar” muitas ideias para melhorar os resultados da previsão com menos esforços significativos.

Diferente da automação e seleção de modelos preditivos, onde a literatura é muito rica, apenas alguns trabalhos foram propostos na área de automação no processo de Feature Engineering. A principal razão é que esta área é, ao mesmo tempo, geral e específica na esfera do conhecimento de dados. Além disso, um conhecimento profundo no processo de procurar padrões relevantes em dados é requerido quando trata-se de Feature Engineering. Trabalhos recentes mostram que, para um tipo específico de problema e dados, como aqueles presentes em bancos de dados relacionais, a automação de recursos é viável (KANTER; VEERAMACHANENI, 2015).

Uma maneira de automatizar o processo de Feature Engineering, que vem sendo empregado atualmente, é gerar muitos recursos candidatos, selecionando o melhor por pequenos ganhos quando comparados com recursos de classe parecida (DOMINGOS, 2012). No entanto, é importante manter em mente que recursos que num primeiro momento podem parecer irrelevantes isoladamente, podem se mostrar relevantes quando em combinação com outros. Além disso, Domingos (2012) também lembra que gerar um grande número de recursos com o objetivo de encontrar quais deles são úteis em combinações pode consumir uma grande quantidade de tempo num projeto de análise preditiva, ou até mesmo o chamado overfitting (sobre ajuste) fazendo com que o modelo se torne ineficaz para prever novos resultados.

Data Science Machine (DSM) foi o primeiro sistema a automatizar o processo de geração de features a partir de um banco de dados de várias tabelas (KANTER; VEERAMACHANENI, 2015). Essa abordagem de Feature Engineering é baseada na suposição de que, para um determinado banco de dados relacional, os cientistas de dados geralmente pesquisam por features via: i) geração de consultas em Structured Query Language (SQL) para coletá-los, e ii) transformação dos dados em features. O sistema DSM objetiva automatizar ambas as

etapas criando um gráfico de entidades e da geração automática de consultas em SQL para unir as tabelas de dados ao longo de diferentes caminhos do gráfico de entidades. Na sequência, o algoritmo converte os resultados coletados em features usando um conjunto predefinido de funções de agregação simples (LAM et al., 2017).

Cognito é outro sistema que automatiza o processo de Feature Engineering, mas a partir de uma única tabela de um banco de dados. Em cada etapa do processo, o sistema Cognito aplica um conjunto de transformações matemáticas recursivamente nas colunas da tabela selecionada para obter novas features. Ao fazer isso, o número de geração de features torna-se exponencial em relação ao número de etapas. Na sequência, um processo de Feature Selection, detalhado posteriormente nesta pesquisa, é aplicado de forma a reduzir features redundantes (KHURANA et al., 2016).

Nesta pesquisa, o processo de Feature Engineering foi realizado com o uso da ferramenta Featuretools (FEATURETOOLS, 2019), uma biblioteca de código aberta para a execução da criação de novas features. 2.4 FEATURE PROCESSING (PROCESSAMENTO DE RECURSOS)

Em posse de determinados dados brutos, e após a criação de novas features utilizando estes dados e visando o modelo preditivo, faz-se necessária a etapa de pré-processamento. Tal etapa tem por objetivo padronizar qualquer que sejam as entradas para a futura alimentação de um algoritmo de Aprendizado de Máquina. Assim, essa padronização influencia diretamente no resultado da predição, uma vez que os recursos devem contar com informações precisas, sem erros de digitação, indexação, e codificação, por exemplo, para que possam ser contabilizados de forma correta nas estatísticas. A padronização de um conjunto de dados é um requisito comum entre os algoritmos de Aprendizado de Máquina: eles podem se comportar mal se os recursos individuais não forem semelhantes aos dados padrão, distribuídos normalmente. Uma dificuldade é que algoritmos diferentes fazem suposições diferentes sobre os mesmos dados e podem exigir transformações diferentes. Além disso, em alguns casos, é comum que mesmo seguindo todas as regras durante a etapa de preparação dos dados, os algoritmos podem oferecer melhores resultados sem o pré- processamento.

Esse processamento de features para formar pontos de dados mais generalizáveis para posteriormente passar pelo processo de aprendizado, pode fornecer melhorias significativas aos modelos preditivos. Alguns

outros exemplos comuns de Feature Processing, comuns de serem aplicados em projetos de análise preditiva, são listados a seguir:

a) Imputação: substituição de dados ausentes ou inválidos por valores mais significativos. Uma estratégia comum usada para imputar valores ausentes é substituir os valores ausentes pelo valor médio ou mediano. É importante entender os dados antes de escolher uma estratégia para substituir os valores ausentes.

b) Formação de produtos cartesianos de uma variável com outra. Por exemplo, caso se possua duas variáveis, como densidade populacional (urbana, suburbana, rural) e estado (Rio de Janeiro, São Paulo, Santa Catarina), pode haver informações úteis nas características formadas por um produto cartesiano dessas duas variáveis, resultando em novos recursos.

c) Transformações não lineares, como categorizar variáveis numéricas em categorias. Em muitos casos, o relacionamento entre um recurso numérico e o chamado alvo não é linear (o valor do recurso não aumenta ou diminui monotonicamente com o destino). Nesses casos, pode ser útil agrupar o recurso numérico em recursos categóricos que represente diferentes intervalos do recurso numérico. Cada recurso categórico (agrupamento) pode ser então, modelado considerando que este tem seu próprio relacionamento linear com o destino. Por exemplo, dado que o modelador sabe que o recurso numérico contínuo de idade não está linearmente correlacionado com a probabilidade de compra de um livro, ele pode optar por agrupar este dado em recursos categóricos, capturando o relacionamento com o destino de modo mais preciso. O número ideal de agrupamentos de uma variável numérica depende das características da variável e de seu relacionamento com o destino; a melhor formar de determinar isso é por meio de experimentação.

d) Recursos específicos de domínio (por exemplo, tamanho, amplitude e altura são variáveis separadas; o modelador pode criar um recurso de volume como produto dessas três variáveis).

e) Recursos específicos da variável. Alguns tipos de variáveis, como processamento de linguagem natural, recursos que capturam a estrutura de uma página da Web ou a estrutura de uma frase, têm formas genéricas de processamento que ajudam a extrair estrutura e contexto.

Nesta pesquisa, foi utilizado a biblioteca de código aberto em linguagem Python de pré-processamento, scikit-learn (SCIKIT-LEARN, 2019).

No documento Lucas de Souza Silva (páginas 41-47)