antonio leandro

estruturas e algoritmos

Isolation Forest

paper · Fei Tony Liu, Kai Ming Ting, Zhi-Hua Zhou · · ~29 min de leitura do original

a tese

anomalia não precisa de um modelo do que é normal: basta contar quantos cortes aleatórios são necessários para isolar um ponto — quem cai cedo é o suspeito

o que fica

  1. Perfilar o que é normal otimiza o detector para a classe errada: o modelo fica bom em descrever a maioria e não em encontrar a minoria, e o preço é falso alarme demais ou anomalia de menos.
  2. Amostra menor detecta melhor, ao contrário de quase tudo em aprendizado de máquina: no conjunto Mulcross, a AUC vai de 0,67 com as 4.096 instâncias para 0,91 com uma sub-amostra de 128.
  3. Swamping e masking são sintomas de dados demais para a tarefa — normais que cercam a anomalia e clusters densos de anomalias que se escondem entre si —, e a sub-amostragem alivia os dois de graça.
  4. O escore de anomalia é emprestado da análise de árvore binária de busca: a profundidade média de uma busca malsucedida normaliza o comprimento do caminho e dá um número entre 0 e 1 comparável entre bases de tamanhos diferentes.
  5. Sem cálculo de distância não há custo quadrático: o treino é O(tψ log ψ) e a avaliação é O(nt log ψ), e com ψ = 256 cada árvore cabe em no máximo 511 nós.
  6. iForest treina bem só com instâncias normais: no Http a AUC cai de 0,9997 para 0,9919 sem anomalias no treino, e aumentar a sub-amostra recupera a diferença.

o problema

Detectar anomalia sempre foi feito pelo avesso. Métodos estatísticos, de classificação e de clusterização constroem um perfil do que é normal e chamam de anomalia tudo que não cabe nele. O paper aponta dois defeitos nisso. O primeiro é conceitual: o detector é otimizado para descrever a maioria, não para encontrar a minoria, então o que ele entrega são sobras — e sobra costuma virar falso alarme em excesso ou anomalia não detectada. O segundo é de custo: métodos baseados em distância e em densidade precisam comparar pontos entre si, e comparação par a par não escala. ORCA, o melhor da época segundo os autores, corta o O(n²) para tempo quase linear com randomização e uma regra de poda; Random Forests em modo não supervisionado exige memória de (2n)² para montar a matriz de proximidade.

Há ainda dois problemas antigos que dado demais agrava. Swamping é quando pontos normais colados na anomalia aumentam o número de partições necessárias para separá-la, e o detector acaba marcando os normais junto. Masking é quando as anomalias formam um cluster grande e denso e escondem umas às outras. Nos dois casos, o sinal se dilui à medida que a amostra cresce.

a ideia

Anomalias são poucas e diferentes. Poucas significa que ocupam pouca área do espaço; diferentes significa que seus valores caem longe dos demais. As duas propriedades juntas dizem que elas são fáceis de separar do resto — e o paper faz disso a medida, em vez de fazer da distância.

Corte o espaço com uma linha aleatória. Corte de novo o lado onde o ponto está. Repita até esse ponto ficar sozinho. Um ponto no meio da massa exige muitos cortes; um ponto isolado no canto sai em poucos. A quantidade de cortes é a profundidade numa árvore, e é isso que vira o escore. Na figura de abertura do paper, um ponto normal precisa de doze partições e um anômalo de quatro; com mil árvores, as médias convergem para 12,82 e 4,02.

A consequência estrutural é o que faz o método ser barato. Como só interessam os caminhos curtos, a parte da árvore que isola os pontos normais não precisa ser construída. O modelo é parcial de propósito.

como funciona

Uma iTree é construída sobre uma sub-amostra de ψ instâncias sorteadas sem reposição:

iTree(X, e, l):
  se e >= l ou |X| <= 1: retorna folha{tamanho: |X|}
  q <- atributo sorteado
  p <- valor sorteado entre min(X[q]) e max(X[q])
  retorna nó{ esq: iTree(X[q < p], e+1, l),
              dir: iTree(X[q >= p], e+1, l), q, p }

O limite de altura é l = ceiling(log2 ψ), aproximadamente a altura média da árvore — mais fundo que isso só há ponto normal, que não interessa. A floresta são t árvores, cada uma com sua sub-amostra. Os padrões do paper: ψ = 256 e t = 100.

Na avaliação, h(x) é o número de arestas percorridas até a folha, somado a um ajuste c(tamanho da folha) que estima a subárvore que não foi construída. O escore é s(x, n) = 2^(−E(h(x))/c(n)), onde c(n) = 2H(n−1) − 2(n−1)/n e H(i) ≈ ln(i) + 0,5772156649 — a profundidade média de uma busca malsucedida em árvore binária de busca, que é exatamente a estrutura equivalente à iTree. Perto de 1, anomalia; bem abaixo de 0,5, normal; tudo em torno de 0,5 significa que a amostra não tem anomalia distinta.

o que isso custou

O paper só trata de atributos contínuos: nominais e binários foram removidos de todas as bases avaliadas. O método também não escapa da maldição da dimensionalidade, e os autores admitem isso; a saída proposta é um seletor de atributos por sub-amostra usando Kurtosis, e mesmo assim a AUC só chega perto do resultado com os atributos originais quando o subespaço escolhido tem tamanho próximo ao número original de atributos.

Aumentar a amostra piora a detecção, o que inverte o reflexo de todo mundo: não dá para melhorar o detector jogando mais dado nele. E o que sai é um ranking, não uma decisão. Onde cortar a lista continua sendo escolha de quem opera — no exemplo do contorno o paper usa s ≥ 0,6 como indicação visual, sem derivar um limiar.

A comparação com ORCA depende de parâmetros que os próprios autores escolheram (k = 5, N = n/8), e eles registram que, com o padrão original de ORCA, toda base acima de mil pontos cai para AUC próxima de 0,5.

onde isso aparece hoje

iForest virou o baseline de detecção de anomalia não supervisionada em bibliotecas de uso geral — scikit-learn traz uma implementação com o mesmo nome e os mesmos dois botões, número de árvores e tamanho da sub-amostra. A razão é operacional antes de ser estatística: o paper já mostrava um modelo com ψ = 256 cabendo em no máximo 511 nós por árvore, o que permite manter o detector em memória ao lado do serviço que ele vigia, em vez de rodar em lote sobre a base inteira. Fraude em transação, tráfego de rede e telemetria — os três exemplos que abrem o artigo — são justamente os casos em que a base é grande, o rótulo é raro e a resposta precisa sair rápido.

lido na íntegra por pipeline de llm, revisado por antonio leandro antes de publicar ·