Phase 02 - Lesson 16

Detecção de anomalias

This lesson includes a graded coding exercise that runs in your browser, unlocked with lifetime access.

Normal é fácil de definir. Anormal é tudo o que não cabe.

Tipo: Construir Idioma: Python Pré-requisitos: Fase 2, Lições 01-09 Tempo: ~75 minutos

Objetivos de aprendizagem

  • Implementar métodos de detecção de anomalias Z-score, IQR e Isolation Forest do zero
  • Distinguir entre anomalias pontuais, contextuais e coletivas e selecionar o método de detecção apropriado para cada
  • Explicar por que a detecção de anomalias é enquadrada como modelagem de dados normais, em vez de classificação de anomalias
  • Compare a detecção de anomalias não supervisionadas com a classificação supervisionada e avalie a compensação entre a cobertura e a precisão de novas anomalias

O problema

Um cartão de crédito é usado em Nova York às 14h e em Tóquio às 14h05. Um sensor de fábrica lê 150 graus quando a faixa normal é 80-120. Um servidor envia 50.000 solicitações por segundo quando a média diária é 200.

Estas são anomalias. Encontrá-los é importante. A fraude custa bilhões. Falhas em equipamentos custam tempo de inatividade. Invasões de rede custam dados.

O desafio: raramente você rotula exemplos de anomalias. A fraude representa 0,1% das transações. Falhas de equipamentos acontecem algumas vezes por ano. Você não pode treinar um classificador padrão porque não há quase nada na classe "anomalia" para aprender. Mesmo que você tenha alguns rótulos, as anomalias que você viu não são os únicos tipos que você encontrará. O esquema de fraude de amanhã parece diferente do de hoje.

A detecção de anomalias inverte o problema. Em vez de aprender o que é anormal, aprenda o que é normal. Qualquer coisa que fuja do normal é suspeita. Isso funciona sem rótulos, adapta-se a novos tipos de anomalias e é dimensionado para conjuntos de dados massivos.

O Conceito

Tipos de anomalias

Nem todas as anomalias são iguais:

  • Anomalias de pontos. Um único ponto de dados incomum, independentemente do contexto. Uma leitura de temperatura de 500 graus. Uma transação de US$ 50.000 de uma conta que normalmente gasta US$ 50.
  • Anomalias contextuais. Um ponto de dados incomum dado seu contexto. Uma temperatura de 90 graus é normal no verão e anômala no inverno. Mesmo valor, contexto diferente.
  • Anomalias coletivas. Uma sequência de pontos de dados que é incomum como um grupo, mesmo que cada ponto individual possa ser normal. Cinco falhas de login são normais. Cinquenta seguidos é um ataque de força bruta.

A maioria dos métodos detecta anomalias pontuais. Anomalias contextuais precisam de recursos de tempo ou localização. Anomalias coletivas precisam de métodos com reconhecimento de sequência.

flowchart TD
    A[Anomaly Types] --> B[Point Anomaly]
    A --> C[Contextual Anomaly]
    A --> D[Collective Anomaly]

    B --> B1["Single unusual value<br/>Temperature: 500F"]
    C --> C1["Unusual in context<br/>90F in January"]
    D --> D1["Unusual sequence<br/>50 failed logins"]

    style B fill:#fdd,stroke:#333
    style C fill:#ffd,stroke:#333
    style D fill:#fdf,stroke:#333

O enquadramento não supervisionado

Na classificação padrão, você tem rótulos para ambas as classes. Na detecção de anomalias, normalmente você tem uma das três situações:

  1. Totalmente sem supervisão. Sem rótulos. Você ajusta o detector em todos os dados e espera que as anomalias sejam raras o suficiente para não corromper o modelo “normal”.
  2. Semi-supervisionado. Você tem um conjunto de dados limpo apenas com dados normais. Você se encaixa nesse set limpo e pontua todo o resto. Esta é a configuração mais forte quando possível.
  3. Fracamente supervisionado. Você tem algumas anomalias rotuladas. Use-os para avaliação, não para treinamento. Treine sem supervisão e, em seguida, meça a precisão/recuperação no subconjunto rotulado.

