Isolation forest

Isolation Forest (en español Bosque de aislamiento) es un algoritmo para la detección de anomalías en los datos desarrollado inicialmente por Fei Tony Liu en 2008. Isolation Forest detecta anomalías utilizando árboles binarios. El algoritmo tiene una complejidad temporal lineal y requiere poca memoria, por lo que funciona bien con grandes volúmenes de datos. En esencia, el algoritmo se basa en las características de las anomalías, es decir, que sean pocas y diferentes, para detectarlas. En el algoritmo no se realiza ninguna estimación de la densidad. El algoritmo se diferencia de los algoritmos de árbol de decisión en que sólo se utiliza la medida o aproximación de la longitud del camino para generar la puntuación de la anomalía, no se necesitan estadísticas de los nodos hoja sobre la distribución de clases o el valor objetivo.

El bosque de aislamiento es rápido porque divide el espacio de datos de forma aleatoria, utilizando un atributo seleccionado al azar y un punto de división seleccionado al azar. La puntuación de la anomalía está inversamente asociada a la longitud del camino, ya que las anomalías necesitan menos divisiones para ser aisladas, debido a que son pocas y diferentes.

Historia

El algoritmo Isolation Forest (iForest) fue propuesto inicialmente por Fei Tony Liu, Kai Ming Ting y Zhi-Hua Zhou en 2008. En 2010, se desarrolló una extensión del algoritmo - SCiforest para abordar anomalías agrupadas y paralelas a ejes. En 2012 los mismos autores demostraron que iForest tiene una complejidad temporal lineal, un pequeño requerimiento de memoria y es aplicable a datos de alta dimensión.

Algoritmo

Fig. 2 - Ejemplo de aislamiento de un punto no anómalo en una distribución gaussiana 2D.

La premisa del algoritmo Isolation Forest es que los puntos de datos anómalos son más fáciles de separar del resto de la muestra. Para aislar un punto de datos, el algoritmo genera recursivamente particiones en la muestra seleccionando aleatoriamente un atributo y, a continuación, seleccionando aleatoriamente un valor de partición entre los valores mínimo y máximo permitidos para ese atributo.

En la figura 2 se muestra un ejemplo de partición aleatoria en un conjunto de datos 2D de puntos distribuidos normalmente para un punto no anómalo y en la figura 3 para un punto que tiene más probabilidades de ser una anomalía. En las imágenes se aprecia cómo las anomalías requieren menos particiones aleatorias para ser aisladas, en comparación con los puntos normales.

La partición recursiva puede representarse mediante una estructura de árbol denominada Árbol de aislamiento, mientras que el número de particiones necesarias para aislar un punto puede interpretarse como la longitud del camino, dentro del árbol, para llegar a un nodo terminal partiendo de la raíz. Por ejemplo, la longitud de la trayectoria del punto en la figura 2 es mayor que la longitud del recorrido de en la figura 3.

Fig. 3 - Ejemplo de aislamiento de un punto anómalo en una distribución gaussiana 2D.

será un conjunto de puntos d-dimensionales y . Un árbol de aislamiento (iTree) se define como una estructura de datos con las siguientes propiedades:

  1. para cada nodo en el árbol, es un nodo externo sin ningún hijo, o un nodo interno con un «test» y exactamente dos nodos hijos ( y )
  2. una prueba en el nodo consiste en un atributo y un valor dividido de forma que la prueba determina el recorrido de un punto de datos a o .

Para construir un iTree, el algoritmo divide recursivamente seleccionando aleatoriamente un atributo y un valor dividido , hasta que:

  1. el nodo sólo tiene una instancia, o
  2. todos los datos del nodo tienen los mismos valores.

Cuando el iTree está completamente desarrollado, cada punto de se aísla en uno de los nodos externos. Intuitivamente, los puntos anómalos son aquellos (más fáciles de aislar, por tanto) con la menor longitud de camino en el árbol, donde la longitud de camino del punto se define como el número de aristas que atraviesan desde el nodo raíz para llegar a un nodo externo.

En el documento original de iForest se ofrece una explicación probabilística de iTree.

