Feature Engineering: Técnicas para lidar com dados faltantes em um projeto de ciência de dados.

Tutorial explicando tipos de técnicas para lidar com dados faltantes em bases de dados para treinamento e validação de um modelo de machine learning.

Clébio de Oliveira Júnior
Data Hackers

--

Photo by Ehimetalor Akhere Unuabona on Unsplash

Por diversas vezes durante um projeto de ciência de dados, quando os dados são adquiridos para modelagem, as bases de dados podem apresentar diversos problemas. Dentre eles, um dos mais comuns é a presença de valores faltantes. O valor faltante, ou NaN (do inglês Not a Number), pode parecer um problema muito complicado à primeira vista. Contudo, ele só precisa ser entendido e lidado como qualquer outro tipo de dado. Para apresentar as técnicas relacionadas a dados ausentes e como elas funcionam, nesta postagem pretendo explicar os tipos de valores faltantes (aleatoriamente faltante ou não aleatoriamente faltante) e as diferentes técnicas para obter uma base de dados completa para modelagem.

Todas as técnicas aqui apresentadas precisam ser aplicadas depois que os dados forem divididos em treino e teste. Isso deve ser feito para evitar que haja possíveis vazamentos de informação quando for feito o cálculo da média, mediana ou moda no conjunto de dados completo.

Além disso, neste post há informações relacionadas a média, mediana, moda e como a variável está distribuída. A explicação sobre tais assuntos fica fora do escopo deste post. Por isso que estou deixando links sobre a Moda, Média e Mediana e Assimetria e Curtose para complementação.

Técnicas para Lidar com Dados Faltantes

Um dado faltante é algo comum no cotidiano de um cientista de dados. Eles podem entrar na base de dados por diferentes motivos: erro na inserção manual, erro de digitação ou o dado pode simplesmente não existir. Abaixo são descritos de forma resumida os tipos de dados faltantes e posteriormente são apresentadas as diferentes técnicas com imagens para ilustrar como elas funcionam.

  • Dados faltantes completamente ao acaso (MCAR — do inglês Missing Completely at Random) são dados que não possuem nenhuma dependência em relação a dados observados ou não observados. Este tipo de dado faltante não apresenta um viés, porém é considerado muitas vezes irrealista.
  • Dados faltantes ao acaso (MAR — do inglês Missing at Random) são dados faltantes que ocorrem de maneira randômica, mas podemos associar a sua falta a dados observados e não aos não observados.
  • Dados faltantes não ao acaso (MNAR — do inglês Missing not at Random) são dados faltantes não randômicos que estão relacionados sistematicamente a dados não observados, ou seja, a falta dos dados está vinculada a eventos e fatores que não podem ser mensurados.

Remoção dos Dados Faltantes

Uma das formas mais simples de lidar com NaN é optando pela remoção dos mesmos. Este método é aconselhado para conjuntos de dados que possuem 5% ou menos de dados faltantes e que sejam MCAR. Partindo desse pressuposto, a remoção deles seria como remover aleatoriamente alguns dados do dataset, mantendo assim a distribuição original das variáveis. De maneira resumida, com esta técnica só serão mantidas as linhas que apresentarem dados completos. A Figura 1 representa como o conjunto de dados fica posteriormente a aplicação desta técnica. Pelo fato da base de dados possuir somente 3 linhas completas, somente estas foram mantidas.

Figura 1 — Figura representando o método de remoção de dados faltantes do conjunto de dados. Só permaneceram as três linhas que estão completas, portanto diminuindo a quantidade de amostras que a base de dados possui.

A remoção de NaN pode trazer vantagens e desvantagens. A vantegem é que ela é uma técnica simples e fácil de ser aplicada e a distribuição dos dados é mantida, caso a falta do dado seja MCAR. Como desvantagem tem a possibilidade do conjunto de dados diminuir se os dados faltantes forem abundantes, além da perda de informação, pois serão removidas linhas que possuem dados.

Imputação pela Média ou Mediana

Ao invés de remover os dados faltantes, por que não imputar valores? Um método muito comum para imputação é a inserção da média ou mediana. Ao assumir que os dados são aleatoriamente ausentes, a média ou a mediana podem estar próximas dos valores originais. Porém para este método de imputação é preciso levar em consideração se a distribuição é simétrica (distribuição normal ou gaussina) ou assimétrica (apresenta algum tipo de desvio como apresentado na Figura 2).

Figura 2 — A figura exemplifica uma distribuição de dados que apresenta um desvio para a direita. Nela está representado como a moda, mediana e a média podem ser influênciadas pelo desvio apresentado na distribuição.

Se a distribuição for normal tanto a média quanto a mediana coincidem, portanto pode ser usada qualquer uma das duas. Contudo para casos em que a distribuição é assimétrica (há um desvio dos dados para a esquerda ou para a direita), a média acaba sofrendo mais com os desvios da distribuição como apresentado na Figura 2. Por isso que a mediana é a mais recomendada, pois ela não sofre tanto com o desvio apresentado pela distribuição. Na Figura 3 é exemplificado o uso da média para substituição dos valores faltantes na tabela da esquerda.

