Detecção de anomalias e regiões centrais

Jacques Wainer

Anomalias e regiões centrais

Regiões centrais

mode seeking

Mean shift

d = e^{\frac{|x - m|^2}{h^2}}

https://scikit-learn.org/stable/modules/generated/sklearn.cluster.MeanShift.html

https://www.rdocumentation.org/packages/meanShiftR/versions/0.50/topics/meanShift

Anomalias

Há várias definições de anomalias e portanto varios algoritmos

  1. sao dados que tem baixa probabilidade de sair dado a distribuição geradora dos dados “normais”

  2. são dados “longes” do dados normais (mas talvez próximos um dos outros)

  3. são dados em regiões de baixa densidade em comparação com dados normais

  4. dados que se encontram em sub-espaços diferentes de onde se encontram os dados normais

  5. dados que “estragam” a descrição sucinta dos dados

Anomalias globais e locais

As definições mais comuns se referem a anomalias globais

https://www.r-bloggers.com/2015/01/twitters-new-r-package-for-anomaly-detection/

Anomalias em uma dimensão

Regra velha 1: anomalias são dados a uma distancia > 3 \sigma da média dos dados

Mas outliers “estragam” algumas medidas de agregação (media e desvio padrão)

medidas windowed

robust: insensível a outliers

Outra técnica tradicional para detectar outliers:

Theorias mais complexas: extreme value theory https://en.wikipedia.org/wiki/Extreme_value_theory

Anomalias por distancia

Anomalias estão isoladas:

https://prital.netlify.app/talks/user2018/user2018#38

Use a distancia ate o k-esimo mais proximo como uma medida 1D e use algum algoritmo de anomalia em 1D

Anomalias por densidade

https://en.wikipedia.org/wiki/Local_outlier_factor

distancia-k(A) = distancia ao k-ésimo vizinho mais proximo de A

LOF < 1 - A tem mais densidade que seus vizinhos

LOF = 1 - A tem a mesma densidade que seus vizinhos

LOF < 1 A é um outlier (menos densidade que seus vizinhos)

https://scikit-learn.org/stable/auto_examples/neighbors/plot_lof_outlier_detection.html

https://www.rdocumentation.org/packages/dbscan/versions/1.1-8/topics/lof

Isolation forests

isolation trees. Aleatoriamente divida uma dimensão e 2 partes (split aleatorio). Repita recursivamente para cada parte, ate que so sobre dados únicos em cada parte.(isolados)

https://en.wikipedia.org/wiki/Isolation_forest

Segundo a wikipedia

implementacao em python https://scikit-learn.org/stable/auto_examples/ensemble/plot_isolation_forest.html

em R https://www.rdocumentation.org/packages/isotree/versions/0.1.8/topics/isolation.forest

Anomalias por subespaço (linear)

Anomalias estragam as descrições compacta de dados

intuição https://www.researchgate.net/publication/261923846_A_Robust_Nonlinear_Hyperspectral_Anomaly_Detection_Approach/figures?lo=1

Mas para isso voce precisa de uma teoria/noção de “descrição de dados” e de “compacta”

One-class SVM

classificadores de uma classe (one class SVM - descobre a menor hiper-bola que inclue a maioria dos dados (miolo: normais, fora: anomalias)

https://www.researchgate.net/publication/317711827_Using_Geometry_based_Anomaly_Detection_to_check_the_Integrity_of_IFC_classifications_in_BIM_Models/figures?lo=1

com kernel RBF as fronteiras ficam mais interessantes

https://scikit-learn.org/stable/auto_examples/svm/plot_oneclass.html

Múltiplos detectores

Change points em series temporais

Change point em series temporais são pontos onde a serie muda de regime

imagem https://www.semanticscholar.org/paper/Nonparametric-Methods-for-Online-Changepoint-Killick/cf3418eb74ec703c2eed3ff9c2461dd9c0c2cddd/figure/0

https://link.springer.com/article/10.1007/s10115-016-0987-z