Propiedades del bosque de aislamiento

Detección de anomalías con bosque de aislamiento

La detección de anomalías con Isolation Forest es un proceso compuesto por dos etapas principales:

  1. En la primera etapa, se utiliza un conjunto de datos de entrenamiento para construir iTrees.
  2. En la segunda fase, cada instancia del conjunto de pruebas pasa por estos iTrees y se le asigna una «puntuación de anomalía» adecuada.

Una vez que se ha asignado una puntuación de anomalía a todas las instancias del conjunto de pruebas, es posible marcar como «anomalía» cualquier punto cuya puntuación sea superior a un umbral predefinido, que depende del dominio al que se aplique el análisis.

Puntuación de anomalías

El algoritmo para calcular la puntuación de anomalía de un punto de datos se basa en la observación de que la estructura de los iTrees es equivalente a la de los árboles binarios de búsqueda Binary Search Trees (BST): una terminación en un nodo externo del iTree corresponde a una búsqueda fallida en el BST. En consecuencia, la estimación de la media para las terminaciones de nodos externos es la misma que la de las búsquedas fallidas en BST, es decir:

Donde es el tamaño de los datos de prueba, es el tamaño de la muestra y es el número armónico, que puede estimarse mediante , donde es la constante de Euler-Mascheroni.

El valor de c(m) anterior representa la media de según , por lo que podemos utilizarlo para normalizar y obtener una estimación de la puntuación de anomalía para una instancia x dada:

Donde es el valor promedio de de una colección de iTrees. Es interesante observar que para cualquier instancia dada :

Aplicaciones de código abierto

La implementación original de los autores del artículo fue Isolation Forest en R.

Otras implementaciones (por orden alfabético):

Otras variaciones de las implementaciones del algoritmo Isolation Forest:

Véase también

Referencias

  1. ↑ «Isolation Forest». SourceForge (en inglés). 7 de julio de 2014. Consultado el 3 de mayo de 2024.
  2. 1 2 3 4 5 6 7 Liu, Fei Tony; Ting, Kai Ming; Zhou, Zhi-Hua (2008). «"Isolation Forest"». 2008 Eighth IEEE International Conference on Data Mining. ISBN 978-0-7695-3502-9. doi:10.1109/ICDM.2008.17.
  3. 1 2 3 Liu, Fei Tony; Ting, Kai Ming; Zhou, Zhi-Hua (1 de marzo de 2012). «Isolation-Based Anomaly Detection». ACM Transactions on Knowledge Discovery from Data 6 (1): 3:1-3:39. ISSN 1556-4681. doi:10.1145/2133360.2133363. Consultado el 3 de mayo de 2024.
  4. 1 2 3 4 5 Liu, Fei Tony; Ting, Kai Ming; Zhou, Zhi-Hua (2010). «On Detecting Clustered Anomalies Using SCiForest». En Balcázar, José Luis, ed. Machine Learning and Knowledge Discovery in Databases (en inglés) (Springer): 274-290. ISBN 978-3-642-15883-4. doi:10.1007/978-3-642-15883-4_18. Consultado el 3 de mayo de 2024.
  5. ↑ Dilini Talagala, Priyanga; Hyndman, Rob J.; Smith-Miles, Kate (2019). "Anomaly Detection in High Dimensional Data".
  6. ↑ Shaffer, Clifford A. (2011). «Data structures & algorithm analysis in Java (3rd Dover ed.).». Mineola, NY: Dover Publications. ISBN 9780486485812. OCLC 721884651.
  7. ↑ «Detecting and preventing abuse on LinkedIn using isolation forests». www.linkedin.com (en inglés). Consultado el 5 de mayo de 2024.
  8. ↑ Hariri, Sahand; Kind, Matias Carrasco; Brunner, Robert J. (2021). «"Extended Isolation Forest"». IEEE Transactions on Knowledge and Data Engineering. ISSN 1558-2191. doi:10.1109/TKDE.2019.2947676.
  9. ↑ Cortes, David (2019). "Distance approximation using Isolation Forests".