Isolation Forest

2.6.4

Isolation Forest

Ενημέρωση 2020-03-11 Ανάγνωση 2 λεπτά
Σύνοψη
  • Ο Isolation Forest απομονώνει σημεία μέσω δέντρων τυχαίας κατάτμησης και χρησιμοποιεί μικρά μήκη μονοπατιών ως ένδειξη ανωμαλίας.
  • Κάνει ασθενείς υποθέσεις κατανομής και κλιμακώνεται καλά σε ρυθμίσεις υψηλών διαστάσεων.
  • Η contamination και οι ρυθμίσεις δέντρων ελέγχουν την ευαισθησία ανίχνευσης και τον πρακτικό όγκο ειδοποιήσεων.

Εισαγωγή #

Οι ανωμαλίες είναι ευκολότερο να απομονωθούν από τα κανονικά σημεία. Ο Isolation Forest ποσοτικοποιεί αυτό υπολογίζοντας τον μέσο όρο του πόσο γρήγορα διαχωρίζονται τα δείγματα σε πολλά τυχαία δέντρα.

Αναλυτική Επεξήγηση #

1. Πώς λειτουργεί #

  • Τυχαία υποδειγματοληψία των δεδομένων.
  • Κατασκευή δέντρων απομόνωσης (Isolation Trees) με διαίρεση σε τυχαία επιλεγμένα χαρακτηριστικά και κατώφλια.
  • Δείγματα με μικρότερο μέσο μήκος μονοπατιού απομονώνονται ευκολότερα, οπότε είναι πιο πιθανό να είναι ανωμαλίες.

Η βαθμολογία ανωμαλίας κανονικοποιείται χρησιμοποιώντας το αναμενόμενο μήκος μονοπατιού ενός τυχαίου δυαδικού δέντρου αναζήτησης, \(c(n)\), και το παρατηρούμενο μέσο μήκος μονοπατιού.


2. Παράδειγμα σε Python #

import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
from sklearn.ensemble import IsolationForest

rng = np.random.default_rng(0)
X_inliers = 0.3 * rng.normal(size=(200, 2))
X_anom = rng.uniform(low=-4, high=4, size=(20, 2))
X = np.vstack([X_inliers, X_anom])

model = IsolationForest(n_estimators=200, contamination=0.1, random_state=0)
model.fit(X)
scores = -model.score_samples(X)
labels = model.predict(X)  # -1 = anomaly

plt.figure(figsize=(6, 5))
plt.scatter(X[:, 0], X[:, 1], c=scores, cmap="magma", s=30)
plt.colorbar(label="anomaly score")
plt.title("Isolation Forest scores")
plt.tight_layout()
plt.show()

print("Detected anomalies:", np.sum(labels == -1))

Γράφημα παραδείγματος Python


3. Υπερπαράμετροι #

  • n_estimators: Αριθμός δέντρων. Περισσότερα δέντρα δίνουν πιο σταθερά αποτελέσματα.
  • max_samples: Δείγματα ανά δέντρο. Προεπιλογή min(256, n_samples).
  • contamination: Εκτιμώμενο ποσοστό ανωμαλιών· χρησιμοποιείται για τον ορισμό του κατωφλίου.
  • max_features: Χαρακτηριστικά που χρησιμοποιούνται σε κάθε διαίρεση.

4. Πλεονεκτήματα και μειονεκτήματα #

ΠλεονεκτήματαΜειονεκτήματα
Σχετικά γρήγορος ακόμα και σε υψηλές διαστάσειςΤα αποτελέσματα μπορεί να ποικίλλουν με τον τυχαίο σπόρο
Δεν απαιτείται κλιμάκωση (αλλά συνιστάται)Μικρές τοπικές ανωμαλίες μπορεί να μη εντοπιστούν
Απλή εκπαίδευση και συμπερασμόςΗ contamination μπορεί να είναι δύσκολο να οριστεί

5. Σύνοψη #

  • Ο Isolation Forest είναι ένας ανιχνευτής ανωμαλιών βασισμένος σε δέντρα που χρησιμοποιεί μικρά μονοπάτια απομόνωσης ως σήμα ανωμαλίας.
  • Είναι εύκολος στη χρήση στο scikit-learn, ρυθμίζοντας κυρίως τον αριθμό δέντρων και δειγμάτων.
  • Είναι κατάλληλος όταν χρειάζεται γρήγορο φιλτράρισμα υποψηφίων για αρχεία καταγραφής ή δεδομένα αισθητήρων.