Articulo de referencia

Bosque de aislamiento

Isolation Forest es un algoritmo para la detección de anomalías de datos mediante árboles binarios . Fue desarrollado por Fei Tony Liu en 2008. [1] Tiene una complejidad tempora...

Isolation Forest es un algoritmo para la detección de anomalías de datos mediante árboles binarios . Fue desarrollado por Fei Tony Liu en 2008. [1] Tiene una complejidad temporal lineal y un uso bajo de memoria, lo que funciona bien para datos de gran volumen. [2] [3] Se basa en el supuesto de que, debido a que las anomalías son pocas y diferentes de otros datos, se pueden aislar utilizando pocas particiones. Al igual que los algoritmos de árboles de decisión, no realiza una estimación de densidad. A diferencia de los algoritmos de árboles de decisión, solo utiliza la longitud de la ruta para generar una puntuación de anomalía y no utiliza estadísticas de nodos de hoja de distribución de clase o valor objetivo.

El bosque de aislamiento es rápido porque divide el espacio de datos, seleccionando aleatoriamente un atributo y un punto de división. El puntaje de anomalía está inversamente asociado con la longitud de la ruta porque las anomalías necesitan menos divisiones para aislarse, porque 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. [2] 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. [3] En 2010, se publicó una extensión del algoritmo, SCiforest, para abordar anomalías agrupadas y paralelas al eje. [4]

Árboles de aislamiento

Un 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 particiones de forma recursiva en la muestra seleccionando aleatoriamente un atributo y luego seleccionando aleatoriamente un valor de división entre los valores mínimo y máximo permitidos para ese atributo.

Aislamiento de un punto anómalo
Un ejemplo de aislamiento de un punto anómalo en una distribución gaussiana 2D.

En la primera figura 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 segunda para un punto que tiene más probabilidades de ser una anomalía. En las imágenes se puede apreciar que las anomalías requieren menos particiones aleatorias para aislarse, en comparación con los puntos normales.

La partición recursiva se puede representar mediante una estructura de árbol denominada Árbol de aislamiento , mientras que la cantidad de particiones necesarias para aislar un punto se puede interpretar como la longitud de la ruta, dentro del árbol, para llegar a un nodo de terminación a partir de la raíz. Por ejemplo, la longitud de la ruta del punto en la primera figura es mayor que la longitud de la ruta del en la segunda figura. incógnita i Estilo de visualización x_{i}} incógnita yo estilo de visualización x_{j}}

Sea un conjunto de puntos de dimensión d y . Un árbol de aislamiento (iTree) se define como una estructura de datos con las siguientes propiedades: incógnita = { incógnita 1 , , incógnita norte } {\displaystyle X=\{x_{1},\puntos ,x_{n}\}} incógnita " incógnita {\displaystyle X'\subconjunto X}

  1. para cada nodo del árbol, es un nodo externo sin ningún hijo o un nodo interno con una “prueba” y exactamente dos nodos hijos ( y ) yo {\estilo de visualización T} yo {\estilo de visualización T} yo yo {\displaystyle T_{l}} yo a Estilo de visualización T_{r}
  2. Una prueba en un nodo consta de un atributo y un valor dividido de modo que la prueba determina el recorrido de un punto de datos hacia o . yo {\estilo de visualización T} q {\estilo de visualización q} pag {\estilo de visualización p} q < pag {\estilo de visualización q<p} yo yo {\displaystyle T_{l}} yo a Estilo de visualización T_{r}

Para construir un iTree, el algoritmo divide recursivamente seleccionando aleatoriamente un atributo y un valor dividido , hasta que incógnita " {\estilo de visualización X'} q {\estilo de visualización q} pag {\estilo de visualización p}

  1. el nodo tiene solo una instancia, o
  2. Todos los datos en el nodo tienen los mismos valores.

Cuando el iTree está completamente desarrollado, cada punto se aísla en uno de los nodos externos. Intuitivamente, los puntos anómalos son aquellos (más fáciles de aislar, por lo tanto) con la longitud de ruta más pequeña en el árbol, donde la longitud de ruta del punto se define como la cantidad de aristas que atraviesa desde el nodo raíz para llegar a un nodo externo. incógnita {\estilo de visualización X} yo ( incógnita i ) estilo de visualización h(x_{i})} incógnita i incógnita {\displaystyle x_{i}\en X} incógnita i Estilo de visualización x_{i}}

En el artículo original de iForest se ofrece una explicación probabilística de iTree. [2]

Detección de anomalías

