Detección de anomalías · Laboratorio 01

Isolation Forest: entiende los hiperparámetros moviéndolos

Un curso interactivo. El modelo se entrena en tu navegador, en tiempo real: cambias un hiperparámetro y ves qué pasa con el mapa, las métricas y las gráficas. Al señalar cualquier control, indicador o término subrayado aparece su definición.

1

Capítulo 1 · ≈ 4 min

La idea: aislar en lugar de perfilar

Al terminar podrás…

  • explicar por qué un punto raro se aísla con pocos cortes aleatorios;
  • leer un score de anomalía y saber qué significa que sea 0.5, 0.7 o 0.3;
  • nombrar los dos ingredientes aleatorios del algoritmo: qué puntos usa cada árbol y dónde corta.
1

Las anomalías son pocas y diferentes

No modelamos lo "normal": buscamos lo que se aleja de la masa de datos.

2

Se aíslan con cortes al azar

Cada árbol elige una variable y un valor de corte aleatorios hasta dejar cada punto solo en su celda.

3

Menos cortes ⇒ más anómalo

Se promedia el nº de cortes sobre muchos árboles (un bosque) y se normaliza a un score entre 0 y 1.

Carrera de aislamiento

Elige un punto y haz cortes aleatorios hasta dejarlo solo. Compara al punto anómalo con uno normal.

Cortes hasta ahora: 0

De cortes a score

Si E[h(x)] es el promedio de cortes para aislar x y c(ψ) es el nº esperado de cortes de un punto "promedio" (depende del tamaño de la muestra ψ), el score es

s(x) = 2−E[h(x)] / c(ψ)

Para decidir qué es "anómalo" se elige un umbral sobre el score (lo verás en el capítulo 2). Hay dos fuentes de azar: qué puntos ve cada árbol (submuestra) y dónde corta (variable y valor). De ahí salen los hiperparámetros del capítulo 2. (Liu et al., 2008).

2

Capítulo 2 · ≈ 12 min

Laboratorio: mueve un hiperparámetro y mira qué cambia

Al terminar podrás…

  • decir qué controla cada hiperparámetro de Isolation Forest y qué pasa al subirlo o bajarlo;
  • distinguir lo que afecta al ranking (bosque) de lo que afecta solo a la decisión (umbral);
  • reconocer cuándo subir un valor deja de mejorar (el plateau) y cuándo no existe un valor universal.

Empieza por un escenario guiado (opcional)

Cada uno carga datos y parámetros para ver un concepto concreto. Después explora libremente.

Los ejes son las dos variables medidas (x₁ y x₂), sin reducción de dimensionalidad: cada punto es una observación y sus dos valores, reescalados a [0, 1]. En un caso real serían, por ejemplo, monto y hora de una transacción, o temperatura y presión de una pieza. Usamos 2 columnas solo para poder dibujarlo; el algoritmo funciona igual con cientos.

Normal (real)
Anómalo (real)
Marcado por el modelo
Umbral de decisión
Score de anomalía
0.30
normal
0.50.85
anómalo
Clic en el mapa:

Resultados

Calidad del ranking necesita etiquetassin umbral
Calidad de la decisión necesita etiquetascon umbral
Indicadores de producción no necesitan etiquetas

Distribución de scores

¿Cuánto se separan normales y anómalos? La línea vertical es el umbral.

Normales (real)Anómalos (real)

Curvas ROC y Precisión–Recall

Cada punto de la curva es un umbral posible. El punto naranja es el umbral actual.

ROC
Precisión–Recall

Barrido del hiperparámetro

Reentrena el modelo con distintos valores del hiperparámetro activo (varias semillas cada uno) para ver su efecto real, su variabilidad y su costo.

Ver como tabla (incluye el costo en ms)

Anatomía de un punto

¿En qué profundidad se aísla el punto seleccionado, árbol por árbol?

Elegir:

Convergencia con el nº de árboles

Score de tres puntos a medida que se promedian más árboles. Si las líneas aún se mueven, faltan árboles; si están planas, ya estás en el plateau.

¿Más árboles siempre es mejor?

Solo hasta el plateau. Más árboles reduce la varianza (≈ 1/√T), pero no corrige el sesgo del modelo y cuesta tiempo y memoria de forma lineal. Pasar de 100 a 400 árboles solo divide el ruido entre 2 y multiplica el costo por 4. Por eso n_estimators no se "optimiza": se fija en un valor suficientemente alto. Compruébalo en el Barrido de n_estimators (escenario Más árboles: ¿hasta cuándo?). El argumento formal se demostró para Random Forest (Probst & Boulesteix, 2018) y en el paper original los autores observan que las longitudes de camino convergen bastante antes de 100 árboles (Liu et al., 2008).

