2.6.4
Isolation Forest
Σύνοψη
- Ο 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))
3. Υπερπαράμετροι #
n_estimators: Αριθμός δέντρων. Περισσότερα δέντρα δίνουν πιο σταθερά αποτελέσματα.max_samples: Δείγματα ανά δέντρο. Προεπιλογήmin(256, n_samples).contamination: Εκτιμώμενο ποσοστό ανωμαλιών· χρησιμοποιείται για τον ορισμό του κατωφλίου.max_features: Χαρακτηριστικά που χρησιμοποιούνται σε κάθε διαίρεση.
4. Πλεονεκτήματα και μειονεκτήματα #
| Πλεονεκτήματα | Μειονεκτήματα |
|---|---|
| Σχετικά γρήγορος ακόμα και σε υψηλές διαστάσεις | Τα αποτελέσματα μπορεί να ποικίλλουν με τον τυχαίο σπόρο |
| Δεν απαιτείται κλιμάκωση (αλλά συνιστάται) | Μικρές τοπικές ανωμαλίες μπορεί να μη εντοπιστούν |
| Απλή εκπαίδευση και συμπερασμός | Η contamination μπορεί να είναι δύσκολο να οριστεί |
5. Σύνοψη #
- Ο Isolation Forest είναι ένας ανιχνευτής ανωμαλιών βασισμένος σε δέντρα που χρησιμοποιεί μικρά μονοπάτια απομόνωσης ως σήμα ανωμαλίας.
- Είναι εύκολος στη χρήση στο scikit-learn, ρυθμίζοντας κυρίως τον αριθμό δέντρων και δειγμάτων.
- Είναι κατάλληλος όταν χρειάζεται γρήγορο φιλτράρισμα υποψηφίων για αρχεία καταγραφής ή δεδομένα αισθητήρων.