Anomaly detection
In questa pagina 9
Dopo l'apprendimento supervisionato si passa a quello non supervisionato: in questa nota il rilevamento di anomalie, nella successiva il clustering (Clustering e k-meansIl clustering raggruppa osservazioni simili senza etichette, come preprocessing (un modello per ogni cluster) o come obiettivo (segmentazione clienti, organizzazione di documenti). K-means: si sceglie $K$, si inizializzano $K$ centroidi, si alterna assegnazione di ogni punto al centroide più vicino e aggiornamento di ogni centroide alla media dei suoi punti, fino a convergenza; minimizza $\mathrm{MSE}{\text{within}}=\frac1N\sum_k\sum{x_i\in C_k}|x_i-\mu_k|^2$ ma solo fino a un minimo locale, quindi dipende dall'inizializzazione. Il numero di cluster si sceglie col metodo del gomito (la dispersione cala sempre, si cerca dove rallenta) o con la gap statistic $\mathrm{Gap}(K)=E[\log W_K^{ref}]-\log W_K$ (si prende il più piccolo $K$ con $\mathrm{Gap}(K)\ge\mathrm{Gap}(K+1)-s_{K+1}$). Il clustering gerarchico agglomerativo parte da un cluster per punto e fonde i due più vicini (linkage single, complete, average, Ward) costruendo un dendrogramma; quello divisivo parte da un solo cluster. Programma di Telecomunicazioni: clustering.Clustering e k-means →) (Lezione 19 · Apprendimento non supervisionato e anomaly detection, Lezione 21 · Laboratorio anomaly detection e clustering). Gli esercizi sono Esercizio - Statistica T2 di Hotelling e soglia chi quadro e Esercizio - Isolation forest da zero e anomalie sul dataset delle abitazioni.
Apprendimento non supervisionato
Si ricordi la differenza (Introduzione al machine learningIl machine learning (ML) è la parte dell'intelligenza artificiale che costruisce soluzioni a partire dai dati e non da regole scritte a mano: un modello matematico con parametri liberi viene addestrato su esempi storici e poi usato su dati nuovi. Si distingue tra apprendimento supervisionato (dati $(x,y)$, si impara la mappa $x\mapsto y$: regressione se $y$ è un numero, classificazione se è una categoria), non supervisionato (solo $x$, si cercano struttura e gruppi) e per rinforzo (stato, azione, ricompensa). Un progetto ML non è «plug and play»: segue le fasi problema, raccolta, pulizia, modellazione, rilascio, e va valutato su dati mai visti; senza dati non c'è modello, alcuni fenomeni sono imprevedibili, la generalizzazione fuori dal dominio di addestramento non è garantita.Introduzione al machine learning →): nell'apprendimento supervisionato i dati sono coppie e si impara la mappa ; nel non supervisionato si hanno solo gli ingressi , senza etichette, e il compito è scoprire la struttura o la distribuzione sottostante dei dati. Alcuni compiti non supervisionati: clustering (trovare gruppi), riduzione di dimensione (Analisi delle componenti principali (PCA)Con $p>3$ variabili non si può disegnare il dataset. La PCA (analisi delle componenti principali) lo proietta su pochi assi ortogonali, le componenti principali: dopo aver centrato (e di solito standardizzato) i dati, le direzioni sono gli autovettori della matrice di covarianza $S=\frac1{n-1}X_c^TX_c$ ordinati per autovalore $\lambda_1\ge\lambda_2\ge\dots$; $\lambda_k$ è la varianza lungo la componente $k$ e $\lambda_k/\sum\lambda_j$ la frazione spiegata (scree plot). Trovare la retta che minimizza le distanze dai punti equivale a massimizzare la varianza delle proiezioni (Pitagora). È lineare e conserva la struttura globale, non quella locale; t-SNE e UMAP sono alternative non lineari solo per visualizzare. Approfondimento: non nel programma di Telecomunicazioni.Analisi delle componenti principali (PCA) →), stima di densità, regole di associazione, topic modelling per testi, rilevamento di anomalie. Un compito non supervisionato può essere l'obiettivo finale del progetto o un passo di preprocessing.
Che cos'è un'anomalia
Definizione (anomalia o outlier). «Un outlier è un'osservazione che si discosta così tanto dalle altre da destare il sospetto di essere stata generata da un meccanismo diverso» (Hawkins, 1980). In un dataset, per definizione, gli outlier dovrebbero essere pochi.
Esempio. Un sensore di temperatura che segna gradi invece di per un guasto del sensore.
Perché rilevare le anomalie
- Preprocessing (pulizia). Gli outlier possono essere errori di inserimento o di misura che distorcono i risultati; toglierli può migliorare molto le prestazioni. Va fatto con attenzione, perché togliere i dati «difficili» migliora sempre le metriche.
- Ha senso (non è barare): (i) sono errori o rumore (sensore guasto, «2000» al posto di «200»); (ii) si prepara il dato per un modello che assume la normalità, e la regressione lineare (Regressione lineareNell'apprendimento supervisionato si impara una funzione $F(x)$ dagli esempi $(x,y)$: regressione se $y$ è continua, classificazione se è categorica. Il modello lineare è $F_\beta(x)=\beta_0+\beta_1x_1+\dots+\beta_px_p=X\beta$ (con una colonna di uni per $\beta_0$) e i parametri si scelgono minimizzando l'errore quadratico medio $\mathrm{MSE}=\frac1n\sum_i(y_i-F_\beta(x_i))^2$, funzione convessa dei parametri. Annullando il gradiente di $J(\beta)=|y-X\beta|^2$ si ottengono le equazioni normali $X^TX\beta=X^Ty$ e la soluzione dei minimi quadrati ordinari $\beta=(X^TX)^{-1}X^Ty$. Il coefficiente di determinazione $R^2=1-SS_{res}/SS_{tot}$ misura la qualità del fit (0 = come la media, negativo = peggio della media). Un modello va valutato su un test set mai usato per addestrare: l'errore sul training è ottimistico e un polinomio di grado alto lo azzera senza generalizzare.Regressione lineare →) è molto influenzata dai valori estremi; (iii) si analizza il comportamento «tipico» (acquisto medio di un cliente).
- È barare: (i) si tolgono solo per migliorare le metriche (per esempio togliendo i casi difficili dal test set: è fuga di informazione); (ii) gli outlier sono proprio ciò che interessa (frodi, diagnosi, guasti): toglierli annulla lo scopo. La decisione non è sempre facile: può servire la competenza di dominio e conviene tenere traccia delle scelte fatte.
- Obiettivo finale. In molti ambiti il rilevamento è l'obiettivo: frodi, diagnostica di produzione industriale, cybersicurezza, transazioni nel marketing digitale.
- Monitoraggio di una soluzione in produzione. Un modello distribuito va controllato: i dati devono rimanere coerenti con quelli dell'addestramento. Se compaiono outlier, si può non fidarsi della singola previsione o riaddestrare (principi di MLOps).
Metodi semplici
Box plot. Gli outlier sono i punti oltre i «baffi», cioè oltre da e (Correlazione e visualizzazione dei datiLa correlazione di Pearson $r=\sum(X_i-\bar X)(Y_i-\bar Y)/\big(\sqrt{\sum(X_i-\bar X)^2}\sqrt{\sum(Y_i-\bar Y)^2}\big)\in[-1,1]$ misura la relazione lineare tra due variabili (covarianza divisa per le deviazioni standard); correlazione non implica causalità. Serve a capire quali variabili contano per il target e a eliminare quelle quasi duplicate (|r| molto alto). Gli indicatori di sintesi non bastano (quartetto di Anscombe, Datasaurus): vanno affiancati ai grafici: istogramma, KDE, box plot, violin plot, heatmap di correlazione, scatter plot e matrice di scatter plot.Correlazione e visualizzazione dei dati →, Statistica per il machine learningI dati di un problema ML si organizzano nella matrice di progetto $X$ ($n$ osservazioni, $p$ variabili). La statistica serve a capirli, ripulirli e prepararli: i momenti (media $\mu$, varianza $\sigma^2$, asimmetria, curtosi), i quartili con lo scarto interquartile $\mathrm{IQR}=Q_3-Q_1$ (all'esame senza interpolazione), la moda per i dati categorici. Con queste quantità si imputano i dati mancanti (media o mediana), si eliminano le variabili costanti e si standardizza con lo z-score $z=(x-\mu)/\sigma$, usando sempre media e deviazione standard del solo training set.Statistica per il machine learning →).
Carte di controllo univariate. Molto usate in industria per il monitoraggio on-line. Una carta di controllo è il grafico nel tempo di una variabile (o di un indicatore di processo, KPI) con una linea centrale (la media attesa del processo) e due soglie, il limite di controllo superiore (UCL) e inferiore (LCL), che definiscono l'intervallo «normale»: con media e deviazione standard stimate. Con («tre sigma») e una variabile gaussiana (Distribuzione gaussiana (normale)N(μ, σ²) ha densità e^(−(x−μ)²/(2σ²)) / √(2πσ²), a campana centrata in μ con larghezza σ; media μ, varianza σ²; si standardizza con Z = (X − μ)/σ ~ N(0, 1) e si calcola P(X ≤ x) = Φ((x − μ)/σ), con Φ(−z) = 1 − Φ(z); aX + b è ancora gaussiana, N(aμ + b, a²σ²).Distribuzione gaussiana (normale) →) il dei dati è «inlier» (cioè ).
Esempio. , : , ; la misura è un'anomalia.
Problemi. Con molte variabili servono molte carte: la complessità del monitoraggio cresce, c'è sovraccarico cognitivo e falsi allarmi. E soprattutto le carte univariate non vedono le anomalie multivariate, in cui ogni variabile è nella norma ma la combinazione no.
Statistica di Hotelling
Definizione (statistica di Hotelling). Per variabili, con media campionaria e matrice di covarianza : È uno z-score multivariato: misura quanto un'osservazione è lontana dalla media tenendo conto delle correlazioni. Un punto è un outlier multivariato se .
Per dati gaussiani, segue una distribuzione chi-quadro con gradi di libertà (Vettori gaussianiX = (X₁, ..., Xₙ) è un vettore gaussiano N(m, Σ) se ogni combinazione lineare a·X è gaussiana (equivalentemente X = m + AZ con Z gaussiane standard indipendenti); se Σ è invertibile ha densità exp(−½(x−m)ᵀΣ⁻¹(x−m)) / √((2π)ⁿ det Σ). Proprietà chiave: AX + b ~ N(Am + b, AΣAᵀ), le marginali sono gaussiane e componenti non correlate sono indipendenti.Vettori gaussiani →; il chi-quadro è un caso della Distribuzione gammaΓ(α, λ) ha densità λ^α x^(α−1) e^(−λx) / Γ(α) per x > 0, dove Γ(α) = ∫ x^(α−1) e^(−x) dx è la funzione Gamma (Γ(n) = (n − 1)!, Γ(1/2) = √π); media α/λ, varianza α/λ²; Γ(1, λ) = Exp(λ), e la somma di n esponenziali Exp(λ) indipendenti è Γ(n, λ), il tempo d'attesa dell'n-esimo evento.Distribuzione gamma →), e dove è il numero di variabili e quanto si vuole essere severi (valori tipici o ): è il quantile di livello del chi-quadro, che si legge su tabelle.
Esempio. Quantili: per e , (uguale a ); per : () e (); per : . Caso univariato: con media e varianza la statistica è : nel laboratorio, per valori da il punto ha , ben oltre : anomalo.
Esempio bidimensionale. Si abbiano due variabili con media , varianze e covarianza : . L'inversa (Matrice inversaL'inversa di una matrice quadrata A è la matrice A⁻¹ con A A⁻¹ = A⁻¹ A = I; esiste se e solo se rango(A) = n e si calcola con Gauss-Jordan riducendo (A | I) fino a (I | A⁻¹).Matrice inversa →) ha determinante e vale . Per il punto si ha . Poiché il punto è un outlier, anche se ciascuna coordinata, presa da sola, vale cioè è entro una deviazione standard: le due variabili sono molto correlate e vederle di segno opposto è insolito. La distanza euclidea normale darebbe invece .
Grafico interattivo: Con correlazione 0,8 e varianze 1, la regione «normale» T² ≤ 5,99 (α = 0,05) è un'ellisse allungata lungo la diagonale: il punto (1, −1) è fuori (T² = 10) anche se ogni coordinata è entro 1σ; il punto (2, 2) è dentro (T² = 4,4) anche se ogni coordinata è a 2σ
(Per : .)
Limiti. Le variabili reali sono raramente gaussiane e raramente unimodali (con un solo picco): nei dati industriali reali spesso molte anomalie restano non rilevate perché la nube ha più gruppi o forme non ellittiche.
Rilevamento multivariato non supervisionato
I metodi multivariati non supervisionati producono un anomaly score: un unico indicatore quantitativo del grado di «anomalia» di un sistema con molte variabili. Vantaggi: (1) non servono dati etichettati; (2) si possono considerare decine o centinaia di variabili insieme; (3) non serve che i dati siano gaussiani o unimodali. Famiglie di metodi (per dati tabellari, per esempio nella libreria PyOD): basati sulla densità (LOF, DBSCAN), sulla distanza (k-NN, Classificazione e k-nearest neighborsNella classificazione l'uscita $y$ è una categoria (con $C$ classi; $C=2$ è il caso binario). Il classificatore più semplice è il k-nearest neighbors: una nuova osservazione prende la classe più frequente (voto di maggioranza) tra i suoi $k$ vicini più prossimi nel training, con distanza euclidea $\sqrt{\sum(A_i-B_i)^2}$ o di Manhattan $\sum|A_i-B_i|$ (per la regressione si fa la media dei vicini). $k$ è un iperparametro: $k$ piccolo dà bordi frastagliati e overfitting, $k$ grande underfitting. È un metodo basato su istanze e «pigro» (nessun addestramento, costo alla predizione), sensibile a scala e feature irrilevanti e alla maledizione della dimensionalità; gli ingressi categorici si codificano con one-hot. Approfondimento: non nel programma di Telecomunicazioni.Classificazione e k-nearest neighbors →), sul clustering (CBLOF), su reti neurali (autoencoder, Autoencoderapprofondimento: non nel programma di Telecomunicazioni. Un autoencoder è una rete non supervisionata che impara a ricostruire il proprio ingresso passando per un collo di bottiglia: encoder $z=e(x)$ (dimensione bassa), decoder $\hat x=d(z)$, loss $|x-d(e(x))|^2$. Con attivazioni lineari equivale alla PCA; con non linearità impara rappresentazioni latenti più ricche (ipotesi del manifold). Varianti: sparse (penalità $\ell_1$ sulle attivazioni), denoising (ingresso corrotto, bersaglio pulito), convolutivi (inpainting). Anomaly detection: si addestra su dati normali e si segnala come anomalo ciò che ha errore di ricostruzione sopra una soglia. VAE: l'encoder produce media e deviazione standard di una gaussiana, il campione si ottiene con il trucco di riparametrizzazione $z=\mu+\sigma\odot\zeta$, $\zeta\sim\mathcal N(0,I)$, e la loss è errore di ricostruzione più KL verso $\mathcal N(0,I)$, con $KL=\frac12\sum(\mu^2+\sigma^2-1-\ln\sigma^2)$; il $\beta$-VAE pesa il KL con $\beta>1$ per rappresentazioni disaccoppiate. Cenno ai GAN.Autoencoder →), e l'isolation forest.
Isolation forest
L'isolation forest (Liu et al.) è un algoritmo efficiente che supera altri metodi in molti ambiti. Si basa su un procedimento di partizione (che costruisce gli isolation tree) e sull'idea che outlier e inlier siano influenzati in modo diverso: un punto anomalo, lontano dagli altri, viene separato con pochi split casuali; un punto in una zona densa ne richiede molti. È un metodo ensemble (Metodi ensemble - bagging, random forest e boostingUn albero da solo ha varianza alta; un ensemble combina molti modelli deboli. Bagging: ogni albero è addestrato su un campione bootstrap (n estrazioni con rimpiazzo, circa il 63% di campioni distinti) e si vota o si fa la media: riduce la varianza, perché la media di $T$ stimatori con varianza $\sigma^2$ e correlazione $\rho$ ha varianza $\rho\sigma^2+(1-\rho)\sigma^2/T$. Random forest = bagging + a ogni split solo $\sqrt p$ feature casuali (alberi meno correlati); l'importanza di una feature è la somma delle riduzioni di Gini pesate sui nodi in cui è usata. Boosting: alberi in sequenza, ciascuno corregge gli errori dei precedenti, e si riduce il bias. Gradient boosting: $F\leftarrow F+\eta h$ con $h$ albero sui residui (gradiente negativo della perdita), $\eta$ piccolo; AdaBoost: stump e pesi sui campioni sbagliati; XGBoost: similarity score $\frac{(\sum r)^2}{N+\lambda}$, gain, potatura con $\gamma$, output $\frac{\sum r}{N+\lambda}$. Programma di Telecomunicazioni: Random Forests; boosting come approfondimento.Metodi ensemble - bagging, random forest e boosting →): lo score è la media della profondità su molti alberi.
Esempio (dalle slide). Isolare un inlier in mezzo ai dati richiede 4 split; isolare un outlier isolato in un angolo, 1 solo.
L'albero di isolamento
Si costruisce un albero binario in modo ricorsivo su un sottoinsieme dei dati:
- a ogni nodo si sceglie a caso una feature e a caso un valore di split tra il minimo e il massimo di quella feature nei dati del nodo;
- si ferma quando il nodo ha un solo punto, oppure si raggiunge la profondità massima (di solito con la dimensione del campione), oppure tutti i punti sono uguali.
Ogni cammino dalla radice a una foglia isola un punto: la profondità della foglia, cioè il numero di split necessari, misura quanto il punto è facile da isolare.
Perché tanta casualità. L'obiettivo non è apprendere un modello preciso ma separare le anomalie dal resto in fretta. (1) Le anomalie sono rare e molto diverse: gli split casuali le isolano presto (a poca profondità). (2) Non servono split «buoni» come nei decision tree (Gini, entropia): conta solo quanti split servono per isolare un punto, quindi il caso va bene, anzi è ideale. (3) Mediare su molti alberi con split casuali diversi rende la stima robusta. La scelta casuale della feature evita bias ed esplora tutte le dimensioni; quella casuale del valore semplifica e accelera.
Passi dell'algoritmo
- Sottocampionare: da tutto il dataset si estrae a caso un sottoinsieme (per esempio punti): riduce il costo e migliora la generalizzazione.
- Costruire un albero per ciascun sottocampione con le regole sopra.
- Ripetere per costruire una foresta (tipicamente alberi), ciascuno su un campione diverso.
- Calcolare le lunghezze dei cammini: ogni punto del dataset originale è fatto scendere in tutti gli alberi e si registra la profondità raggiunta.
- Calcolare l'anomaly score. Per il punto , con la lunghezza media del cammino su tutti gli alberi:
è la lunghezza media di una ricerca senza successo in un albero binario di ricerca con nodi: è la lunghezza attesa di un cammino in un albero con punti e serve a normalizzare, perché un cammino breve in un dataset piccolo non è uguale a uno breve in un dataset grande.
Esempio. Con : . Se un punto ha cammino medio (cioè «medio»), . Per : (quasi anomalo); per : ; per : . In generale: se (isolato subito: anomalia certa), se (punto «normale»), se è molto maggiore di (in zone molto dense).
Grafico interattivo: Anomaly score s = 2^(−E/c(n)) in funzione della lunghezza media del cammino E, con n = 256 (c = 10,25): cammini brevi danno score vicino a 1 (anomalie), E = c(n) dà 0,5
- Soglia. Un punto è dichiarato anomalo se . Un modo per ricavare è la contaminazione: una proporzione (tra e , di solito) che indica la frazione attesa di outlier nel dataset. La soglia è il percentile degli score di training: con contaminazione il dei punti con score più alto è dichiarato anomalo. La contaminazione è una manopola tra falsi positivi (punti normali dichiarati anomali) e falsi negativi (anomalie non segnalate).
Esempio (verificato con un'implementazione da zero). punti gaussiani standard in 2D più punti molto lontani (, , , , ). Con alberi e profondità massima i cammini medi dei cinque punti iniettati valgono tra e (contro per il punto mediano), e i loro score - superano quello di ogni punto normale (massimo , mediana ): i cinque punti sono i primi cinque nella classifica.
Correzione della profondità. Se si ferma un albero alla profondità massima con più punti nel nodo, la profondità si corregge sommando : . Il nodo con un solo punto ha . (Nel notebook, per comodità, è approssimata con , : per dà invece di , per piccoli è meno precisa: esatta e approssimata, e per si pone .)
Esempi e limiti
Nel laboratorio, sul dataset delle abitazioni della California con due variabili (MedInc, AveRooms), la foresta da zero segnala i punti con valori estremi. Per valutare senza etichette si possono iniettare anomalie sintetiche (per esempio punti a e dalla media) e vedere se vengono trovate. Un limite («bias» dell'isolation forest): lo score può essere incoerente con i dati, perché gli split casuali paralleli agli assi lasciano zone vuote, anche lontane dai cluster, con score basso (cioè «normali»), dove un punto anomalo non verrebbe rilevato. Nelle prove d'esame è stata proposta una variante «meno casuale» (per esempio non riusare una feature già usata nel ramo): non ci si aspetta che migliori, perché la casualità è un punto di forza dell'algoritmo.
Altri approcci
- PCA non è adatta al rilevamento di anomalie: cerca le direzioni di massima varianza assumendo che lì stia l'informazione, ma le anomalie sono rare e contribuiscono poco alla varianza, quindi la PCA tende a ignorarle (Analisi delle componenti principali (PCA)Con $p>3$ variabili non si può disegnare il dataset. La PCA (analisi delle componenti principali) lo proietta su pochi assi ortogonali, le componenti principali: dopo aver centrato (e di solito standardizzato) i dati, le direzioni sono gli autovettori della matrice di covarianza $S=\frac1{n-1}X_c^TX_c$ ordinati per autovalore $\lambda_1\ge\lambda_2\ge\dots$; $\lambda_k$ è la varianza lungo la componente $k$ e $\lambda_k/\sum\lambda_j$ la frazione spiegata (scree plot). Trovare la retta che minimizza le distanze dai punti equivale a massimizzare la varianza delle proiezioni (Pitagora). È lineare e conserva la struttura globale, non quella locale; t-SNE e UMAP sono alternative non lineari solo per visualizzare. Approfondimento: non nel programma di Telecomunicazioni.Analisi delle componenti principali (PCA) →). Esiste una variante, la PCA con sovracampionamento (osPCA): le direzioni principali rappresentano gli attributi «normali» e un outlier cambia la direzione delle componenti; per renderlo evidente si ripete il campione molte volte.
- Spiegare lo score. L'anomaly score avverte di una situazione potenzialmente anomala, ma tocca all'utente scoprire la causa: per l'analisi delle cause serve un'informazione aggiuntiva, come un ordinamento delle variabili. DIFFI (Depth-based Isolation Forest Feature Importance) è un metodo di intelligenza artificiale spiegabile (Explainable AI (XAI)approfondimento: non nel programma di Telecomunicazioni. L'interpretabilità è l'arte di produrre descrizioni di un modello abbastanza semplici da essere capite da un umano; la spiegabilità aggiunge la completezza (permettere di anticipare la previsione). I metodi si classificano in intrinseci o post-hoc, agnostici o specifici del modello, globali o locali. Modelli intrinsecamente interpretabili: regressione lineare (pesi $\beta_j$, intervalli di confidenza, LASSO per la sparsità), regressione logistica ($\log\frac y{1-y}=\beta_0+\sum\beta_jx_j$), alberi. Importanza nelle foreste: MDI $=\sum_{\text{nodi}}\frac{n_p}{n_{TOT}}\Delta Gini$ (con feature selection bias). Metodi agnostici: permutation importance (aumento dell'errore dopo aver mescolato una feature), PDP $\hat f_S(x_S)=\frac1n\sum_if(x_S,x_C^{(i)})$ (media delle curve ICE), LIME (modello semplice locale pesato sui punti perturbati), SHAP (valori di Shapley: media dei contributi marginali su tutti gli ordini, somma $=f(x)-f(\text{base})$). Per le reti profonde: mappe di salienza, Grad-CAM, occlusione. Valutazione: livello applicativo, umano, funzionale. Lab: cardiopatia AHD con logistica, LASSO, random forest, ICE, PDP, SHAP.Explainable AI (XAI) →) per l'isolation forest: una feature è «importante» se isola gli outlier a piccola profondità (vicino alla radice) e allo stesso tempo non contribuisce all'isolamento degli inlier; dà un ordinamento globale (variabili importanti per tutto il modello) e locale (per una singola previsione), non richiede etichette, ha basso costo e non richiede regolazioni.
- Carte di controllo contro anomaly score. Le informazioni, per consentire decisioni, devono essere complete, concise e interpretabili.
Valutare un sistema non supervisionato
È il vero svantaggio dei metodi non supervisionati: senza etichette, valutare è difficile. Se non si hanno etichette si cercano etichette approssimate: (i) chiedere a esperti di dominio di rivedere le prime anomalie segnalate: hanno senso? (ii) usare eventi noti (guasti, allarmi, anomalie nei log) come etichette parziali; (iii) iniezione sintetica: aggiungere anomalie note (rumore, punti fuori distribuzione) e controllare se il modello le trova.
Codice
import numpy as np
from scipy.stats import chi2
class HotellingT2:
def __init__(self, alpha=0.05): self.alpha = alpha
def fit(self, X):
self.mean = X.mean(axis=0)
self.inv_cov = np.linalg.inv(np.cov(X, rowvar=False))
def t2(self, X):
d = X - self.mean
return np.einsum("ij,jk,ik->i", d, self.inv_cov, d) # (x-m)^T S^-1 (x-m) per riga
def predict(self, X):
return self.t2(X) > chi2.ppf(1 - self.alpha, df=X.shape[1]) # True = anomalo
# isolation forest: from sklearn.ensemble import IsolationForest; IsolationForest(contamination=0.01).fit(X)
# nel laboratorio e nell'esame lo si implementa da zero (albero con split casuali, c(n), soglia a percentile)Errori tipici
- Togliere gli outlier per migliorare le metriche, o togliere proprio ciò che si vuole trovare.
- Applicare le carte di controllo variabile per variabile e credere di coprire le anomalie multivariate.
- Usare con soglia chi-quadro su dati non gaussiani o multimodali.
- Dimenticare di normalizzare con : il numero di campioni cambia la scala dei cammini.
- Scambiare il verso: score alto (cammino corto) = anomalia.
- Interpretare la contaminazione come una proprietà dei dati noti: è una scelta che regola il compromesso tra falsi positivi e falsi negativi.
Versione ripasso
Definizione. Anomalia (outlier): osservazione che si discosta tanto dalle altre da far pensare a un meccanismo generatore diverso; dovrebbe essere rara. Non supervisionato: solo , nessuna etichetta.
Usi. Preprocessing (togliere errori/rumore ha senso; togliere casi difficili per migliorare le metriche o gli outlier che interessano è barare), obiettivo finale (frodi, guasti, cybersicurezza), monitoraggio in produzione (MLOps).
Semplici. Box plot (). Carta di controllo: , per dati gaussiani; non vede anomalie multivariate.
Formula (Hotelling). , z-score multivariato; anomalia se (dati gaussiani).
Esempio. , : : outlier anche se ogni coordinata è entro . Quantili: ; ; . Limite: dati non gaussiani/unimodali.
Isolation forest. Albero: feature e valore di split casuali fra min e max, fino a un punto o alla profondità massima (); sottocampioni (es. ), alberi. Le anomalie sono isolate con pochi split (cammini brevi).
Formula (anomaly score). , , ( = lunghezza media di una ricerca senza successo in un BST).
Esempio. : ; ; ; . per .
Soglia: contaminazione = frazione attesa di outlier = percentile contaminazione degli score di training (manopola falsi positivi/negativi). Profondità corretta: .
Altri. PCA non adatta (le anomalie contribuiscono poco alla varianza); osPCA; DIFFI (XAI per iForest, locale e globale, senza etichette). Valutare senza etichette: esperti sulle top-, eventi noti come etichette parziali, anomalie sintetiche iniettate.
Errori tipici: togliere gli outlier per migliorare le metriche; solo carte univariate; su dati non gaussiani; score alto = anomalia (non il contrario); scordare .
Esercizi su questo argomento
- Esercizio - Albero di isolamento passo per passo (laboratorio di ripasso)
- Esercizio - Autoencoder, anomaly detection e KL del VAE
- Esercizio - Isolation forest da zero e anomalie sul dataset delle abitazioni
- Esercizio - Statistica T2 di Hotelling e soglia chi quadro
- Esercizio - Test di esempio della parte teorica (simulazione d'esame)