3

Capítulo 3 · ≈ 8 min

Evaluar: ¿cómo sé si mi detector es bueno?

Al terminar podrás…

  • elegir indicadores según tengas o no etiquetas;
  • calcular e interpretar el índice de Jaccard entre listas de alertas;
  • explicar por qué un indicador sin etiquetas puede engañar y cómo protegerte.

Con etiquetas (validación)

Tienes algunos casos confirmados (anomalías y normales). Puedes medir el acierto: ROC-AUC, AP, Precisión@k. Es lo ideal, pero en la vida real las etiquetas escasean, llegan tarde o no cubren todos los tipos de anomalía (Campos et al., 2016).

Sin etiquetas (producción)

No conoces la verdad. No puedes medir el acierto, solo proxies de calidad: cuánto cambia el resultado entre semillas (estabilidad), cuánto se concentra la masa (Mass-Volume) o si otros métodos coinciden. Ayudan, pero cada uno tiene puntos ciegos.

Qué indicador usar y cuándo

Sí · solo en validación: necesitas casos confirmadosNo · disponibles en producciónParcial · etiquetas que llegan poco a poco (revisión de analistas)
Indicador¿Necesita etiquetas?Qué mideÚsalo cuando…Cuidado con…
ROC-AUCSíCalidad del ranking completoComparar hiperparámetros o modelos con etiquetasOptimista si las anomalías son muy raras (Saito & Rehmsmeier, 2015)
AP / PR-AUCSíRanking penalizando falsas alarmasAnomalías raras; una falsa alarma cuestaSu línea base es la prevalencia: compara contra ella
Precisión@kSíAciertos en la lista corta que revisarásCapacidad de revisión limitada (k alertas)Depende de k y es ruidosa con pocas anomalías (Campos et al., 2016)
Precisión, Recall, F1SíCalidad de la decisión con un umbralYa fijaste el umbral / contaminationCambian con el umbral; F1 da igual peso a errores de costo distinto
Estabilidad Jaccard@kNoCuánto cambia la lista de alertas entre semillas o reentrenosSiempre: control de cordura y monitoreoEstable ≠ correcto (mira el anillo con max_features = 0.5)
Correlación de rangos (Spearman)NoCoincidencia del orden completoComparar ejecuciones o versiones del modeloPesa igual el orden de los normales, que no importa
Mass-Volume / Excess-MassNoConcentración de la masa en poco volumen (Goix, 2016)Comparar detectores o configuraciones en pocas dimensionesVolumen difícil de estimar en alta dimensión; falla con cúmulos anómalos densos
Acuerdo con otro detectorNoConsenso entre métodos distintosSeñal de estructura realSi comparten el mismo punto ciego, el acuerdo engaña
IREOS (evaluación interna)NoQué tan separables son las anomalías marcadas del resto (Marques et al., 2020)Comparar soluciones sin etiquetasCostoso; no está implementado en este laboratorio
Histograma de scoresNoSeparación visual: masa de scores bajos + cola separadaPrimer vistazo, siempreSubjetivo
Retroalimentación de analistasParcialUtilidad real de las alertasYa en producciónLenta y sesgada hacia lo ya alertado

¿Y el Jaccard? Estabilidad entre semillas, en vivo

Matriz de Jaccard

J(A,B) = |A∩B| / |A∪B|. Se entrena el modelo con 5 semillas y se compara la lista de las k alertas más altas de cada par. Usa la configuración actual del laboratorio (capítulo 2).

Curva Mass-Volume

Volumen mínimo necesario para capturar una fracción α de los datos con el score actual. Cuanto más baja la curva, más concentrada está la masa (Goix, 2016).

Ejemplo de Jaccard: dos listas de 25 alertas que comparten 20 puntos tienen J = 20 / 30 = 0.67, no 0.8: la unión es 30 puntos distintos.

¿Sirven los indicadores sin etiquetas? Compruébalo

Cada punto es una configuración de Isolation Forest (60 combinaciones de ψ, max_features y bootstrap; T = 300). El eje vertical es el AP real; el horizontal, un indicador que no usa etiquetas. Si los puntos suben hacia la derecha, el indicador sirve para elegir configuraciones sin conocer la verdad. max_features = 1.0 max_features = 0.5 valores por defecto

Regla práctica

Ningún indicador sin etiquetas es suficiente por sí solo. Combínalos: estabilidad (¿depende del azar?), Mass-Volume o consenso (¿tiene sentido geométrico?) y, sobre todo, revisión manual del top-k por un experto o un pequeño conjunto de anomalías conocidas/inyectadas. Resultados sobre estas limitaciones: (Goix, 2016; Marques et al., 2020; Domingues et al., 2018).

