Isolationswald und IsolationsbäumeIsolation Forest hat sich in den letzten Jahren aufgrund seiner allgemeinen Wirksamkeit in verschiedenen Benchmarks und seiner starken Skalierbarkeit zu einem der wohl beliebtesten Anomaliedetektoren entwickelt. Es ist rechnerisch effizient und hat sich bei der Anomalieerkennung als sehr effektiv erwiesen.

Isolationswald im Vergleich zu anderen ( Quelle )
Der Algorithmus isoliert Beobachtungen, indem er zufällig ein Merkmal auswählt und dann zufällig einen Teilwert zwischen den Maximal- und Minimalwerten des ausgewählten Merkmals auswählt. Die Implementierung ist daher dieselbe wie bei Partitionsbäumen und Bootstrapbäumen, mit dem Unterschied, dass die Zielfunktion einheitlich sein sollte (Versuch, Variablen mit einem konstanten Y-Wert aufzuteilen).
Wenn Sie dies jedoch in JMP versuchen, funktioniert es nicht.
Durch die Einbindung von Isolation Forest in JMP, ähnlich wie beim Prädiktor-Screening, hätten Benutzer Zugriff auf ein leistungsstarkes Tool zum Erkennen von Anomalien in ihren Daten. Dies könnte ihnen helfen, ungewöhnliche Muster oder Verhaltensweisen zu erkennen, die möglicherweise weitere Untersuchungen erfordern.
In diesem Artikel wird die Funktionsweise von IForest untersucht und dessen wenige Einschränkungen (z. B. erweiterter Isolationswald) verbessert.
https://hal.science/hal-03537102/document
Scikit-learn-Dokumentation
https://scikit-learn.org/stable/modules/outlier_detection.html
Grundlegende Datenanalyse und ModellierungPrädiktive Modellierung und maschinelles LernenBetreff: Isolationswald und IsolationsbäumeDanke, Mia. Beachten Sie, dass die Implementierung eines Isolationsbaums mit der eines Partitionsbaums identisch ist.
Der „einzige“ Unterschied besteht darin, dass die Partitionierung zufällig erfolgt.
Wenn Sie in JMP ein Y ohne Variabilität (z. B. alle Nullen) einführen, führt JMP keine Aufteilung durch (was erwartet wird, andernfalls sind die Lösungen an einem bestimmten Punkt stochastisch).
In der Literatur wird dies als Extratrees bezeichnet.
https://en.wikipedia.org/wiki/Random_forest#ExtraTrees
Betreff: Isolationswald und Isolationsbäume – Status geändert in: Wird untersuchtVielen Dank für diese Anfrage @FN . Wir ermitteln derzeit.
Betreff: Isolationswald und IsolationsbäumeAusgedehnte Bäume oder Wälder wären sogar noch besser.
Wenn Sie Ihrem Link folgen, finden Sie hier das Originalpapier für die erweiterte Version: https://arxiv.org/pdf/1811.02141.pdf
Betreff: Isolationswald und IsolationsbäumeToller Vorschlag @FN .
Zusätzlich zum Isolationswald,
Es könnte auch interessant sein, den Extended Isolation Forest anstelle des „normalen“ Isolation Forest-Algorithmus in Betracht zu ziehen, da er mehr Flexibilität in den Richtungen der Entscheidungsgrenzen bietet (nicht nur horizontal oder vertikal).
Hier ist ein Artikel, der erklärt, wie Extended Isolation Forest funktioniert und wie man es verwendet: https://link.medium.com/TL1Lxirf9pb
Betreff: Isolationswald und IsolationsbäumeHallo @mia_stephens , gibt es Neuigkeiten hierzu? Danke
Betreff: Isolationswald und IsolationsbäumeHallo @FN , wir haben einige Untersuchungen zur Verwendung der Python-Integration in JMP 18 mit dem Python-Paket „isotree“ durchgeführt und JSL zum Erstellen von Dialogfenstern in JMP verwendet. Es sieht vielversprechend aus, aber wir können derzeit noch nichts mitteilen. Neugierig, ob Sie sich diesen Ansatz angesehen haben?
Betreff: Isolationswald und IsolationsbäumeDanke, Mia.
Wie ich bereits in meinen vorherigen Kommentaren erwähnt habe, wird dieser Ansatz in JMP sehr nützlich sein, da er andere Algorithmen zur Anomalieerkennung bei globalen Ausreißern übertrifft.
KNN-Distanzen (im Ausreißeranalysemenü von JMP) funktionieren gut für lokale Ausreißer.
Das Hinzufügen eines Ex. Isolation Forest ist dort hilfreich, um alle Arten von Ausreißern in riesigen Datensätzen schnell zu identifizieren und zu entfernen.
Unüberwachte Algorithmen zur Anomalieerkennung auf realen Daten: Wie viele brauchen wir?
Der Partitionsbaum kann auch geändert werden, um die Daten zufällig aufzuteilen, wenn Y nicht angegeben ist.
Betreff: Isolationswald und IsolationsbäumeIch komme auf diese Anfrage zurück, um zu sehen, ob es Aktualisierungen gibt.
In diesem Dokument wird zusammengefasst, warum dies in JMP implementiert werden sollte.
„33 unbeaufsichtigte Algorithmen zur Anomalieerkennung auf 52 realen multivariaten tabellarischen Datensätzen, die den bislang größten Vergleich unbeaufsichtigter Algorithmen zur Anomalieerkennung durchführen. Bei dieser Sammlung von Datensätzen übertrifft der EIF-Algorithmus (Extended Isolation Forest) die meisten anderen Algorithmen deutlich.“
Betreff: Isolationswald und IsolationsbäumeIch habe gerade ein Webinar von Ross M zur JMP-Python-Integration gesehen (das großartig war), in dem er diesen Ansatz in Python hervorhebt, aber es scheint, als könnte man ihn relativ einfach nativ in JMP umsetzen. Es scheint eine Mischung aus Techniken darzustellen, die JMP bereits verwendet, wie Partitionsbäume und multivariate Ausreißeranalyse.
Betreff: Isolationswald und Isolationsbäume – Status geändert auf: Ja, bleiben Sie dran!In der Entwicklung als Python-Add-In.
Betreff: Isolationswald und IsolationsbäumeTolle Neuigkeiten! Danke, Mia:)
Betreff: Isolationswald und IsolationsbäumeDas Add-In ist jetzt im Marketplace verfügbar! https://marketplace.jmp.com/appdetails/Isolation+Forest
Danke, @russ_wolfinger, für die Bereitstellung.
Betreff: Isolationswald und IsolationsbäumeJa, das Add-In ist jetzt verfügbar. Danke @MathStatChem für die Unterstützung!
Betreff: Isolationswald und Isolationsbäume - Status geändert auf: GeliefertBetreff: Isolationswald und Isolationsbäume@mia_stephens , vielen Dank für die Mühe, die Sie in die Entwicklung dieses Add-ons gesteckt haben!
Allerdings ist mir aufgefallen, dass die Verwendung auf Windows-Rechnern aufgrund der Abhängigkeit von Python-Bibliotheken ziemlich schwierig ist.
Wenn es keine Pläne gibt, diese Funktionalität nativ in JMP zu implementieren (was meiner Meinung nach fantastisch wäre :smiling_face_with_smiling_eyes: ), würden Sie in Erwägung ziehen, das Add-on als Open Source bereitzustellen? Auf diese Weise könnte die Community dazu beitragen, es in Zukunft zu pflegen und zu verbessern.
---
Beispielsweise kann ich Isotree nicht installieren:
Python Install Packages("isotree");
In JMP 18 erhalte ich diesen Fehler:
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'
Und in JMP 19 Pro erhalte ich einen Compilerfehler.
//:*/
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
Betreff: Isolationswald und IsolationsbäumeDer _socket-Fehler: Sie müssen 18.0 deinstallieren und auf die neuere Version 18.x aktualisieren. Es muss sich um eine Deinstallation handeln, nicht um eine Änderung/Wiederherstellung. Die gemeinsam genutzte Socket-Bibliothek befindet sich nicht am richtigen Installationsort.
Sowohl für 18 als auch für 19 ist Isotree eines der heiklen Pakete. Ein Workaround, der in der Regel funktioniert, ist eine Standardinstallation von Python.org 3.11.x für JMP 18 oder 3.13.x für JMP 19 und eine reguläre Pip-Installation in der Standardumgebung. Dies führt in der Regel zu einem ordnungsgemäßen Build. Führen Sie anschließend die JPIP-Installation innerhalb von JMP durch. JMP kann dann den lokal zwischengespeicherten Paket-Build abrufen und im privaten JMP-Site-Packages-Verzeichnis installieren.
Betreff: Isolationswald und IsolationsbäumeVielen Dank für Ihre Antwort, @Paul_Nelson .
Betreff: Isolationswald und Isolationsbäumeerror: 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]
Wenn Python C/C++-basierte Pakete erstellen muss, benötigen Sie eine C/C++-Entwicklungsumgebung. Visual Studio Code sollte ausreichend sein. Dies ist nicht anders, als wenn Sie nur Python installiert hätten und versucht hätten, Isotree zu installieren.