Outlier: o ponto fora da curva.

Rodrigo Salles
Ensina.AI
Published in
9 min readMay 15, 2018

--

“Um outlier é uma observação que se diferencia tanto das demais observações que levanta suspeitas de que aquela observação foi gerada por um mecanismo distinto” (Hawkins, 1980).

Como um outlier pode afetar o desempenho do seu algoritmo? Como são gerados? Como detectar? Como tratar? Essas são algumas perguntas que tentarei responder nesse pequeno estudo.

Este estudo encontra-se disponível no Github. Acesse clicando aqui.

O ponto fora da curva

Sempre me preocupei com os outliers. Aquele ponto fora da curva…! Como aquele valor anômalo poderia afetar o desempenho do meu sistema? Plotava o gráfico e lá estava ele ou eles. O que fazer? Nunca me dediquei muito ao assunto, e assim utilizava ferramentas para me livrar rapidamente do problema, e passar para partes mais importantes do projeto.

Com o tempo observei que meus projetos poderiam ganhar em qualidade com a compreensão dos outliers. E é o que vou fazer hoje. Sem rodeios. Direto ao ponto.

O que é um outlier?

Até agora não encontrei uma tradução perfeita para o termo, mas pode-se dizer que é aquela observação que se diferencia tanto das demais que levanta suspeitas.

Fonte: https://pt.wikihow.com

Um valor de 300°F em uma tabela que possui valores distribuídos entre 69°F e 73°F levanta suspeitas,não?

Observem a seguinte tabela:

Fonte: https://aquare.la

Precisamos saber qual é o segredo do Sr. Antônio! (Acho que o INSS também vai se interessar). É um outlier que possivelmente resulta de um erro de digitação.

No estudo “Redução de faltas em agendamentos médico com inteligência computacional”, verificou-se uma senhora “outlier”, de 79 anos, que agendou uma consulta médica com 365 dias de antecedência e de fato compareceu à consulta!

Fonte: https://aquare.la

É um exemplo de outlier que não deriva de erro. É apenas um comportamento atípico. Parabéns para a essa senhora “outlier”( cada falta tem um valor que varia entre R$ 76,00 e R$ 92,00)!

Bom, acho que os exemplos já tornaram claro o conceito de outlier. Mas quais são os tipos de outliers?

Tipos de Outliers

Existem dois grandes grupos de outliers: os univariados e os multivariados. O primeiro caso é detectado ao se analisar a distribuição de uma variável simples: analisando apenas a distribuição de idades pode-se verificar a presença do outlier.

O outlier multivariado pode ser detectado em espaço “n-dimensional”. Para sua observação deve-se recorrer à distribuições multidimensionais.

A imagem acima representa a distribuição dos preços de automóveis de acordo com o ano de fabricação. Pode-se observar um autlier. Por algum motivo um automóvel fabricado em 1986 está avaliado em R$ 25.000,00. Pode ser um carro raro, de colecionador, ou simplesmente um erro de digitação. O valor correto poderia ser R$ 2500,00.

Analisando os exemplos anteriores levantamos algumas possibilidades sobre as origens desses outliers. Vamos falar um pouco mais sobre isso.

O que causa um outlier?

O correto entendimento da causa de um valor anômalo pode nos orientar sobre a forma correta de tratá-los.

Quanto à causa temos dois grupos de outliers: naturais e artificiais.

Exemplos de outliers naturais:

  • A senhora que compareceu á consulta, no exemplo dado anteriormente.
  • Declaração de renda, quando verdadeiramente a pessoa se saiu muito melhor, ou pior do que o restante de pessoas de seu perfil econômico.
  • Uma idade mais avançada ao se analisar a expectativa de vida para determinada região.

Grande parte dos outliers possuem origem artificial(erro):

  • Erro de amostragem: ao avaliar a média nas notas em física, normalmente baixas, algumas notas de educação física foram incluídas.
  • Erro ao processar dados: ao fazer o pré-processamento dos dados pode-se utilizar algum método que crie um outlier.
  • Erro na entrada de dados: erros de digitação ou coleta de informações.
  • Erro de medida: são os mais comuns. Instrumentos danificados ou usados de forma incorreta são fontes constantes de outliers.
  • Erro intencional: ao verificar-se a quantidade de álcool ingerida na última semana em uma classe de jovens, a maior parte intencionalmente, fornece valores abaixo dos reais. Dessa forma, um jovem que fornece os valores reais aparecerá como um outlier.

Agora que já sabemos um pouco mais sobre as origens dos outliers, vamos entender o que eles podem provocar no nosso algoritmo.

Efeito outlier

Fonte: https://www.misteriosdouniverso.net

É quase um efeito borboleta. Um pequeno erro inicial que se propaga, e se não for tratado de forma correta pode criar muito problema.

Em análises estatísticas o efeito do outlier pode ser facilmente observado. Vamos fazer o “com” e “sem” outliers em uma tabela de idades, para observar um pouco melhor:

E agora, novamente o Sr. Antônio modificando quase tudo:

A média, os desvios e a amplitude são especialmente sensíveis aos outliers.

De forma semelhante muitos algoritmos são afetados por valores anômalos. Esse comportamento será demonstrado com a regressão linear simples.

A regressão linear é uma técnica de aprendizado supervisionado que estuda o relacionamento entre uma variável dependente e outras variáveis, chamadas independentes.