4

Capítulo 4 · ≈ 10 min

Optimizar: por qué y cómo tunear hiperparámetros

Al terminar podrás…

  • explicar por qué hay que ajustar hiperparámetros y cuáles no vale la pena optimizar;
  • comparar grid, random, bayesiana y successive halving por su costo, no solo por su resultado;
  • decidir con qué objetivo optimizar cuando no tienes etiquetas, y qué riesgos corres.

4.1 ¿Qué es y por qué hay que tunear?

Un hiperparámetro se fija antes de entrenar y define cómo aprende el algoritmo; los parámetros (aquí, dónde corta cada árbol) los aprende él. Los valores por defecto son un compromiso para "datos promedio"; tus datos no lo son. Ajustarlos busca la configuración que mejor sirve a tu problema. Pero ojo: cuánto se gana depende de los datos (Probst et al., 2019, llaman a esa ganancia tunabilidad).

Ganancia potencial de tunear en cada conjunto de datos

AP con los valores por defecto (ψ = 256, max_features = 1.0, bootstrap = False, T = 300) frente a la mejor configuración del espacio explorado.

4.2 ¿Qué cambia cuando tuneas?

Calidad

Más aciertos en el ranking (AP, ROC-AUC).

Estabilidad

Menos dependencia del azar entre reentrenos.

Costo

Tiempo de entrenamiento y de scoring, memoria y latencia.

Comparabilidad

Comparar modelos con configuraciones sin ajustar es injusto.

Decisión

El umbral (contamination) determina alertas, no la calidad del ranking.

4.3 Qué no optimizar

No todo parámetro configurable es un hiperparámetro que debas buscar. Tres categorías que se repiten en todos los modelos de este sitio:

4.4 Métodos de búsqueda

Manual

Tú, tu intuición y experimentos como los del capítulo 2. Excelente para entender; poco reproducible y no escala.

Grid search

Prueba todas las combinaciones de una malla. Simple y paralelizable, pero el costo crece exponencialmente con el nº de hiperparámetros y malgasta evaluaciones en los que no importan (Bergstra & Bengio, 2012).

Random search

Muestrea configuraciones al azar. Con el mismo presupuesto explora más valores distintos de cada hiperparámetro; es el punto de comparación obligado (Bergstra & Bengio, 2012).

Optimización bayesiana

Aprende un modelo (proceso gaussiano, TPE…) de cómo el hiperparámetro afecta la métrica y elige la siguiente prueba con más potencial. Ideal cuando cada evaluación es cara (Snoek et al., 2012; Bergstra et al., 2011).

Successive Halving / Hyperband

Evalúa muchas configuraciones con poca fidelidad (pocos árboles) y solo promueve a las mejores a más recurso. Puede ser un orden de magnitud más rápido (Li et al., 2018; Jamieson & Talwalkar, 2016).

¿Por qué random suele vencer a grid?

Con 9 evaluaciones y un solo hiperparámetro que importa (eje horizontal; la franja azul es la zona buena), el grid prueba solo 3 valores de él; el random prueba 9 distintos. Cuantos más hiperparámetros irrelevantes, mayor la diferencia (Bergstra & Bengio, 2012).

4.5 Arena: compara métodos con el mismo presupuesto

Isolation Forest con tres hiperparámetros a optimizar (ψ, max_features, bootstrap). Como el paisaje ya está calculado, se simulan 60 búsquedas por método. El costo se mide en árboles entrenados. Cambia el objetivo del tuner a un indicador sin etiquetas y mira qué ocurre. Prueba «Anomalías agrupadas» con Mass-Volume.

El paisaje se calculó con 3 semillas por configuración sobre los conjuntos del laboratorio (500 puntos, 6 % de anomalías). Es un benchmark tabular, la técnica estándar para comparar optimizadores sin repetir entrenamientos; el script tools/build-landscape.js lo reproduce.

4.6 Cómo hacerlo bien

Buenas prácticas

  • Separa validación (para elegir) de prueba final (para reportar); si no, el ganador queda optimista.
  • Evalúa cada configuración con varias semillas y compara media ± desviación.
  • Fija un presupuesto y un criterio de parada; empieza con random search como referencia.
  • Espacio: ψ en escala logarítmica; fija T y random_state.
  • Evita fugas de información: nada de la prueba entra a entrenar ni a decidir.
  • Sin etiquetas: optimiza un proxy y valida con anomalías conocidas o revisión manual.

Ejemplo en Python (con etiquetas de validación)