O principal insight: a detecção de anomalias é fundamentalmente diferente da classificação. Você está modelando a distribuição de dados normais, não o limite de decisão entre duas classes.

Supervisionado versus não supervisionado: a compensação

Se você tiver anomalias rotuladas, deverá usá-las para treinamento (classificação supervisionada) ou apenas para avaliação (detecção não supervisionada)?

Supervisionado (tratar como classificação):

  • Captura os tipos exatos de anomalias que você já viu antes
  • Maior precisão em tipos de anomalias conhecidas
  • Perde completamente novos tipos de anomalias
  • Requer reciclagem quando surgem novos tipos de anomalias
  • Precisa de exemplos de anomalias suficientes (geralmente poucos)

Não supervisionado (modelo normal, desvios de sinalização):

  • Detecta qualquer desvio do normal, incluindo novos tipos
  • Não requer anomalias rotuladas
  • Maior taxa de falsos positivos (nem tudo que é incomum é ruim)
  • Mais robusto à mudança de distribuição

Na prática, os melhores sistemas combinam ambos: detecção não supervisionada para ampla cobertura, modelos supervisionados para tipos conhecidos de anomalias de alta prioridade e revisão humana para casos ambíguos.

Método Z-Score

A abordagem mais simples. Calcule a média e o desvio padrão de cada recurso. Sinalize qualquer ponto com mais de k desvios padrão da média.

z_score = (x - mean) / std
anomaly if |z_score| > threshold

O limite padrão é 3,0 (99,7% dos dados normais estão dentro de 3 desvios padrão para uma distribuição gaussiana).

Fortes: Simples. Rápido. Interpretável ("este valor é 4,5 desvios padrão do normal").

Pontos fracos: Pressupõe que os dados são normalmente distribuídos. Sensível a valores discrepantes nos dados de treinamento (os valores discrepantes mudam a média e aumentam o padrão, tornando-os mais difíceis de detectar). Falha em distribuições multimodais.

Quando funciona bem: Monitoramento de recurso único onde os dados têm aproximadamente o formato de um sino. Tempos de resposta do servidor, tolerâncias de fabricação, leituras de sensores com linhas de base estáveis.

Quando falha: dados de vários clusters (dois locais de escritórios com temperaturas de linha de base diferentes), dados distorcidos (valores de transação em que US$ 1.000 são raros, mas não anômalos), dados com valores discrepantes no conjunto de treinamento.

Método AIQ

Mais robusto que o Z-score. Usa o intervalo interquartil em vez da média e do desvio padrão.

Q1 = 25th percentile
Q3 = 75th percentile
IQR = Q3 - Q1
lower_bound = Q1 - factor * IQR
upper_bound = Q3 + factor * IQR
anomaly if x < lower_bound or x > upper_bound

O fator padrão é 1,5.

Pontos fortes: Robusto para valores discrepantes (os percentis não são afetados por valores extremos). Funciona em distribuições distorcidas. Nenhuma suposição de normalidade.

Pontos fracos: Somente univariado (aplica-se por recurso de forma independente). Não é possível detectar anomalias incomuns apenas quando as características são consideradas em conjunto (um ponto pode ser normal em cada característica individualmente, mas anômalo no espaço articular).

Nota prática: O fator 1,5 no IQR corresponde aos bigodes em um box plot. Os pontos fora dos bigodes são potenciais discrepantes. Usar 3,0 em vez de 1,5 torna o detector mais conservador (menos sinalizadores, menos falsos positivos). O fator certo depende da sua tolerância a alarmes falsos.

Isolation Forest

O principal insight: as anomalias são poucas e diferentes. Em um particionamento aleatório dos dados, as anomalias são mais fáceis de isolar – elas precisam de menos divisões aleatórias para serem separadas do resto.