La detección de anomalías con Isolation Forest se realiza de la siguiente manera: [4]

  1. Utilice el conjunto de datos de entrenamiento para crear una cierta cantidad de iTrees
  2. Para cada punto de datos en el conjunto de prueba:
    1. Páselo a través de todos los iTrees, contando la longitud del camino para cada árbol.
    2. Asignar una “puntuación de anomalía” a la instancia
    3. Etiquetar el punto como “anomalía” si su puntuación es mayor que un umbral predefinido, que depende del dominio

Puntuación de anomalía

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 de búsqueda binaria (BST): una terminación en un nodo externo del iTree corresponde a una búsqueda fallida en el BST. [4] Por lo tanto, la estimación del promedio para las terminaciones de nodos externos es la misma que la de las búsquedas fallidas en el BST, es decir [5] yo ( incógnita ) {\estilo de visualización h(x)}

do ( metro ) = { 2 yo ( metro 1 ) 2 ( metro 1 ) norte para  metro > 2 1 para  metro = 2 0 de lo contrario {\displaystyle c(m)={\begin{cases}2H(m-1)-{\frac {2(m-1)}{n}}&{\text{para }}m>2\\1&{\text{para }}m=2\\0&{\text{en caso contrario}}\end{cases}}}

donde es el tamaño del conjunto de prueba, es el tamaño del conjunto de muestra y es el número armónico, que se puede estimar mediante , donde es la constante de Euler-Mascheroni . norte {\estilo de visualización n} metro {\estilo de visualización m} yo {\estilo de visualización H} yo ( i ) = yo norte ( i ) + gamma {\displaystyle H(i)=ln(i)+\gamma} gamma = 0,5772156649 {\displaystyle \gamma =0,5772156649}

Arriba, se muestra el promedio dado , por lo que podemos usarlo para normalizar y obtener una estimación del puntaje de anomalía para una instancia dada x: do ( metro ) {\estilo de visualización c(m)} yo ( incógnita ) {\estilo de visualización h(x)} metro {\estilo de visualización m} yo ( incógnita ) {\estilo de visualización h(x)}

s ( incógnita , metro ) = 2 mi ( yo ( incógnita ) ) do ( metro ) {\displaystyle s(x,m)=2^{\frac {-E(h(x))}{c(m)}}}

donde es el valor promedio de de una colección de iTrees. Para cualquier punto de datos : mi ( yo ( incógnita ) ) {\estilo de visualización E(h(x))} yo ( incógnita ) {\estilo de visualización h(x)} incógnita {\estilo de visualización x}

  • Si está cerca entonces es muy probable que haya una anomalía. s {\estilo de visualización s} 1 {\estilo de visualización 1} incógnita {\estilo de visualización x}
  • Si es más pequeño, entonces es probable que sea normal. s {\estilo de visualización s} 0,5 {\estilo de visualización 0.5} incógnita {\estilo de visualización x}
  • Si todos los puntos de la muestra tienen una puntuación cercana a , entonces es probable que todos sean normales. 0,5 {\estilo de visualización 0.5}

Propiedades

  • Submuestreo : debido a que iForest no necesita aislar instancias normales, a menudo puede ignorar la mayor parte del conjunto de entrenamiento. Por lo tanto, funciona muy bien cuando el tamaño de la muestra se mantiene pequeño, a diferencia de la mayoría de los otros métodos, que se benefician de un tamaño de muestra grande. [2] [3]
  • Swamping : cuando las instancias normales están demasiado cerca de las anomalías, aumenta la cantidad de particiones necesarias para separar las anomalías, un fenómeno conocido como swamping , que hace que sea más difícil para iForest discriminar entre anomalías y puntos normales. Una razón principal para el swamping es la presencia de demasiados datos; por lo tanto, una posible solución es el submuestreo. Debido a que iForest funciona bien con submuestreo, reducir la cantidad de puntos en la muestra también es una buena manera de reducir el efecto del swamping. [2]
  • Enmascaramiento : cuando hay muchas anomalías, algunas de ellas pueden agruparse en un grupo denso y grande, lo que hace más difícil separar las anomalías individuales y, por lo tanto, identificarlas. Este fenómeno se denomina “ enmascaramiento ” y, al igual que el swamping, es más probable cuando la muestra es grande y se puede aliviar mediante un submuestreo. [2]
  • Datos de alta dimensión : una limitación principal de los métodos estándar basados ​​en la distancia es su ineficiencia al tratar con datos de alta dimensión. [6] La razón principal es que en un espacio de alta dimensión, cada punto es igualmente disperso, por lo que el uso de una medida de separación basada en la distancia es ineficaz. Desafortunadamente, los datos de alta dimensión también afectan el rendimiento de detección de iForest, pero el rendimiento se puede mejorar enormemente mediante el uso de la selección de características, como la curtosis , para reducir la dimensionalidad de la muestra. [2] [4]
  • Solo instancias normales : iForest funciona bien incluso si el conjunto de entrenamiento no contiene puntos anómalos. [4] Esto se debe a que iForest describe distribuciones de datos de manera que las rutas de árboles largas corresponden a puntos de datos normales. Por lo tanto, la presencia de anomalías es irrelevante para el rendimiento de la detección.

Implementaciones de código abierto

La implementación original de Fei Tony Liu es Isolation Forest en R.

Otras implementaciones (en orden alfabético):

  • ELKI contiene una implementación de Java.
  • Bosque de aislamiento: una implementación de Spark/Scala. [7]
  • Bosque de aislamiento de H2O-3: una implementación de Python.
  • Implementación del paquete soledad en R.
  • Implementación de Python con ejemplos en scikit-learn .
  • Spark iForest: una implementación distribuida de Apache Spark en Scala/Python.
  • PyOD IForest: otra implementación de Python en la popular biblioteca Python Outlier Detection (PyOD).

Otras variaciones de las implementaciones del algoritmo Isolation Forest:

  • Bosque de aislamiento extendido: una implementación del bosque de aislamiento extendido. [8]
  • Bosque de aislamiento extendido de H2O-3: una implementación del bosque de aislamiento extendido.
  • (Python, R, C/C++) Bosque de aislamiento y variaciones: una implementación de Bosque de aislamiento y sus variaciones. [9]

Véase también

Referencias

  1. ^ Liu, Fei Tony. "Primera implementación de Isolation Forest en Sourceforge".
  2. ^ abcdefg Liu, Fei Tony; Ting, Kai Ming; Zhou, Zhi-Hua (diciembre de 2008). "Bosque de aislamiento". Octava Conferencia Internacional IEEE sobre Minería de Datos de 2008. págs. 413–422. doi :10.1109/ICDM.2008.17. ISBN 978-0-7695-3502-9.S2CID6505449  .
  3. ^ abc Liu, Fei Tony; Ting, Kai Ming; Zhou, Zhi-Hua (diciembre de 2008). "Detección de anomalías basada en aislamiento". ACM Transactions on Knowledge Discovery from Data . 6 : 3:1–3:39. doi :10.1145/2133360.2133363. S2CID  207193045.
  4. ^ abcde Liu, Fei Tony; Ting, Kai Ming; Zhou, Zhi-Hua (septiembre de 2010). "Sobre la detección de anomalías agrupadas mediante SCiForest". Conferencia europea conjunta sobre aprendizaje automático y descubrimiento de conocimiento en bases de datos - ECML PKDD 2010: aprendizaje automático y descubrimiento de conocimiento en bases de datos . Notas de clase en informática. 6322 : 274–290. doi : 10.1007/978-3-642-15883-4_18 . ISBN 978-3-642-15882-7.
  5. ^ Shaffer, Clifford A. (2011). Estructuras de datos y análisis de algoritmos en Java (3.ª edición de Dover). Mineola, NY: Dover Publications. ISBN 9780486485812.OCLC 721884651  .
  6. ^ Dilini Talagala, Priyanga; Hyndman, Rob J.; Smith-Miles, Kate (12 de agosto de 2019). "Detección de anomalías en datos de alta dimensión". arXiv : 1908.04000 [stat.ML].
  7. ^ Verbus, James (13 de agosto de 2019). "Detección y prevención de abusos en LinkedIn mediante bosques de aislamiento". Blog de ingeniería de LinkedIn . Consultado el 2 de julio de 2023 .
  8. ^ Hariri, Sahand; Kind, Matias Carrasco; Brunner, Robert J. (abril de 2021). "Bosque de aislamiento extendido". IEEE Transactions on Knowledge and Data Engineering . 33 (4): 1479–1489. arXiv : 1811.02141 . doi :10.1109/TKDE.2019.2947676. ISSN  1558-2191. S2CID  53236735.
  9. ^ Cortes, David (2019). "Aproximación de distancias mediante bosques de aislamiento". arXiv : 1910.12362 [stat.ML].
Obtenido de "https://es.wikipedia.org/w/index.php?title=Bosque_de_aislamiento&oldid=1243963690"