from sklearn.ensemble import IsolationForest
from sklearn.model_selection import RandomizedSearchCV, StratifiedKFold
from sklearn.metrics import average_precision_score

def ap_scorer(est, X, y):                 # y: 1 = anomalía (solo para validar)
    return average_precision_score(y, -est.score_samples(X))

search = RandomizedSearchCV(
    IsolationForest(n_estimators=300, random_state=0),   # T fijo y alto
    {"max_samples": [16, 32, 64, 128, 256, 500],
     "max_features": [0.5, 1.0], "bootstrap": [False, True]},
    n_iter=12, scoring=ap_scorer, random_state=0,
    cv=StratifiedKFold(3, shuffle=True, random_state=0))
search.fit(X, y)     # el modelo ignora y al entrenar; solo se usa al puntuar

La API es la de scikit-learn (Pedregosa et al., 2011). Para búsquedas más largas: Optuna (Akiba et al., 2019) ofrece muestreadores bayesianos y pruning.

5

Capítulo 5 · ≈ 6 min

Casos de la vida real

Al terminar podrás…

  • traducir cada hiperparámetro a una decisión de negocio;
  • elegir el indicador correcto según la capacidad de revisión y el costo de los errores;
  • anticipar la trampa típica de cada dominio.

Los conjuntos del laboratorio son sintéticos; estos casos muestran cómo se traducen los conceptos. Los datos citados con cifras provienen de las referencias; el resto son situaciones típicas descritas de forma ilustrativa.

6

Capítulo 6 · ≈ 4 min

Checklist, errores comunes y límites

Al terminar podrás…

  • seguir un flujo de trabajo ordenado desde la definición del problema hasta el monitoreo;
  • reconocer los errores más comunes al tunear y evaluar detectores de anomalías;
  • conocer los límites de Isolation Forest y cuándo pensar en alternativas.

Flujo de trabajo recomendado

  1. Define el costo de los errores y la capacidad de revisión (k). Eso fija el umbral, no el bosque.
  2. Elige cómo validar: etiquetas parciales, anomalías inyectadas o revisión manual.
  3. Fija n_estimators en el plateau y random_state.
  4. Busca max_samples y max_features (random search, ≥ 3 semillas, ~30–60 pruebas).
  5. Evalúa con AP y Precisión@k (con etiquetas) y con estabilidad + Mass-Volume + revisión (sin ellas).
  6. Decide el umbral con la curva PR y la capacidad del equipo.
  7. Monitorea: estabilidad entre reentrenos y deriva de datos.

Errores comunes

  • Creer que más árboles siempre mejora → plateau.
  • Optimizar contamination como si fuera del modelo → es el umbral.
  • Reportar ROC-AUC con anomalías muy raras → usa AP y P@k.
  • Confiar en un solo indicador sin etiquetas → tienen puntos ciegos.
  • Elegir la mejor semilla → sobreajuste al azar.
  • Borrar automáticamente lo marcado → puede eliminar casos raros pero legítimos.

Límites de Isolation Forest

  • Cortes paralelos a los ejes: artefactos y dificultad con estructuras oblicuas (variante: Extended Isolation Forest, Hariri et al., 2021).
  • En alta dimensión con mucho ruido, las variables irrelevantes diluyen el aislamiento.
  • Anomalías agrupadas pueden enmascararse (masking) y normales cercanos confundirse (swamping).
★

Referencias

Bibliografía

