Engenharia de Colunas

Uma Arte na Ciência de Dados

10/07/2018

Vamos estudar um pouco sobre esse assunto tão raramente falado em cursos, tutoriais, livros etc. O desafio de se falar de engenharia de colunas é que cada base de dados é um mundo cheio de particularidades e portanto merece seus próprios insights. Mas é por isso que eu digo que a engenharia de colunas é uma Arte na Ciência de Dados: porque é nessa fase que a nossa expressividade matemática ganha asas.

Para notarmos a importância deste processo, basta observarmos o andamento de algumas competições no Kaggle ou de qualquer projeto de médio porte (ou maior) de Ciência de Dados. Salta aos olhos o quão pouco dos esforços é direcionado à modelagem se compararmos com o zelo empreendido na fase de tratamento dos dados. Pode parecer estranho para alguns, mas minha maior recomendação prática para se iniciar na área é conquistar um bom domínio da biblioteca de gerenciamento de dados de sua escolha.

Outra grande lição que aprendi foi a seguinte: não ter uma perspectiva fria a respeito dos dados. Quando vamos encarar um problema que queremos resolver com Aprendizagem de Máquina, precisamos aprender as especificidades da área para que possamos fornecer informações ricas o suficiente para os nossos modelos, pois um modelo só será tão bom quanto a qualidade dos dados que ele processa.

Portanto, o motivo pelo qual eu decidi escrever este post foi elencar algumas possibilidades de engenharia de colunas. Novamente ressalto que cada base de dados é única, mas vejamos se podemos traçar algumas estratégias em linhas gerais.

Coordenadas geográficas

Até onde minha experiência vai, percebo que coordenadas são armazenadas com duas finalidades principais:

Pontos de partida e de chegada

Para problemas em áreas pequenas (ex.: dentro de uma cidade), podemos criar uma coluna nova com a distância Manhattan, excelente para explicitar aproximações de distâncias em áreas urbanas.

Fonte: Wikipedia

Quando o problema envolve áreas maiores, como estados ou países, já precisamos nos preocupar com as distorções causadas pela superfície esférica do planeta. Portanto podemos utilizar a fórmula Haversine (em Python aqui)

Fonte: Wikipedia

Locais de ocorrência

Nesse caso, podemos verificar se é possível observar padrões na manifestação do fenômeno estudado ao longo da superfície. Algo que gosto de fazer é utilizar clusterização e métodos de visualização para validar esta hipótese. Desta forma, podemos criar etiquetas para cada cluster e as utilizarmos em uma coluna categórica.

Seguem alguns links para kernels que eu escrevi e que envolvem clusterização e visualizações.

Timestamps

Marcações temporais são bastante versáteis. A depender do tipo de problema, podemos usar o conjunto de treinamento para respondermos algumas perguntas:

A ideia é transformar estas perguntas em colunas que as respondam para então fazer validações visuais ou estatísticas.

Bases de dados auxiliares

Quando começamos a estudar Data Science, normalmente nos deparamos com bases de dados já mastigadas, resumidas em uma única tabela (ou no máximo duas, treino e teste, com praticamente as mesmas colunas). Mas sejamos realistas: nos desafios cotidianos de um cientista de dados raramente encontramos esta facilidade. Cabe a nós entender os relacionamentos entre as diferentes tabelas e extrairmos os dados necessários para gerarmos a tabela compilada que planejarmos.

Exemplo: risco de crédito

Temos uma tabela de empréstimos ativos (uma linha por empréstimo) e outra tabela contendo todos os empréstimos anteriores de todos os clientes. Queremos saber se os cliente pagarão os empréstimos ativos devidamente. Nesse caso nós podemos enriquecer os dados da tabela principal com dados da tabela auxiliar. Mas como, exatamente? Funções de agregação!

Agrupamos os dados da tabela auxiliar por cliente e aplicamos funções de agregação nas outras colunas: somas, médias, contagens, desvios padrões, máximos, mínimos etc. Claro que não usamos todas as funções de agregação em todas as colunas… deveremos fazer a escolha baseada em conhecimentos específicos da área do problema. Quantos empréstimos o cliente já fez? Qual o seu índice de inadimplência? Este índice vem aumentando ou diminuindo com o tempo? A quantia envolvida no empréstimo atual difere muito da quantia usual dos empréstimos anteriores? E assim por diante…

Conclusão

Como podemos ver, engenharia de colunas é uma área vasta e cheia de possibilidades. Mas não posso deixar de dizer que cada coluna criada deve passar por um rigoroso processo de validação para sabermos se estamos criando redundância ou capturando informação de fato. E em última análise, a nova coluna realmente capacita o modelo escolhido a alcançar uma maior acurácia?

Vale ressaltar que engenharia de colunas depende bastante da experiência do cientista de dados. A prática é fundamental. Uma leitura como essa pode ser esclarecedora, mas nada substitui aquelas horas quebrando cabeça para melhorar a acurácia dos seus modelos.