Isolation Forest

Basic

Isolation Forest | Aislar valores atipicos con particiones aleatorias

Creado: Última actualización: Tiempo de lectura: 2 min

Isolation Forest construye muchos arboles aleatorios y asigna un puntaje de anomalia segun que tan rapido se aisla una muestra. Funciona con buena velocidad incluso en datos de alta dimension.


1. Como funciona #

  • Se toman submuestras aleatorias de los datos.
  • Se crean Isolation Trees dividiendo con caracteristicas y umbrales elegidos al azar.
  • Las muestras con un camino promedio mas corto se aislan mas facil, por lo tanto tienen mayor probabilidad de ser anomalias.

El puntaje se normaliza con la longitud esperada del camino de un arbol binario aleatorio, \(c(n)\).


2. Ejemplo en 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 = anomalia

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

print("Anomalias detectadas:", np.sum(labels == -1))

Grafico del ejemplo en Python


3. Hiperparametros #

  • n_estimators: Numero de arboles. Mas arboles da resultados mas estables.
  • max_samples: Muestras por arbol. Por defecto min(256, n_samples).
  • contamination: Proporcion estimada de anomalias; define el umbral.
  • max_features: Numero de caracteristicas usadas por division.

4. Ventajas y desventajas #

VentajasDesventajas
Rapido incluso en alta dimensionEl resultado puede variar con la semilla
No requiere escalado (aunque se recomienda)Puede pasar por alto anomalias locales
Entrenamiento e inferencia simplescontamination puede ser dificil de ajustar

5. Resumen #

  • Isolation Forest es un metodo basado en arboles que usa caminos cortos de aislamiento como señal de anomalia.
  • En scikit-learn es facil de usar y se ajusta principalmente con el numero de arboles y el tamaño de la muestra.
  • Es util para filtrar rapidamente candidatos anormales en logs o datos de sensores.