flowchart TD
    A[All Data Points] --> B{Random Feature + Random Split}
    B --> C[Left Partition]
    B --> D[Right Partition]
    C --> E{Random Feature + Random Split}
    E --> F[Normal Point - deep in tree]
    E --> G[More splits needed...]
    D --> H["Anomaly - isolated quickly (short path)"]

    style H fill:#fdd,stroke:#333
    style F fill:#dfd,stroke:#333

Como funciona:

  1. Construa muitas árvores aleatórias (uma floresta de isolamento)
  2. Em cada nó, escolha um recurso aleatório e um valor de divisão aleatório entre o mínimo e o máximo do recurso
  3. Continue dividindo até que cada ponto esteja isolado (em sua própria folha)
  4. As anomalias têm comprimentos médios de caminho mais curtos em todas as árvores

Por que funciona: Os pontos normais vivem em regiões densas. Muitas divisões aleatórias são necessárias para isolar um dos seus vizinhos. As anomalias vivem em regiões esparsas. Uma ou duas divisões aleatórias são suficientes para isolá-los.

A pontuação de anomalia é baseada no comprimento médio do caminho em todas as árvores, normalizado pelo comprimento esperado do caminho de uma árvore de pesquisa binária aleatória:

score(x) = 2^(-average_path_length(x) / c(n))

Onde c(n) é o comprimento do caminho esperado para n amostras. Pontuação próxima de 1 significa anomalia. Pontuação próxima de 0,5 significa normal. Pontuação próxima de 0 significa muito normal (profundo em aglomerados densos).

Pontos fortes: Sem premissas de distribuição. Funciona em dimensões elevadas. Escala bem (sublinear no tamanho da amostra porque cada árvore usa uma subamostra). Lida com tipos de recursos mistos.

Fraquezas: Luta com anomalias em regiões densas (efeito de mascaramento). A divisão aleatória é menos eficaz quando muitos recursos são irrelevantes.

Principais hiperparâmetros:

  • n_estimators: Número de árvores. 100 geralmente é suficiente. Mais árvores fornecem pontuações mais estáveis, mas computação mais lenta.
  • max_samples: Número de amostras por árvore. 256 é o padrão no artigo original. Valores menores tornam as árvores individuais menos precisas, mas aumentam a diversidade. A subamostragem é o que torna Isolation Forest rápido – cada árvore vê uma pequena fração dos dados.
  • contamination: Fração esperada de anomalias. Usado apenas para definir o limite. Não afeta as pontuações em si.

Local Outlier Factor (LOF)

LOF compara a densidade local em torno de um ponto com a densidade em torno de seus vizinhos. Um ponto em uma região esparsa rodeado por regiões densas é anômalo.

Como funciona:

  1. Para cada ponto, encontre seus k vizinhos mais próximos
  2. Calcule a densidade de acessibilidade local (quão densa é a vizinhança)
  3. Compare a densidade de cada ponto com as densidades de seus vizinhos
  4. Se um ponto tiver densidade muito menor que seus vizinhos, é um valor discrepante

Pontuação LOF:

  • LOF próximo de 1,0 significa densidade semelhante à dos vizinhos (normal)
  • LOF maior que 1,0 significa menor densidade que os vizinhos (potencialmente anômalo)
  • LOF muito maior que 1,0 (por exemplo, 2,0+) significa densidade significativamente menor (provável anomalia)

A parte “local” é crítica. Considere um conjunto de dados com dois clusters: um cluster denso de 1.000 pontos e um cluster esparso de 50 pontos. Um ponto no limite do aglomerado esparso não é globalmente incomum – ele tem 50 vizinhos. Mas é localmente incomum que os seus vizinhos imediatos sejam mais densos do que ele. LOF captura essa nuance que os métodos globais não percebem.

Pontos fortes: Detecta anomalias locais (pontos que são incomuns em sua vizinhança, mesmo que não sejam globalmente incomuns). Funciona em clusters de diferentes densidades.

Fraquezas: Lentidão em grandes conjuntos de dados (O(n^2) para implementação ingênua). Sensível à escolha de k. Não funciona bem em dimensões muito altas (a maldição da dimensionalidade afeta os cálculos de distância).

