- Carregando índice...
Da nossa publicação sobre análise exploratória de dados, uma questão que restou em aberto diz respeito aos famosos outliers. Sim, esses pontos destoantes que vez ou outra aparecem para nos encucar.
Para ilustrar como detectarmos e tratarmos esses casos, vamos utilizar um conjunto de dados públicos pelo Kaggle sobre Contas Médicas (particularmente, esse é um assunto que me interessa bastante e será constante em nossas publicações).
Outliers: O que são?
Traduções de conceitos como "Outliers" às vezes não são perfeitas. Por isso, vou recorrer à seguinte definição:
“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).
Outliers: Sempre um erro?
O fato de levantarem suspeita, entretanto, não significa que tais valores atípicos estão inerentemente errados e devam ser sumariamente eliminados.
Pelo contrário, existem situações em que, de fato, os outliers são ocorrências naturais. O nosso dataset é um bom exemplo, já que os pacientes High-Cost são observações que verdadeiramente ocorrem.
Além disso, para alguns cenários, os outliers podem ser indicadores úteis e, por isso, devem ser mantidos para o propósito da aplicação. Um bom exemplo é um dos algoritmos que desenvolvemos no Projeto Health Intelligence da 3778, que se propõe a detectar suspeitas de fraudes em contas médicas (não te falei que esse seria um tema constante? Deixaremos para próximas postagens mais detalhamentos):
Por outro lado, em grande parte das situações, de fato esse será o caso: os outliers são erros artificialmente criados e, portanto, devem ser eliminados (já que, como diria o colega Marcio Gregory, não se faz predição para casos de exceção):
- 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.
Outliers: Qual seu impacto?
Em todo o caso, a simples presença de outliers pode alterar significativamente o conjunto.
Vejam só:
- Afetam as estatísticas do conjunto, principalmente a média, o desvio-padrão e a amplitude. Afetam menos significativamente o intervalo interquartil e a mediana, motivo pelo qual devem ser utilizados preferencialmente como medidas de tendência central em conjuntos assimétricos.
- Aumentam a variância do erro e reduzem o poder dos testes estatísticos.
- Eles podem enviesar ou influenciar estimativas que podem ser de interesse substancial.
- Eles também podem afetar as suposições básicas de modelos estatísticos.
- Se os outliers forem distribuídos de forma não aleatória, eles podem diminuir a normalidade.
A título de exemplo, tomemos nosso dataset para verificar a sua descrição estatística, tanto incluindo quanto excluindo os outliers de custo:
Outliers: Como detectar?
Após nosso experimento na seção anterior, você pode estar se perguntando por que cargas d´água, na intenção de descrever o conjunto sem outliers, dropamos os valores de custo maiores que 34489.35, certo?
Ora, isso foi feito porque utilizamos um dos métodos de detecção de outliers, o chamado Método do Intervalo Interquartil. Veja abaixo sobre esse e outro método muito utilizado, o Método do Desvio-Padrão:
1.Método do Intervalo Interquartil:
Em seções anteriores, fizemos questão de plotar um gráfico bastante interessante chamado boxplot. Na figura abaixo, damos mais detalhes de quais são os conceitos envolvidos em sua construção.
Reparem que um dos conceitos centrais para essa construção é justamente o intervalo interquartílico (IQR), usado para medir a dispersão estatística e a variabilidade dos dados, dividindo o conjunto de dados em quartis.
Através desse método, outliers são definidos matematicamente como as observações que estão abaixo (Q1 − 1,5 x IQR) do "bigode inferior" do boxplot ou acima (Q3 + 1,5 x IQR) do "bigode superior" do boxplot.
Em termos de código, utilizemos a seguinte função para facilitar (está aí mais um tema legal de abordarmos em próximos encontros):
Para o nosso cenário, utilizando tal função, teríamos a seguinte detecção:
2. Método do desvio-padrão:
O desvio padrão é uma métrica de dispersão, demonstrando o quanto os pontos de dados estão espalhados. Em uma distribuição de dados normal ou aproximadamente normal, ocorre um fenômeno em torno da média:
- cerca de 68% dos valores dos dados estão dentro de um desvio-padrão
- cerca de 95% dos valores dos dados estão dentro de dois desvios-padrão
- cerca de 99,7% dos valores dos dados estão dentro de três desvios-padrão
Através do método de detecção por desvio-padrão, outliers são definidos matematicamente como as observações que estão desviadas mais ou menos do que 3 desvios-padrão da média.
Em termos de código, utilizemos a seguinte função para facilitar:
Para o nosso cenário, utilizando tal função, teríamos a seguinte detecção:
Bem, essas são algumas das estratégias mais simples de detecção de outliers. Mas saiba também que existem muitas outras mais, que, pela complexidade, preferimos abordar em seção à parte. Dentre essas estratégias mais complexas, podemos listar o uso de algoritmos como Isolation Forest e Robust Random Cut Forest.
Em algum momento, depois de galgar os conceitos mais basilares, chegaremos lá. Mas, por ora, nos diga - e aí, qual método de detecção você acha mais intuitivo e aplicaria em nosso conjunto de dados?
Outliers: Como tratar?
Como dissemos em publicação anterior, como cientista de dados, em algum momento sempre teremos que adotar tal ou qual abordagem. No entanto, o mais importante não é exatamente o que adotamos como abordagem, mas o porquê fizemos isso, e como conseguimos justificar tal escolha de forma elegantemente inteligível. É nesse ponto que chegamos quando, uma vez detectados os outliers, temos de decidir como vamos tratá-los.
Naturalmente, essa é uma etapa difícil, mas alguns princípios podem nos guiar. Nesse sentido:
- Por um lado, drope os outliers se:
- Você sabe que é uma observação completamente errada. Por exemplo, não é razoável ter em um dataset um valor de idade de 400 anos para qualquer pessoa, certo?
- Você tem muitos dados em mãos e algumas dropagens não serão significativas
2. Por outro lado, mantenha os outliers se:
- Existem muitos outliers. Ora, pode ser que exista um fenômeno subjacente aqui que deve ser investigado, não?
- Os outliers são o evento de interesse. Foi o caso que exemplificamos com a detecção de fraudes.
Uma vez mantidos, também são possíveis outros tratamentos, por exemplo:
- Transformação logarítmica: a transformação logarítmica dos dados pode reduzir a variação causada por valores extremos.
- Tratamento separado: podemos separar os valores em dois grupos e criar modelos individuais.