Outliers Detecção de Anomalias AULA 18 DATA MINING O que são outliers ? Um outlier é um fato que desvia tanto de outros fatos a ponto de gerar suspeitas de que foi gerado um mecanismo diferente. D.Hawkins: Identification of Outliers. Chapman and Hall, London, 1980. Detecção de outliers - aplicações Detecção de fraudes Detecção de intrusões Furacões, secas, enchentes, ondas de calor, incêndios. Saúde pública Ataques em sistemas de computadores apresentam comportamento diferente do comportamento usual dos sistemas. Perturbações em ecossistemas o comportamento de compras de alguém que rouba um cartão de crédito é provavelmente diferente daquele do proprietário do cartão. Casos de varíola são considerados anomalias, que podem indicar um problema com o processo de vacinação na cidade. Medicina Para um certo paciente, certos sintomas ou resultados de testes podem indicar problemas de saúde. Técnicas de detecção de anomalias Enfoques estatísticos Baseadas em distância Baseadas em densidade Definição baseada em distância Um objeto O de um banco de dados BD é chamado de BD(p,d)-outlier se pelo menos uma fração p (0 < p < 1) de objetos de BD estão fora de uma vizinhança de raio d de O p = 2/3 outlier Processo não inteiramente automático Determinação dos parâmetros p e d Teste de validade: decidir se os objetos identificados como outliers são realmente outliers Tarefa de um especialista humano Problema Entrada Banco de dados D com N objetos Um número p, 0 < p < 1 Um número d > 0 Dist = função distância considerada Saida Conjunto dos outliers de D, i.e., conjunto dos objetos O tais que o número máximo de objetos dentro de uma dvizinhança de O é M = N (1-p) Algoritmo Simples Determinar para cada objeto do BD sua vizinhança de tamanho d Determinar aqueles objetos cuja vizinhança tem um número de elementos ≤ M Estrutura de indice multidimensional Executa-se uma busca dentro de um raio d para cada objeto p de BD No momento em que M+1 objetos são encontrados, a busca termina e O é declarado não-outlier Os objetos que sobram são declarados outliers Problemas: construção da estrutura de indice e o tempo da busca, para cada objeto p do BD. Algoritmo NL (Nested Loop) Evita a construção da estrutura de índice multidimensional Foco: diminuir o custo de acesso a disco Complexidade = O(kN2) k = número de atributos do BD N = número de tuplas do BD Idéia do algoritmo NL Bloco A Bloco A Bloco B Bloco C Bloco D Banco de Dados Buffer Para cada objeto t de A - Cont := 0 - Para cada objeto s de A se dist(t,s) ≤ d então Cont:= Cont + 1 - se Cont ≥ M etiqueta-se t como não-outlier Algoritmo NL Bloco A Bloco A Bloco B Bloco BlocoDC B Bloco C Bloco D Banco de Dados Buffer Para cada objeto t de A não etiquetado - Cont := 0 - Para cada objeto s de B se dist(t,s) ≤ d então Cont:= Cont + 1 - se Cont > M etiqueta-se t como não-outlier 4 acessos ao banco de dados Algoritmo NL Bloco A Bloco A Bloco B Bloco D Bloco C Bloco D Banco de Dados Buffer Ao final do loop são realizados 2 acessos ao banco de dados: 1 para carregar o bloco B no segundo array e outro para carregar o bloco C no segundo array No final do loop, tem-se o bloco C no segundo array. Algoritmo NL Bloco A Bloco D Bloco B Bloco C Bloco C Bloco D Banco de Dados Buffer Ao final do loop são realizados 2 acessos ao banco de dados: 1 para carregar o bloco A no segundo array e outro para carregar o bloco B no segundo array No final do loop, tem-se o bloco B no segundo array. Algoritmo NL Bloco A Bloco C Bloco B Bloco B Bloco C Bloco D Banco de Dados Buffer Ao final do loop são realizados 2 acessos ao banco de dados: 1 para carregar o bloco A no segundo array e outro para carregar o bloco D no segundo array No final do loop, tem-se o bloco D no segundo array. Algoritmo NL Bloco A Bloco B Bloco B Bloco D Bloco C Bloco D Banco de Dados Buffer Algoritmo pára – D já apareceu no primeiro array Total de acessos ao disco: 10 Cada acesso: um bloco é varrido Número de blocos = 4 Total de varridas = 10/4 = 2,5 Algoritmo NL - generalização Capacidade do buffer = K ( 0 < K < 1) (=fração do BD) No exemplo K = 0,5 Divide-se o buffer em duas partes B1 e B2 Divide-se o banco de dados em 2K blocos (no exemplo número de blocos = 2/0.5 = 4 Algoritmo FindAllOutsM – baseado em células Hipóteses simplificadoras Dados bi-dimensionais (número de atributos = 2). Dados cabem na memória primária (tanto o BD quanto as células que serão construidas a partir dele) Generalização A idéia pode ser generalizada para dados com dimensões quaisquer. Uma extensão deste algoritmo para bancos de dados armazenados em disco : ver referência Estrutura de Células Vizinhança de raio d d 2 C2 = d2 C= d √2 L = tamanho da célula = d 2√2 As vizinhanças L1 e L2 de cada objeto d Vizinhança L2(Cx,y) Célula Cx,y Objeto (x,y) Vizinhança L1(Cx,y) Prop1: Máxima distância entre objetos de uma mesma célula Objetos pertencentes a uma mesma célula tem uma distância máxima de L √2 = d √2 = d 2√2 2 L L √2 = d/2 L Logo : Toda d-vizinhança de um objeto em Cx,y contém a célula inteira Cx,y Prop2: Máxima distância entre objetos de uma célula e objetos de sua vizinhança L1 Se p está na célula Cx,y e q está em L1(Cx,y) então dist(p,q) ≤ d d Logo : Toda d-vizinhança de um objeto em Cx,y contém a célula inteira Cx,y e sua vizinhança L1 Prop3: Mínima distância entre objetos de uma célula e objetos fora da vizinhança L2 = 3L = 3 d 2√2 = 1,06 d > d Logo, se q é um objeto dentro da d-vizinhança de um objeto p de Cx,y então dist(q,p) ≤ d portanto q deve estar dentro de L2 U L1 U Cx,y Logo a d-vizinhança de p está contida em L2 U L1 U Cx,y Condição para objetos de uma célula não serem outliers Se número de objetos em Cx,y > M então nenhum objeto de Cx,y é um outlier De fato: Propriedade 1 Toda d-vizinhança de um objeto p em Cx,y contém toda a célula Cx,y Portanto contém mais de M elementos Portanto p não pode ser um outlier Condição para objetos de uma célula não serem outliers Se o número de elementos em Cx,y junto com sua vizinhança L1 é maior do que M então nenhum objeto de Cx,y é um outlier De fato: Propriedade 2 Toda d-vizinhança de um objeto p em Cx,y contém toda a célula Cx,y e sua vizinhança L1 Portanto contém mais de M elementos Portanto p não pode ser um outlier Condição para objetos de uma célula serem outliers Se o número de objetos em Cx,y U L1 U L2 é ≤ M então TODO objeto p de Cx,y é um outlier. De fato: a d-vizinhança de p está contida em Cx,y U L1 U L2 Portanto, a d-vizinhança de qualquer objeto de Cx,y não contém mais do que M objetos. Portanto, os objetos de Cx,y são todos outliers. Algoritmo FindAllOutsM – baseado em células Hipóteses simplificadoras Dados bi-dimensionais (número de atributos = 2). Dados cabem na memória primária (tanto o BD quanto as células que serão construidas a partir dele) Generalização A idéia pode ser generalizada para dados com dimensões quaisquer. Uma extensão deste algoritmo para bancos de dados armazenados em disco : ver referência Algoritmo FindAllOutsM Seja m = número de células (calculado em função de d e do tamanho do BD ) 1. Para cada q = 1, ..., m Ct-q := 0 2. % (vai contar o número de objetos em cada célula) Para cada objeto p do BD Associe a p uma célula Cq (a célula em que está inserido) 2. Ct-q:= Ct-q + 1 Após estes dois passos, todas as células estão construidas e sabemos o número de elementos de cada célula. 1. Algoritmo FindAllOutsM – cont. Os passos seguintes vão determinar quais objetos p do BD são outliers, verificando-se somente: O número de elementos de sua célula C O número de elementos da vizinhança L1 de C O número de elementos da vizinhança L2 de C Algoritmo FindAllOutsM – cont. Idéia Células com mais de M elementos são etiquetadas de Vermelho Células na vizinhança L1 de uma célula vermelha são etiquetadas de Azul. Células coloridas não tem chance de conter outliers Algoritmo FindAllOutsM – cont. Idéia (continuação) Para cada célula branca, contamos o número de seus elementos e da vizinhança L1 Se for > M, não tem chance nenhuma de conter outliers – é etiquetada de Azul Para cada célula branca restante, calcula-se o número de seus elementos junto com L1 e L2. Se for ≤ M : com certeza todos os elementos desta célula serão outliers. Algoritmo FindAllOutsM – cont. Idéia (continuação) Para as células brancas onde a soma total de seus elementos junto com as vizinhanças L1e L2 for > M, faz-se a checagem das vizinhanças para cada objeto da célula. Algoritmo FindAllOutsM – cont. 3. Para cada q=1,...,m se Ct-q > M etiqueta célula Cq ‘Vermelha’ Todas as outras células são etiquetadas ‘Branca’ 4. Para cada célula vermelha, verifica as células em sua vizinhança que são brancas. Etiqueteas de Azul Algoritmo FindAllOutsM – cont. 5. Para cada célula branca Cw Ct-w1:= Ct-w + Σi ɛ L1(Cw) Ct-i Se Ct-w1 > M então Cw é etiquetada de Azul Se Ct-w1 ≤ M Ct-w2:= Ct-w1 + Σi ɛ L2(Cw) Ct-i Se Ct-w2 ≤ M, marque todos os elementos de Cw como outliers Se Ct-w2 > M Algoritmo FindAllOutsM – cont. Se Ct-w2 > M Para cada p ɛ Cw Ct-p = Ct-w1 (pois toda d-vizinhança de p contém Cw U L1) Para cada q ɛ L2(Cw) : Se dist(p,q) ≤ d : Ct-p = Ct-p + 1 Se Ct-p > M , p é etiquetado como “não-outlier” Se Ct-p ≤ M, p é etiquetado como “outlier” Caso k-dimensional Algoritmo FindAllOutsM é baseado nas propriedades 1, 2 e 3. Estas propriedades dão as condições suficientes para que um objeto seja classificado como outlier ou não-outlier. Precisamos determinar O valor de L (tamanho de cada célula) A espessura da vizinhança L2 para que as propriedades 1, 2 e 3 continuem valendo. Caso k-dimensional No caso k =2 L = tamanho da célula = d 2√2 Diagonal de um hipercubo k-dimensional de lado L = L√k Quanto deve valer L em função de d para que as propriedades 1 e 2 continuem valendo ? L= d 2√k Caso k-dimensional No caso bi-dimensional a espessura da vizinhança L2 é 2 Mostre que para que a propriedade 3 continue valendo (distância mínima entre um objeto de Cx,y e um objeto fora de L2 deve ser > d) é suficiente que a espessura da vizinhança L2 deve ser o primeiro inteiro maior ou igual a 2√k - 1 Complexidade O(ck + N) N = Tamanho do BD k = dimensão do BD Para dimensões pequenas (≤ 4), complexidade é razoável. Fixada a dimensão do BD, a complexidade é linear em função do tamanho do BD A versão do algoritmo que trata o caso em que os dados são armazenados em disco: cada página de dados não é acessada mais do que 3 vezes. Complexidade Resultados empíricos mostram que Algoritmos baseados em estruturas de célula são superiores a outros algoritmos para k≤ 4. Para k > 4, algoritmo NL é a melhor escolha. Referências Análise comparativa de performance quando varia-se N, p, d, k Edwin M. Knorr, Raymond T. Ng: : Algorithms for Mining Distance-Based Outliers in Large Datasets. In Proc. 24th International Conference on Very Large Databases, VLDB 1998, New York, USA. D.Hawkins: Identification of Outliers. Chapman and Hall, London, 1980.