Comparação

Método Suposições Velocidade Lida com altos dims Detecta anomalias locais
Pontuação Z Distribuição normal Muito rápido Sim (por recurso) Não
AIQ Nenhum (por recurso) Muito rápido Sim (por recurso) Não
Isolation Forest Nenhum Rápido Sim Parcialmente
LOF A distância é significativa Lento Mal Sim

Desafios de avaliação

Avaliar detectores de anomalias é mais difícil do que avaliar classificadores:

  • Desequilíbrio extremo de classe. Com 0,1% de anomalias, prever "normal" para tudo dá 99,9% de precisão. A precisão é inútil.
  • AUROC é enganoso. Com grande desequilíbrio, o AUROC pode parecer bom mesmo quando o modelo não detecta a maioria das anomalias em limites práticos.
  • Melhores métricas: Precision@k (dos k principais itens sinalizados, quantos são anomalias reais), AUPRC (área sob a curva de recuperação de precisão) e recall a uma taxa fixa de falsos positivos.
flowchart LR
    A[Raw Data] --> B[Train on Normal Data Only]
    B --> C[Score All Test Data]
    C --> D[Rank by Anomaly Score]
    D --> E[Evaluate Top-K Flagged Items]
    E --> F[Precision at K / AUPRC]

    style A fill:#f9f,stroke:#333
    style F fill:#9f9,stroke:#333

Detecção de anomalias Pipeline

Na prática, a detecção de anomalias segue este fluxo de trabalho:

  1. Colete dados de linha de base. Idealmente, um período em que você sabe que não há (ou há muito poucas) anomalias.
  2. Engenharia de características. Recursos brutos mais recursos derivados (estatísticas contínuas, recursos de tempo, proporções).
  3. Treine o detector. Ajuste nos dados da linha de base. O modelo aprende como é o “normal”.
  4. Pontuação de novos dados. Cada nova observação recebe uma pontuação de anomalia.
  5. Seleção de limite. Escolha o ponto de corte da pontuação. Esta é uma decisão de negócios: um limite mais alto significa menos alarmes falsos, mas mais anomalias perdidas.
  6. Alertar e investigar. Os pontos sinalizados vão para revisão humana ou resposta automática.
  7. Coleta de feedback. Registre se os itens sinalizados eram anomalias verdadeiras ou alarmes falsos. Use esses dados para avaliar o detector e ajustar o limite ao longo do tempo.

O pipeline nunca está "pronto". As distribuições de dados mudam, surgem novos tipos de anomalias e os limites precisam de ajustes. Trate a detecção de anomalias como um sistema vivo, não como um modelo único.

Construa

O código em code/anomaly_detection.py implementa pontuação Z, IQR e Isolation Forest do zero.

Detector de pontuação Z

def zscore_detect(X, threshold=3.0):
    mean = X.mean(axis=0)
    std = X.std(axis=0)
    std[std == 0] = 1.0
    z = np.abs((X - mean) / std)
    return z.max(axis=1) > threshold

Simples e vetorizado. Sinaliza um ponto se algum recurso exceder o limite.

Detector IQR

def iqr_detect(X, factor=1.5):
    q1 = np.percentile(X, 25, axis=0)
    q3 = np.percentile(X, 75, axis=0)
    iqr = q3 - q1
    iqr[iqr == 0] = 1.0
    lower = q1 - factor * iqr
    upper = q3 + factor * iqr
    outside = (X < lower) | (X > upper)
    return outside.any(axis=1)

Isolation Forest do zero

A implementação do zero constrói árvores de isolamento que particionam aleatoriamente o espaço de recursos:

