O que são anomalias e outliers?

Detecção de Anomalias em Python

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

Inliers vs. outliers

  • Detecção de anomalias: identificar pontos de dados anormais
  • Inliers:
    • Pontos "normais"
    • Representam a maioria
  • Outliers:
    • Ocorrem muito raramente
    • Estatisticamente diferentes

Dois exemplos de outliers: o primeiro de uma tulipa vermelha em um campo verde e outro de um único bastão preto separado de um grupo de bastões brancos

Detecção de Anomalias em Python

O planeta Terra como anomalia

Todos os planetas são inliers

A imagem da galáxia Via Láctea vista de muito longe.

Só a Terra é um outlier

Uma imagem curiosa do Planeta Terra que reflete a vida no planeta através da atmosfera como lente.

Detecção de Anomalias em Python

Definição estatística

  • Anormalmente diferentes
  • Têm características significativamente diferentes
  • O observador decide se um ponto é outlier
Detecção de Anomalias em Python

Aplicações da detecção de anomalias

Imagem do texto "security" com um cursor sobre ele.

Detecção de Anomalias em Python

Aplicações da detecção de anomalias

Uma mão com luva azul segurando um pequeno frasco com líquido azul.

Detecção de Anomalias em Python

Aplicações da detecção de anomalias

Imagem de um homem entregando seu cartão Visa a uma mulher com uma maquininha de pagamento.

Detecção de Anomalias em Python

Dados de exemplo

import pandas as pd

numbers = pd.Series([24, 46, 30, 28, 1289, 25, 21, 31, 48, 47])
Detecção de Anomalias em Python

Média e variância afetadas

Dados sem o outlier

numbers_a = pd.Series([24, 46, ...])
numbers_a.mean()
33.33
numbers_a.var()
114.5

Dados com outlier

numbers_b = pd.Series([1289, 24, ...])
numbers_b.mean()
158.9
numbers_b.var()
157771.65
Detecção de Anomalias em Python

Anomalias nos dados de treinamento

  • Anomalias criam ruído
  • Podem ser confundidas com um novo subgrupo
  • Tiraram o foco dos padrões reais
Detecção de Anomalias em Python

Outlier vs. novelty detection

Detecção de outliers

  • Outliers existem apenas nos dados de treinamento

Detecção de novidades

  • Novidades existem apenas em dados novos
Detecção de Anomalias em Python

Resumo de 5 números

import pandas as pd

big_mart = pd.read_csv("big_mart.csv")
sales = big_mart['sales']
sales.describe()
count     8523.000000
mean      2181.288914
std       1706.499616
min         33.290000
25%        834.247400
50%       1794.331000
75%       3101.296400
max      13086.964800
Detecção de Anomalias em Python

Plotar um histograma

import numpy as np
import matplotlib.pyplot as plt

# Encontrar a raiz quadrada do tamanho de sales
n_bins = np.sqrt(len(sales))
# Converter para inteiro
n_bins = int(n_bins)


# Plotar plt.figure(figsize=(8, 4)) plt.hist(sales, bins=n_bins, color='red')
Detecção de Anomalias em Python

Histograma resultante

Um histograma de vendas de produtos com barras vermelhas e uma longa cauda à direita.

Detecção de Anomalias em Python

Plotar um gráfico de dispersão

integers = range(len(sales))

plt.figure(figsize=(16, 8))
plt.scatter(integers, sales, c='red', alpha=0.5)
Detecção de Anomalias em Python

Gráfico de dispersão resultante

Um gráfico de dispersão mostrando um aglomerado de pontos concentrado na metade inferior e mais esparso no topo

Detecção de Anomalias em Python

Vamos praticar

Detecção de Anomalias em Python

Preparing Video For Download...