Figura 3 — Figura representando a inserção do valor da média nas variáveis numéricas v2 e v3. Os valores inseridos são 30 e 108,2 que são destacados pela cor vermelha.

Algumas vantagens e desvantagens são também encontradas neste método. Esta técnica é uma maneira rápida de conseguir lidar com os valores faltantes e pode ser integrado facilmente durante o deploy do modelo. Porém se a quantidade de NaN for grande pode haver distorções da distribuição original da variável, por esse motivo que é aconselhável utilizar em variáveis que apresentem de 5% a 10% de valores faltantes.

Imputação da Categoria mais Frequente

Além da média e mediana, existe outra forma de inserir valores relacionados a própria variável: inputação da categoria mais frequente. Utilizando a categoria mais recorrente, podemos assumir que os valores faltantes têm uma probabilidade maior de serem desta categoria. Na Figura 4 é representado a inserção da variável “casa” em vermelho; esta é a categoria mais frequente da variável v4.

Figura 4 — A figura representa a substituição do valor faltante pela categoria “casa” em vermelho que é a categoria mais frequente da coluna v4.

Ao se utilizar esta técnica teremos vantagens e desvantagens. Como vantagem: é uma técnica que apresenta uma maneira rápida para substituir os valores faltantes e isso é facilmente integrado em produção. Como desvantagem: esta técnicas pode trazer distorções na frequência das outras categorias se a quantidade de valores faltantes for muito extensa (ultrapassando de 5% a 10% dependendo de sua criticidade).

Imputação de Valor Arbitrário

Até o momento conhecemos técnicas que utilizam características da própria variável para conseguir lidar com o dados ausentes. Neste método os valores faltantes são substituídos por um valor arbitrário. Alguns valores comuns para variáveis numéricas são o número -1 (para variáveis que tenham uma distribuição positiva), -99, 99 ou 999. Já para variáveis categorias há a inserção, por exemplo, de uma categoria “Missing”. Esta é uma técnica para valores faltante MNAR, pois queremos que o dado seja^ sinalizado como faltante. Um exemplo da utilização desta técnica pode ser observado na Figura 5.

Figura 5 — A figura representa a inserção de uma valor arbitrário tanto para variáveis numéricas quanto categóricas. Para variáveis numéricas, o valor inserido foi -99 destacado em vermelhor. Para a coluna v4 a categoria “missing” em vermelho foi inserido no valor ausente.

Vantagens: é possível de uma maneira rápida lidar com dados faltantes; pode ser integrado de maneira rápida com o modelo em produção; e os dados que estavam ausentes são destacados. Desvantagens: há a distorção da distribuição original e da variância; pode mascarar outliers; é preciso ter cuidado para não escolher uma valor que fique perto da média, da mediana ou qualquer outro valor comum da distribuição.

Indicador do Valor Ausente

Os métodos anteriores utilizam técnicas que fazem a imputação de valores na variável, seja por meio de valores extraídos da própria variável ou de valores arbitrários. Esta técnica tem uma abordagem diferente. Ela adiciona mais uma variável ao dataset. Nesta nova variável, só há o número 0 ou 1 que indicam se originalmente na linha à esquerda havia um valor faltante ou não. Esse método é comumente utilizado em conjunto com as outras técnicas citadas acima (menos a primeira). A figura 6 representa a inserção das variáveis v2missing, v3missing e v4missing com o valor 1 marcando as linhas à esquerda que possuíam valores nulos.

Figura 6 — Figura representando a inserção de colunas adicionais v2missing, v3missing e v4missing. Elas indicam por meio dos valores 0 e 1, quais são as linhas que apresentam valores que foram inseridos por meio de algumas das técnicas citadas acima.

Este método apresenta também pontos de vantagem e desvantagem. Como vantagem, este método destaca a importância de valores faltantes, caso ele exista. Porém por haver a inserção de novas colunas, a dimensão da base de dados pode acabar aumentando, caso tenham muitas variáveis com valores ausentes. Mas se isso acontecer, pode ser implementado algum método de seleção de variáveis para redução do número de colunas.

Conclusões

Neste post foram apresentadas diferentes técnicas para lidar com dados faltantes. Já que eles são certamente um dos problemas mais comuns que podem ser encontrados na base de dados. Mas as vezes até um entendimento melhor da forma do negócio da empresa ou como os dados foram gerados pode te dar pistas de como lidar com os dados ausentes. De qualquer maneira caso queira aplicar alguma das técnicas aqui citadas, recomendo o uso da biblioteca Feature-engine.

Espero que tenha gostado do texto e que possa ter te ajudado de alguma forma. Se possível dê uma curtida ou deixe um comentário, ficarei feliz em responder. Até a próxima!

Referências

--

--