class IsolationTree:
    def __init__(self, max_depth):
        self.max_depth = max_depth

    def fit(self, X, depth=0):
        n, p = X.shape
        if depth >= self.max_depth or n <= 1:
            self.is_leaf = True
            self.size = n
            return self
        self.is_leaf = False
        self.feature = np.random.randint(p)
        x_min = X[:, self.feature].min()
        x_max = X[:, self.feature].max()
        if x_min == x_max:
            self.is_leaf = True
            self.size = n
            return self
        self.threshold = np.random.uniform(x_min, x_max)
        left_mask = X[:, self.feature] < self.threshold
        self.left = IsolationTree(self.max_depth).fit(X[left_mask], depth + 1)
        self.right = IsolationTree(self.max_depth).fit(X[~left_mask], depth + 1)
        return self

O comprimento do caminho para isolar um ponto determina sua pontuação de anomalia. Caminhos mais curtos significam mais anômalos.

A classe IsolationForest agrupa múltiplas árvores:

class IsolationForest:
    def __init__(self, n_estimators=100, max_samples=256, seed=42):
        self.n_estimators = n_estimators
        self.max_samples = max_samples

    def fit(self, X):
        sample_size = min(self.max_samples, X.shape[0])
        max_depth = int(np.ceil(np.log2(sample_size)))
        for _ in range(self.n_estimators):
            idx = rng.choice(X.shape[0], size=sample_size, replace=False)
            tree = IsolationTree(max_depth=max_depth)
            tree.fit(X[idx])
            self.trees.append(tree)

    def anomaly_score(self, X):
        avg_path = average path length across all trees
        scores = 2.0 ** (-avg_path / c(max_samples))
        return scores

O fator de normalização c(n) é o comprimento esperado do caminho de uma pesquisa malsucedida em uma árvore de pesquisa binária com n elementos. É igual a 2 * H(n-1) - 2*(n-1)/n onde H é o número harmônico. Essa normalização garante que as pontuações sejam comparáveis ​​entre conjuntos de dados de tamanhos diferentes.

Cenários de demonstração

O código gera vários cenários de teste:

  1. Cluster único com valores discrepantes. Um cluster gaussiano 2D com anomalias injetadas longe do centro. Todos os métodos devem funcionar aqui.
  2. Dados multimodais. Três clusters de diferentes tamanhos e densidades. Os pontos entre clusters são anômalos. A pontuação Z é difícil porque os intervalos por recurso são amplos.
  3. Dados de alta dimensão. 50 recursos, mas as anomalias diferem em apenas 5 deles. Testa se os métodos podem encontrar anomalias num subconjunto de funcionalidades.

Cada demonstração compara todos os métodos usando precisão, recall, F1 e Precision@k.

Use-o

Com sklearn (usando implementações de biblioteca, não do zero):

from sklearn.ensemble import IsolationForest
from sklearn.neighbors import LocalOutlierFactor

iso = IsolationForest(n_estimators=100, contamination=0.05, random_state=42)
iso.fit(X_train)
predictions = iso.predict(X_test)

lof = LocalOutlierFactor(n_neighbors=20, contamination=0.05, novelty=True)
lof.fit(X_train)
predictions = lof.predict(X_test)

Nota contamination define a fração esperada de anomalias. Configurá-lo corretamente é importante – muito baixo gera anomalias, muito alto cria alarmes falsos.

O código em anomaly_detection.py compara implementações do zero com sklearn nos mesmos dados.

Parâmetro de contaminação do sklearn

O parâmetro contamination no sklearn determina o limite para converter pontuações de anomalias contínuas em previsões binárias. Isso não altera as pontuações subjacentes.

iso_5 = IsolationForest(contamination=0.05)
iso_10 = IsolationForest(contamination=0.10)

Ambos produzem as mesmas pontuações de anomalia. Mas iso_5 sinaliza os 5% principais, enquanto iso_10 sinaliza os 10% principais. Se você não conhece a verdadeira taxa de anomalia (normalmente não sabe), defina a contaminação como "automática" e trabalhe diretamente com as pontuações brutas. Defina seu próprio limite com base na compensação de custos entre falsos positivos e falsos negativos.

Uma aula SVM

Outro detector de anomalias não supervisionado que vale a pena conhecer. Uma classe SVM ajusta um limite em torno dos dados normais em um espaço de recursos de alta dimensão (usando o truque do kernel).