✔ = ficha y contenido consultados en la fuente (texto completo o resumen oficial) al preparar este material. Datos menores como páginas, volumen o año de la versión final conviene contrastarlos con la fuente antes de una cita formal. Sin ✔: referencias estándar que no se consultaron directamente en esta revisión.

  1. ✔ Liu, F. T., Ting, K. M., & Zhou, Z.-H. (2008). Isolation Forest. Proc. IEEE International Conference on Data Mining (ICDM), 413–422. doi:10.1109/ICDM.2008.17
  2. ✔ Liu, F. T., Ting, K. M., & Zhou, Z.-H. (2012). Isolation-based anomaly detection. ACM Transactions on Knowledge Discovery from Data, 6(1), 3.
  3. ✔ Hariri, S., Kind, M. C., & Brunner, R. J. (2021). Extended Isolation Forest. IEEE Transactions on Knowledge and Data Engineering, 33(4), 1479–1489. ieeexplore.ieee.org/document/8888179
  4. ✔ Probst, P., & Boulesteix, A.-L. (2018). To tune or not to tune the number of trees in random forest. Journal of Machine Learning Research, 18(181), 1–18. jmlr.org/papers/v18/17-269.html
  5. ✔ Probst, P., Boulesteix, A.-L., & Bischl, B. (2019). Tunability: Importance of hyperparameters of machine learning algorithms. Journal of Machine Learning Research, 20(53), 1–32. jmlr.org/papers/v20/18-444.html
  6. ✔ Bergstra, J., & Bengio, Y. (2012). Random search for hyper-parameter optimization. Journal of Machine Learning Research, 13, 281–305.
  7. ✔ Bergstra, J., Bardenet, R., Bengio, Y., & Kégl, B. (2011). Algorithms for hyper-parameter optimization. Advances in Neural Information Processing Systems 24 (NIPS).
  8. ✔ Snoek, J., Larochelle, H., & Adams, R. P. (2012). Practical Bayesian optimization of machine learning algorithms. Advances in Neural Information Processing Systems 25 (NIPS). arXiv:1206.2944
  9. ✔ Li, L., Jamieson, K., DeSalvo, G., Rostamizadeh, A., & Talwalkar, A. (2018). Hyperband: A novel bandit-based approach to hyperparameter optimization. Journal of Machine Learning Research, 18(185), 1–52.
  10. Jamieson, K., & Talwalkar, A. (2016). Non-stochastic best arm identification and hyperparameter optimization. Proc. AISTATS (PMLR 51), 240–248.
  11. ✔ Akiba, T., Sano, S., Yanase, T., Ohta, T., & Koyama, M. (2019). Optuna: A next-generation hyperparameter optimization framework. Proc. ACM SIGKDD (KDD), 2623–2631. doi:10.1145/3292500.3330701
  12. ✔ Bischl, B., Binder, M., Lang, M., et al. (2023). Hyperparameter optimization: Foundations, algorithms, best practices, and open challenges. WIREs Data Mining and Knowledge Discovery, 13(2), e1484.
  13. ✔ Goix, N. (2016). How to evaluate the quality of unsupervised anomaly detection algorithms? ICML 2016 Workshop on Anomaly Detection. arXiv:1607.01152
  14. ✔ Campos, G. O., Zimek, A., Sander, J., Campello, R. J. G. B., Micenková, B., Schubert, E., Assent, I., & Houle, M. E. (2016). On the evaluation of unsupervised outlier detection: measures, datasets, and an empirical study. Data Mining and Knowledge Discovery, 30(4), 891–927. doi:10.1007/s10618-015-0444-8
  15. ✔ Marques, H. O., Campello, R. J. G. B., Sander, J., & Zimek, A. (2020). Internal evaluation of unsupervised outlier detection. ACM Transactions on Knowledge Discovery from Data, 14(4), 47. doi:10.1145/3394053
  16. ✔ Domingues, R., Filippone, M., Michiardi, P., & Zouaoui, J. (2018). A comparative evaluation of outlier detection algorithms: Experiments and analyses. Pattern Recognition, 74, 406–421. doi:10.1016/j.patcog.2017.09.037
  17. ✔ Perini, L., Bürkner, P.-C., & Klami, A. (2023). Estimating the contamination factor's distribution in unsupervised anomaly detection. Proc. ICML (PMLR 202). arXiv:2210.10487
  18. ✔ Saito, T., & Rehmsmeier, M. (2015). The precision-recall plot is more informative than the ROC plot when evaluating binary classifiers on imbalanced datasets. PLoS ONE, 10(3), e0118432. doi:10.1371/journal.pone.0118432
  19. Dal Pozzolo, A., Caelen, O., Johnson, R. A., & Bontempi, G. (2015). Calibrating probability with undersampling for unbalanced classification. IEEE Symposium on Computational Intelligence and Data Mining (CIDM). Conjunto de datos de Worldline y ULB Machine Learning Group, kaggle.com/datasets/mlg-ulb/creditcardfraud: ✔ cifras verificadas en la ficha pública (492 fraudes en 284 807 transacciones, 0.172 %).
  20. Oshiro, T. M., Perez, P. S., & Baranauskas, J. A. (2012). How many trees in a random forest? Machine Learning and Data Mining in Pattern Recognition (MLDM), LNCS 7376, 154–168. (Citado en Probst & Boulesteix, 2018: el AUC deja de mejorar de forma apreciable tras ~128 árboles en 29 conjuntos.)
  21. Pedregosa, F., et al. (2011). Scikit-learn: Machine learning in Python. Journal of Machine Learning Research, 12, 2825–2830. (Implementación de referencia: sklearn.ensemble.IsolationForest.)
  22. Hutter, F., Kotthoff, L., & Vanschoren, J. (Eds.) (2019). Automated Machine Learning: Methods, Systems, Challenges. Springer.