Não entrarei em maiores detalhes sobre a técnica, mas basicamente o algoritmo constitui uma tentativa de estabelecer uma equação matemática linear (linha reta) que descreva o relacionamento entre as variáveis X e Y.

O desafio é determinar os coeficientes a e b da equação de regressão (Y=a+b.X), de maneira que o desvio(erro) entre o valor encontrado pela equação e o valor real seja o menor possível.

Os coeficientes a e b são ajustados de acordo com o conjunto de treinamento:

Como existem valores anômalos no conjunto de treinamento utilizado, o desvio encontrado pelo algoritmo será grande, e na tentativa de reduzir o erro, os valores encontrados para os parâmetros a e b não serão os melhores.

O efeito dos outliers pode ser observado nos gráficos a seguir:

O erro absoluto: 29.8800 u

Erro absoluto: 152.1535 u

O mesmo teste poderia ser realizado com outros algoritmos, demonstrando uma maior ou menor sensibilidade.

Regressão linear é um algoritmo reconhecidamente sensível aos outliers, dessa forma, vários cuidados devem ser adotados para tornar o seu sistema mais resistente. Em projetos mais complexos, deve-se ficar atendo para a presença inicial ou o surgimento de outliers. Muitas técnicas podem ser adotadas para sua detecção. Vamos falar de algumas.

Como detectar outliers?

Vamos falar um pouco sobre técnicas que podem ser utilizadas para detectar aquela ovelha negra do seu conjunto de dados.

A forma mais comum de se detectar outliers é com o auxílio do box-plot e scatter plot.

Fora as ferramentas gráficas, podemos utilizar cálculos que podem ser acrescentados às nossas rotinas, tornando o tratamento dos outliers mais eficiente. Na sequência vou demonstrar como detectar outliers com o auxílio do quartil.

Amplitude interquartílica: limites internos e externos

Considere as temperaturas fornecidas por sensores em um determinado ambiente:

Pode-se facilmente observar um outlier. O sensor 10 fornece 300°C em um ambiente com temperaturas a variar entre 69°C e 73°C.

Vamos utilizar a amplitude interquartílica para determinar esse valor anômalo.

Para observar melhor vamos colocar os dados em ordem crescente:

Em um conjunto de dados extenso essa medida já nos dá uma boa ideia dos outliers.

Ao calcular a mediana obtemos o seguinte resultado:

Quartil

O quartil pode ser entendido como uma generalização da mediana. O quartil é o valor abaixo do qual está um certo percentual dos dados. No caso da mediana, esse percentual é de 50%. A função utilizada para calcular o quartil(series.quantile), por padrão, adota o percentual de 50%, ou seja, é uma mediana. Vamos configurar a função para calcular o quartil à 25%. É o quartil inferior, e representado por Q1.

Vamos agora calcular o quartil superior, Q3, que é a mesma operação à 75%.

Ao subtrair os valores de Q3 e Q1, obtemos a amplitude interquartílica. Essa amplitude deve ser multiplicada por 1.5, e o valor obtido deve ser subtraído de Q1, e somado à Q3. É a barreira interna. Os valores que estiverem entre a barreira interna e externa são considerados outliers moderados.

Para calcular a barreira externa deve-se proceder da mesma forma. A única diferença é que o fator de multiplicação deve ser 3 e não 1.5:

Dessa forma o valor fornecido pelo sensor 10, de 300°C, está completamente fora da barreira externa, sendo caracterizado como outlier.

Existem outras forma de detecção. Os outliers bivariados e multivariados são normalmente medidos usando um índice distância. Índices como a distância de Mahalanobis e Cook D são frequentemente utilizados para detectar outliers.

Já detectamos o outlier. E agora? Como resolver esse problema?

Outlier detectado. E agora?

O que fazer com o valor detectado. Temos algumas possibilidades:

  • Eliminar o valor: se nosso conjunto de dados é grande o suficiente, poderemos simplesmente deletar os valores anômalos sem maiores prejuízos para a análise.
  • Transformação logarítmica: a transformação logarítmica dos dados pode reduzir a variação causada por valores extremos.
  • Filtragem de dados: alguns filtros podem ser utilizados, como o média-móvel.
  • Tratamento separado: se a quantidade de outliers é significante, podemos tratá-los separadamente. Podemos separar os valores em dois grupos e criar modelos individuais.

Devemos lembrar que o outlier pode ser objeto de nossa procura. Pode ser aquela compra fora dos padrões que indicará que o cartão de créditos foi clonado. Pode ser o valor a indicar uma nova solução para antigos problemas.

Conclusão

Existem muitas ferramentas que nos auxiliam no tratamento de outliers. Se o conjunto de dados possui muitos valores anômalos, ferramentas que usam média e variância podem não funcionar bem. Para esses casos o RobustScaler pode ser uma ótima alternativa. Em sua maioria essas ferramentas são de rápida e fácil implementação, mas é importante o conhecimento um pouco mais aprofundado do problema. O que causou o valor estranho, qual seu impacto no algoritmo, seu tratamento. O conhecimento torna seu sistema mais robusto. No meu caso ajudou muito. Espero que o ajude também. Até a próxima.

Referências:

https://aquare.la/o-que-sao-outliers-e-como-trata-los-em-uma-analise-de-dados/

https://www.analyticsvidhya.com/blog/2016/01/guide-data-exploration/#three

https://pt.wikihow.com/Calcular-Outliers

--

--

Rodrigo Salles
Ensina.AI

Mechatronic Engineer — Physicist — Data Scientist. Always learning.