from sklearn.svm import OneClassSVM

oc_svm = OneClassSVM(kernel="rbf", gamma="auto", nu=0.05)
oc_svm.fit(X_train)
predictions = oc_svm.predict(X_test)

O parâmetro nu aproxima a fração de anomalias. One-Class SVM funciona bem em conjuntos de dados pequenos a médios, mas não se adapta a dados muito grandes (a matriz do kernel cresce quadraticamente).

Abordagem do codificador automático (visualização)

Autoencoders são redes neurais que aprendem a compactar e reconstruir dados. Treine com dados normais. No momento do teste, as anomalias apresentam alto erro de reconstrução porque a rede aprendeu a reconstruir apenas padrões normais.

Isso é abordado na Fase 3 (Aprendizado Profundo), mas o princípio é o mesmo: modelar o que é normal, sinalizar o que se desvia.

Detecção de anomalias no conjunto

Assim como os métodos de conjunto melhoram a classificação (Lição 11), a combinação de vários detectores de anomalias melhora a detecção. A abordagem mais simples:

  1. Execute vários detectores (pontuação Z, IQR, Isolation Forest, LOF)
  2. Normalize as pontuações de cada detector para [0, 1]
  3. Média das pontuações normalizadas
  4. Sinalize pontos acima do limite na pontuação média

Isso reduz falsos positivos porque diferentes métodos têm diferentes modos de falha. Um ponto sinalizado por todos os quatro métodos é quase certamente anômalo. Um ponto sinalizado por apenas um pode ser uma peculiaridade desse método.

Conjuntos mais sofisticados avaliam cada detector pela sua confiabilidade estimada (medida em um conjunto de validação com anomalias conhecidas, se disponível).

Considerações sobre produção

  1. Desvio de limite. À medida que a distribuição de dados muda, um limite fixo fica desatualizado. Monitore a distribuição das pontuações de anomalias e ajuste periodicamente.
  2. Fadiga de alertas. Muitos alarmes falsos e os operadores param de prestar atenção. Comece com um limite alto (menos alertas e mais confiáveis) e diminua-o à medida que a confiança aumenta.
  3. Abordagem de conjunto. Na produção, combine vários detectores. Sinalize um ponto somente se vários métodos concordarem que é anômalo. Isso reduz significativamente os falsos positivos.
  4. Engenharia de características. Recursos brutos raramente são suficientes. Adicione estatísticas contínuas, proporções, tempo desde o último evento e recursos específicos de domínio. Um bom conjunto de recursos é mais importante do que a escolha do detector.
  5. Ciclo de feedback. Quando os operadores investigam itens sinalizados e os confirmam ou descartam, devolva isso ao sistema. Acumule dados rotulados ao longo do tempo para avaliar e melhorar o detector.

Envie

Esta lição produz:

  • outputs/skill-anomaly-detector.md -- uma habilidade de decisão para escolher o detector certo
  • code/anomaly_detection.py -- Z-score, IQR e Isolation Forest do zero, com comparação com sklearn

Escolhendo um limite

A pontuação da anomalia é contínua. Você precisa de um limite para tomar decisões binárias. Esta é uma decisão de negócios, não técnica.

Considere dois cenários:

  • Detecção de fraude. Fraudes perdidas são caras (estornos, confiança do cliente). Alarmes falsos custam a um analista humano 5 minutos para serem investigados. Defina um limite baixo para detectar mais fraudes e aceitar mais alarmes falsos.
  • Manutenção de equipamentos. Um alarme falso significa um desligamento desnecessário que custa US$ 50.000. Uma falha perdida significa um reparo de US$ 500.000. Defina o limite para equilibrar esses custos.

Em ambos os casos, o limite ideal depende da relação de custo entre falsos positivos e falsos negativos. Trace a precisão e o recall em diferentes limites, sobreponha a função de custo e escolha o ponto de custo mínimo.

Dimensionamento para produção

