Re: Bosque de aislamiento y árboles de aislamientogran sugerencia @FN .
Además del Bosque de Aislamiento,
también podría ser interesante considerar el bosque de aislamiento extendido en lugar del algoritmo de bosque de aislamiento "regular", ya que proporciona más flexibilidad en las direcciones de los límites de decisión (no solo horizontales o verticales).
Aquí hay un artículo que explica cómo funciona el bosque de aislamiento extendido y cómo usarlo: https://link.medium.com/TL1Lxirf9pb
Re: Bosque de aislamiento y árboles de aislamientoLos árboles o bosques extensos serán aún mejores, de hecho.
Siguiendo su enlace, el artículo original para Extended está aquí: https://arxiv.org/pdf/1811.02141.pdf
Bosque de aislamiento y árboles de aislamientoIsolation Forest se ha convertido en uno de los detectores de anomalías más populares en los últimos años debido a su eficacia general en diferentes puntos de referencia y su gran escalabilidad. Es eficiente desde el punto de vista computacional y ha demostrado ser muy eficaz en la detección de anomalías.

Bosque de aislamiento comparado con otros ( src )
El algoritmo aísla las observaciones seleccionando aleatoriamente una característica y luego seleccionando aleatoriamente un valor dividido entre los valores máximo y mínimo de la característica seleccionada. Por lo tanto, la implementación es la misma que la de los árboles de partición y los árboles de arranque, con la diferencia de que la función objetivo debe ser uniforme (intentando dividir variables con un valor Y constante).
Sin embargo, si intentas esto en JMP, no funciona.
Al incluir Isolation Forest en JMP, de manera similar a la detección de predictores, los usuarios tendrían acceso a una herramienta poderosa para detectar anomalías en sus datos. Esto podría ayudarlos a identificar patrones o comportamientos inusuales que podrían justificar una investigación más profunda.
Este artículo estudia cómo funciona IForest y mejora sus pocas limitaciones (es decir, el bosque de aislamiento extendido).
https://hal.science/hal-03537102/document
Documentación de Scikit-learn
https://scikit-learn.org/stable/modules/outlier_detection.html
Análisis y modelado de datos básicosModelado predictivo y aprendizaje automáticoRe: Bosque de aislamiento y árboles de aislamiento - Estado cambiado a: Investigandogracias por esta peticion @FN . Actualmente estamos investigando.
Re: Bosque de aislamiento y árboles de aislamientoGracias, Mía. Tenga en cuenta que la implementación de un árbol de aislamiento es la misma que la de un árbol de partición.
La "única" diferencia es que la partición ocurre aleatoriamente.
En JMP, si introduce una Y sin ninguna variabilidad (todos 0, por ejemplo), JMP no realiza ninguna división (algo esperado, de lo contrario, las soluciones serán estocásticas en un punto determinado).
En la literatura, esto se conoce como Extratrees.
https://en.wikipedia.org/wiki/Random_forest#ExtraTrees
Re: Bosque de aislamiento y árboles de aislamiento.Hola @mia_stephens , ¿alguna actualización sobre esto? Gracias
Re: Bosque de aislamiento y árboles de aislamiento.Hola @FN , hemos investigado un poco sobre el uso de la integración de Python en JMP 18 con el paquete 'isotree' de Python, usando JSL para crear ventanas de diálogo en JMP. Parece prometedor, pero no tenemos nada que compartir en este momento. ¿Tienes curiosidad por saber si has echado un vistazo a este enfoque?
Re: Bosque de aislamiento y árboles de aislamiento.Gracias, Mía.
Como compartí en mis comentarios anteriores, este enfoque será muy útil en JMP ya que supera a otros algoritmos de detección de anomalías con valores atípicos globales.
Las distancias KNN (dentro del menú de análisis de valores atípicos de JMP) funcionan bien para valores atípicos locales.
Añadiendo Ej. Isolation Forest será útil para identificar y eliminar rápidamente todo tipo de valores atípicos en conjuntos de datos masivos.
Algoritmos de detección de anomalías no supervisados en datos del mundo real: ¿cuántos necesitamos?
El árbol de partición también se puede modificar para dividir los datos aleatoriamente cuando no se proporciona Y.
Re: Bosque de aislamiento y árboles de aislamientoVolviendo a esta solicitud para ver si hay alguna actualización.
Este documento resume por qué JMP debería implementar esto.
“33 algoritmos de detección de anomalías no supervisados en 52 conjuntos de datos tabulares multivariados del mundo real, lo que representa la mayor comparación de algoritmos de detección de anomalías no supervisados hasta la fecha. En esta colección de conjuntos de datos, el algoritmo EIF (Extended Isolation Forest) supera significativamente a la mayoría de los demás algoritmos”.
Re: Bosque de aislamiento y árboles de aislamientoAcabo de ver un seminario web de integración de JMP y Python a cargo de Ross M (que fue genial) en el que destaca este enfoque en Python, pero parece que podría implementarse de manera relativamente sencilla de forma nativa en JMP. Parece representar una combinación de técnicas que JMP ya utiliza, como árboles de partición y análisis de valores atípicos multivariados.
Re: Bosque de aislamiento y árboles de aislamiento - Estado cambiado a: Sí, ¡permanezca atento!En desarrollo como complemento Pythonic.
Re: Bosque de aislamiento y árboles de aislamiento¡Buenas noticias! Gracias Mia:)
Re: Bosque de aislamiento y árboles de aislamiento¡El complemento ya está disponible en el marketplace! https://marketplace.jmp.com/appdetails/Isolation+Forest
Gracias @russ_wolfinger por proporcionar eso.
Re: Bosque de aislamiento y árboles de aislamientoSí, el complemento ya está disponible. ¡Gracias @MathStatChem por ponerlo en marcha!
Re: Bosque de aislamiento y árboles de aislamiento - Estado cambiado a: EntregadoRe: Bosque de aislamiento y árboles de aislamiento@mia_stephens , ¡gracias por el esfuerzo invertido en desarrollar este complemento!
Dicho esto, he notado que su dependencia de las bibliotecas de Python hace que sea bastante difícil de usar, al menos en máquinas Windows.
Si no hay planes para implementar esta funcionalidad de forma nativa en JMP (lo que sería fantástico, en mi opinión) :smiling_face_with_smiling_eyes: ¿Considerarías publicar el complemento en código abierto? Así, la comunidad podría ayudar a mantenerlo y mejorarlo en el futuro.
---
Por ejemplo, no puedo instalar isotree:
Python Install Packages("isotree");
En JMP 18 me aparece este error:
Traceback (most recent call last):
File "
", line 198, in _run_module_as_main
File "
", line 88, in _run_code File "C:\Users\user\AppData\Roaming\JMP\JMP\Python\Python311\site-packages\pip\__main__.py", line 22, in
from pip._internal.cli.main import main as _main File "C:\Users\user\AppData\Roaming\JMP\JMP\Python\Python311\site-packages\pip\_internal\cli\main.py", line 10, in
from pip._internal.cli.autocompletion import autocomplete File "C:\Users\user\AppData\Roaming\JMP\JMP\Python\Python311\site-packages\pip\_internal\cli\autocompletion.py", line 10, in
from pip._internal.cli.main_parser import create_main_parser File "C:\Users\user\AppData\Roaming\JMP\JMP\Python\Python311\site-packages\pip\_internal\cli\main_parser.py", line 9, in
from pip._internal.build_env import get_runnable_pip File "C:\Users\user\AppData\Roaming\JMP\JMP\Python\Python311\site-packages\pip\_internal\build_env.py", line 19, in
from pip._internal.cli.spinners import open_spinner File "C:\Users\user\AppData\Roaming\JMP\JMP\Python\Python311\site-packages\pip\_internal\cli\spinners.py", line 9, in
from pip._internal.utils.logging import get_indentation File "C:\Users\user\AppData\Roaming\JMP\JMP\Python\Python311\site-packages\pip\_internal\utils\logging.py", line 4, in
import logging.handlers File "logging\handlers.py", line 26, in
File "socket.py", line 51, in
ModuleNotFoundError: No module named '_socket'
Y en JMP 19 Pro me aparece un error del compilador.
//:*/
import jmputils
jmputils.jpip('install', 'isotree')
/*:
Collecting isotree
Using cached isotree-0.6.1.post8.tar.gz (300 kB)
Installing build dependencies: started
Installing build dependencies: finished with status 'done'
Getting requirements to build wheel: started
Getting requirements to build wheel: finished with status 'done'
Preparing metadata (pyproject.toml): started
Preparing metadata (pyproject.toml): finished with status 'done'
Building wheels for collected packages: isotree
Building wheel for isotree (pyproject.toml): started
Building wheel for isotree (pyproject.toml): finished with status 'error'
error: subprocess-exited-with-error
Building wheel for isotree (pyproject.toml) did not run successfully.
exit code: 1
[14 lines of output]
C:\Users\user\AppData\Local\Temp\pip-build-env-e669figd\overlay\Lib\site-packages\setuptools\_distutils\extension.py:150: UserWarning: Unknown Extension options: 'install_requires'
warnings.warn(msg)
C:\Users\user\AppData\Local\Temp\pip-build-env-e669figd\overlay\Lib\site-packages\setuptools\dist.py:332: InformationOnly: Normalizing '0.6.1-8' to '0.6.1.post8'
self.metadata.version = self._normalize_version(self.metadata.version)
running bdist_wheel
running build
running build_py
creating build\lib.win-amd64-cpython-313\isotree
copying isotree\__init__.py -> build\lib.win-amd64-cpython-313\isotree
running build_ext
Compiling isotree/cpp_interface.pyx because it changed.
[1/1] Cythonizing isotree/cpp_interface.pyx
building 'isotree._cpp_interface' extension
error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for isotree
Failed to build isotree
error: failed-wheel-build-for-install
Failed to build installable wheels for some pyproject.toml based projects
isotree
0
Re: Bosque de aislamiento y árboles de aislamientoEl error _socket indica que debe desinstalar la versión 18.0 y actualizar a una versión 18.x más reciente. Debe ser una desinstalación, no una modificación/restauración. La biblioteca compartida de socket no está en la ubicación de instalación correcta.
Tanto para la versión 18 como para la 19, isotree es uno de los paquetes más complejos. Una solución alternativa que suele funcionar es tener una instalación estándar de Python.org 3.11.x para JMP 18 o 3.13.x para JMP 19 y realizar una instalación pip normal en el entorno predeterminado. Esto suele compilarse correctamente. A continuación, realice la instalación jpip desde JMP. JMP puede entonces recoger la compilación empaquetada en caché local y luego instalarla en el directorio privado de paquetes del sitio de JMP.
Re: Bosque de aislamiento y árboles de aislamientoGracias por responder @Paul_Nelson .
Re: Bosque de aislamiento y árboles de aislamientoerror: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
[end of output]
Cuando Python necesita compilar paquetes basados en C/C++, es necesario tener instalado un entorno de desarrollo de C/C++. Visual Studio Code debería ser suficiente. Esto es igual que si ya tuviera instalado Python e intentara instalar isotree.