Forêt d'isolement et arbres d'isolementIsolation Forest est devenu l'un des détecteurs d'anomalies les plus populaires ces dernières années en raison de son efficacité générale sur différents tests et de sa forte évolutivité. Il est efficace en termes de calcul et s'est avéré très efficace dans la détection des anomalies.

Forêt isolée par rapport aux autres ( src )
L'algorithme isole les observations en sélectionnant aléatoirement une caractéristique, puis en sélectionnant aléatoirement une valeur de division entre les valeurs maximale et minimale de la caractéristique sélectionnée. L'implémentation est donc la même que les arbres de partition et les arbres bootstrap, à la différence que la fonction cible doit être uniforme (en essayant de diviser les variables avec une valeur Y constante).
Cependant, si vous essayez cela dans JMP, cela ne fonctionne pas.
En incluant Isolation Forest dans JMP, de la même manière que le filtrage des prédicteurs, les utilisateurs auraient accès à un outil puissant pour détecter les anomalies dans leurs données. Cela pourrait les aider à identifier des modèles ou des comportements inhabituels qui pourraient justifier une enquête plus approfondie.
Cet article étudie le fonctionnement d'IForest et améliore ses quelques limitations (c'est-à-dire la forêt d'isolement étendue).
https://hal.science/hal-03537102/document
Documentation de Scikit-learn
https://scikit-learn.org/stable/modules/outlier_detection.html
Analyse et modélisation de données de baseModélisation prédictive et apprentissage automatiqueRe: Forêt d'isolement et arbres d'isolementMerci, Mia. Notez que l’implémentation d’une arborescence d’isolation est la même que celle d’une arborescence de partition.
La "seule" différence est que la partition se produit de manière aléatoire.
Dans JMP, si vous introduisez un Y sans aucune variabilité (tous des 0, par exemple), JMP n'effectue aucun fractionnement (ce qui est attendu, sinon les solutions seront stochastiques à un certain point).
Dans la littérature, cela est connu sous le nom d’Extratrees.
https://en.wikipedia.org/wiki/Random_forest#ExtraTrees
Objet : Forêt d'isolement et arbres d'isolement - Statut modifié en : EnquêteMerci pour cette demande @FN . Nous menons actuellement une enquête.
Re: Forêt d'isolement et arbres d'isolementDes arbres ou des forêts étendus seront en effet encore meilleurs.
En suivant votre lien, l'article original pour Extended est ici : https://arxiv.org/pdf/1811.02141.pdf
Re: Forêt d'isolement et arbres d'isolementExcellente suggestion @FN .
En plus d'Isolement Forest,
il pourrait également être intéressant d'envisager l'algorithme de forêt d'isolement étendu au lieu de l'algorithme de forêt d'isolement « normal », car il offre plus de flexibilité dans les directions des limites de décision (pas seulement horizontales ou verticales).
Voici un article expliquant le fonctionnement de Extended Isolation Forest et comment l'utiliser : https://link.medium.com/TL1Lxirf9pb
Re: Forêt d'isolement et arbres d'isolementBonjour @mia_stephens , des nouvelles à ce sujet ? Merci
Re: Forêt d'isolement et arbres d'isolementBonjour @FN , nous avons effectué quelques recherches sur l'utilisation de l'intégration Python dans JMP 18 avec le package Python 'isotree', en utilisant JSL pour créer des fenêtres de dialogue dans JMP. Cela semble prometteur, mais nous n’avons rien à partager pour le moment. Curieux de savoir si vous avez examiné cette approche ?
Re: Forêt d'isolement et arbres d'isolementMerci, Mia.
Comme je l'ai partagé dans mes commentaires précédents, cette approche sera très utile dans JMP car elle surpasse les autres algorithmes de détection d'anomalies avec des valeurs aberrantes globales.
Les distances KNN (dans le menu d'analyse des valeurs aberrantes de JMP) fonctionnent bien pour les valeurs aberrantes locales.
Ajout d'ex. Isolation Forest sera utile pour identifier et supprimer rapidement tous les types de valeurs aberrantes dans des ensembles de données massifs.
Algorithmes de détection d’anomalies non supervisés sur des données réelles : de combien avons-nous besoin ?
L'arborescence de partition peut également être modifiée pour diviser les données de manière aléatoire lorsque Y n'est pas donné.
Ré: Forêt d'isolement et arbres d'isolementJe reviens sur cette demande pour voir s'il y a des mises à jour.
Cet article résume pourquoi JMP devrait avoir cela mis en œuvre.
« 33 algorithmes de détection d'anomalies non supervisés sur 52 ensembles de données tabulaires multivariées du monde réel, réalisant la plus grande comparaison d'algorithmes de détection d'anomalies non supervisés à ce jour. Sur cette collection d'ensembles de données, l'algorithme EIF (Extended Isolation Forest) surpasse considérablement la plupart des autres algorithmes. »
Ré: Forêt d'isolement et arbres d'isolementJe viens de voir un webinaire sur l'intégration JMP-Python de Ross M (qui était génial) dans lequel il met en avant cette approche en Python, mais il semble que cela pourrait être relativement facilement réalisé de manière native dans JMP. Il semble représenter un mélange de techniques que JMP utilise déjà, comme les arbres de partition et l'analyse des valeurs aberrantes multivariées.
Re : Forêt d'isolement et arbres d'isolement - Statut modifié en : Oui, restez à l'écoute !En cours de développement en tant que module complémentaire Python.
Ré: Forêt d'isolement et arbres d'isolementExcellente nouvelle ! Merci Mia:)
Re : Forêt d'isolement et arbres d'isolementLe module complémentaire est désormais disponible sur la place de marché ! https://marketplace.jmp.com/appdetails/Isolation+Forest
Merci @russ_wolfinger pour cette information.
Re : Forêt d'isolement et arbres d'isolementOui, le module complémentaire est désormais disponible. Merci à @MathStatChem pour son lancement !
Re : Forêt d'isolement et arbres d'isolement - Statut modifié : LivréRe : Forêt d'isolement et arbres d'isolement@mia_stephens , merci pour l'effort consacré au développement de ce module complémentaire !
Cela dit, j'ai remarqué que sa dépendance aux bibliothèques Python rend son utilisation assez difficile sur les machines Windows au moins.
S'il n'y a pas de projet d'implémenter cette fonctionnalité nativement dans JMP (ce qui serait fantastique, à mon avis :smiling_face_with_smiling_eyes: ), envisageriez-vous de rendre le module complémentaire open source ? Ainsi, la communauté pourrait contribuer à sa maintenance et à son amélioration future.
---
Par exemple, je ne parviens pas à installer isotree :
Python Install Packages("isotree");
Dans JMP 18, j'obtiens cette erreur :
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'
Et dans JMP 19 Pro, j'obtiens une erreur de compilation.
//:*/
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 : Forêt d'isolement et arbres d'isolementL'erreur _socket : vous devez désinstaller la version 18.0 et effectuer la mise à jour vers une version 18.x plus récente. Il doit s'agir d'une désinstallation, et non d'une modification/restauration. La bibliothèque partagée de sockets ne se trouve pas au bon emplacement d'installation.
Pour JMP 18 et 19, isotree est l'un des paquets les plus délicats. Une solution de contournement généralement efficace consiste à installer Python.org 3.11.x (version standard) pour JMP 18 ou 3.13.x (version 19) et à effectuer une installation pip standard dans l'environnement par défaut. La compilation est généralement correcte. Effectuez ensuite l'installation jpip depuis JMP. JMP peut alors récupérer la compilation locale mise en cache et l'installer dans le répertoire privé des packages du site JMP.
Re : Forêt d'isolement et arbres d'isolementMerci d'avoir répondu @Paul_Nelson .
Re : Forêt d'isolement et arbres d'isolementerror: 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]
Pour créer des packages C/C++ en Python, un environnement de développement C/C++ doit être installé. Visual Studio Code devrait suffire. C'est comme si vous aviez simplement installé Python et que vous essayiez d'installer isotree.