Para detecção de anomalias em tempo real na produção:

  1. Treinamento em lote, pontuação on-line. Treine o modelo periodicamente (diariamente, semanalmente) em dados normais recentes. Pontue cada nova observação à medida que ela chega.
  2. O cálculo de recursos deve corresponder. Se você treinou com estatísticas contínuas ao longo de 30 dias, precisará de 30 dias de histórico para calcular recursos para uma nova observação. Armazene o histórico necessário.
  3. Monitoramento da distribuição de pontuação. Acompanhe a distribuição das pontuações de anomalias ao longo do tempo. Se a pontuação mediana subir, os dados estão mudando ou o modelo está obsoleto.
  4. Explicabilidade. Ao sinalizar uma anomalia, diga o motivo. Pontuação Z: "O recurso X está 4,2 desvios padrão acima do normal." Isolation Forest: "Este ponto foi isolado em média em 3,1 divisões (os pontos normais são 8,5)."

Exercícios

  1. Ajuste de limite. Execute o detector de pontuação Z com limites de 1,0 a 5,0 em passos de 0,5. Precisão do gráfico e recuperação em cada limite. Onde está o ponto ideal para seus dados?

  2. Anomalias multivariadas. Crie dados 2D onde cada recurso individualmente parece normal, mas a combinação é anômala (por exemplo, pontos distantes da diagonal do cluster principal). Mostre que a pontuação Z por recurso não os detecta, mas Isolation Forest os detecta.

  3. LOF do zero. Implemente Local Outlier Factor usando k-vizinhos mais próximos. Compare com o LocalOutlierFactor do sklearn nos mesmos dados. Use k=10 e k=50 – como a escolha de k afeta os resultados?

  4. Detecção de anomalia de streaming. Modifique o detector de pontuação Z para funcionar em uma configuração de streaming: atualize a média e a variância em execução à medida que novos pontos chegam (algoritmo on-line de Welford). Compare com a pontuação Z do lote nos mesmos dados.

  5. Avaliação do mundo real. Pegue um conjunto de dados com anomalias conhecidas (fraude de cartão de crédito de Kaggle, por exemplo). Avalie todos os quatro métodos usando Precision@100, Precision@500 e AUPRC. Qual método funciona melhor? Por que?

Termos-chave

Prazo O que as pessoas dizem O que isso realmente significa
Anomalia “Ponto atípico e incomum” Um ponto de dados que se desvia significativamente do padrão esperado de dados normais
Anomalia de ponto “Um único valor estranho” Uma observação individual que é incomum independentemente do contexto
Anomalia contextual “Valor normal, contexto errado” Uma observação que é incomum dado o seu contexto (tempo, localização, etc.), mas que pode ser normal noutro contexto
Isolation Forest "Divisões aleatórias para encontrar valores discrepantes" Um conjunto de árvores aleatórias que isola anomalias com menos divisões do que pontos normais
Local Outlier Factor “Compare a densidade com os vizinhos” Um método que sinaliza pontos cuja densidade local é muito inferior à densidade dos seus vizinhos
Pontuação Z “Desvios padrão da média” (x - média) / padrão, medindo a distância que um ponto está do centro em unidades de desvio padrão
AIQ “Intervalo interquartil” 3º trimestre - 1º trimestre, medindo a dispersão dos 50% intermediários dos dados, usados ​​para detecção robusta de valores discrepantes
Contaminação “Fração esperada de anomalias” Um hiperparâmetro informando ao detector qual proporção dos dados ele deve sinalizar como anômala
Precisão@k “Das k principais bandeiras, quantas são reais” Precisão calculada apenas nos k pontos mais suspeitos, útil para detecção de anomalias desequilibradas
AUPRC "Área sob curva de recuperação de precisão" Uma métrica que resume o desempenho de recuperação de precisão em todos os limites, melhor que AUROC para dados desequilibrados

Leitura Adicional

0 lifetime access. Curriculum based on AI Engineering from Scratch by Rohit Ghumare (MIT, used under attribution).