Isolation Forest

2.6.4

Isolation Forest

Actualizado 2020-03-11 Lectura 2 min

Resumen #

Resumen
  • Isolation Forest detecta anomalias aislando puntos con particiones aleatorias en muchos arboles.
  • Los puntos con longitud de camino promedio corta se consideran mas anómalos porque se separan rapidamente del resto.
  • El parametro contamination y el numero de arboles controlan sensibilidad, estabilidad y volumen de alertas.

Intuicion #

La idea central es que los outliers son raros y, por eso, se aislan con pocos cortes. Al promediar la profundidad de aislamiento en muchos arboles aleatorios, obtenemos una puntuacion robusta para decidir que puntos son anómalos.

Explicacion Detallada #

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.