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.
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.

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.

será un conjunto de puntos d-dimensionales y . Un árbol de aislamiento (iTree) se define como una estructura de datos con las siguientes propiedades:
Para construir un iTree, el algoritmo divide recursivamente seleccionando aleatoriamente un atributo y un valor dividido , hasta que:
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.
La detección de anomalías con Isolation Forest es un proceso compuesto por dos etapas principales:
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.
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 :
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: