隔離林和隔離樹由於其在不同基準上的普遍有效性和強大的可擴展性,隔離森林已成為近年來最受歡迎的異常檢測器之一。它的計算效率很高,並且已被證明在異常檢測方面非常有效。

隔離森林與其他森林的比較 ( src )
此演算法透過隨機選擇一個特徵,然後隨機選擇所選特徵的最大值和最小值之間的分割值來隔離觀察結果。因此,實現與分割樹和引導樹相同,不同之處在於目標函數應該是統一的(嘗試用恆定的 Y 值分割變數)。
然而,如果您在 JMP 中嘗試此操作,則不起作用。
透過將隔離森林納入 JMP(類似 tu 預測器篩選)中,使用者將能夠使用強大的工具來檢測資料中的異常情況。這可以幫助他們識別可能需要進一步調查的異常模式或行為。
本文研究了 IForest 的工作原理並對其少數限制進行了改進(即擴展隔離森林)
https://hal.science/hal-03537102/document
Scikit-learn 文檔
https://scikit-learn.org/stable/modules/outlier_detection.html
基礎資料分析與建模預測建模和機器學習回覆:隔離森林和隔離樹謝謝,米婭。 請注意,隔離樹的實作與分割樹相同。
「唯一」的差異是分區是隨機發生的。
在 JMP 中,如果您引入沒有任何可變性的 Y(例如全 0),JMP 不會執行任何分割(這是預期的結果,否則解在某個點將是隨機的)。
在文獻中,這被稱為 Extratrees。
https://en.wikipedia.org/wiki/Random_forest#ExtraTrees
回覆:隔離林和隔離樹 - 狀態變更為:正在調查感謝您的請求@FN 。 我們目前正在調查。
回覆:隔離森林和隔離樹事實上,延伸的樹木或森林會更好。
通過您的鏈接,擴展的原始論文在這裡: https://arxiv.org/pdf/1811.02141.pdf
回覆:隔離森林和隔離樹很好的建議@FN 。
除了隔離森林,
考慮擴展隔離森林而不是「常規」隔離森林演算法也可能很有趣,因為它在決策邊界方向(不僅是水平或垂直)上提供了更大的靈活性。
這是一篇文章,解釋了擴展隔離森林的工作原理以及如何使用它: https://link.medium.com/TL1Lxirf9pb
回覆:隔離森林和隔離樹你好@mia_stephens ,有什麼更新嗎?謝謝
回覆:隔離森林和隔離樹@FN您好,我們已經對 JMP 18 中的 Python 整合與Python“isotree”套件一起使用進行了一些研究,使用 JSL 在 JMP 中建立對話方塊視窗。它看起來很有希望,但目前我們沒有任何東西可以分享。好奇您是否已經了解過這種方法?
回覆:隔離森林和隔離樹謝謝,米婭。
正如我之前的評論中所分享的,這種方法在 JMP 中非常有用,因為它優於其他具有全局異常值的異常檢測演算法。
KNN 距離(在 JMP 的異常值分析選單中)非常適合局部異常值。
新增Ex。隔離森林對於快速識別和刪除海量資料集中所有類型的異常值非常有用。
針對現實世界數據的無監督異常檢測演算法:我們需要多少?
當未給予 Y 時,也可以修改分割樹以隨機分割資料。
回覆:隔離森林和隔離樹返回此請求以查看是否有任何更新。
本文總結了為什麼 JMP 應實施此功能。
「對 52 個現實世界的多元表格資料集進行了 33 種無監督異常檢測演算法,對無監督異常檢測演算法進行了迄今為止最大規模的比較。在這個資料集上,EIF(擴展隔離森林)演算法顯著優於大多數其他演算法。
回覆:隔離森林和隔離樹我剛剛看到 Ross M 舉辦的 JMP-Python 整合網路研討會(非常棒),他在其中重點介紹了 Python 中的這種方法,但似乎可以相對輕鬆地在 JMP 中本地完成。它似乎代表了 JMP 已經採用的技術的組合,例如分區樹和多元離群值分析。
回覆:隔離森林和隔離樹 - 狀態更改為:是的,敬請期待!正在開發為 Pythonic 插件。
回覆:隔離森林和隔離樹好消息!謝謝米婭:)
回覆:隔離森林和隔離樹插件現已在市場上可用! https://marketplace.jmp.com/appdetails/Isolation+Forest
感謝@russ_wolfinger提供此資訊。
回覆:隔離森林和隔離樹是的,該插件現在可用。感謝@MathStatChem 的幫助!
回覆:隔離林和隔離樹 - 狀態變更為:已交付回覆:隔離森林和隔離樹@mia_stephens ,感謝您為開發這個附加元件所付出的努力!
話雖如此,我注意到它對 Python 庫的依賴使得它至少在 Windows 機器上使用起來相當具有挑戰性。
如果沒有計劃在 JMP 中原生實現此功能(在我看來,這太棒了:smiling_face_with_smiling_eyes: ),您會考慮開源這個外掛嗎?這樣,社區將來就可以幫助維護和改進它。
---
例如,我無法安裝 isotree:
Python Install Packages("isotree");
在 JMP 18 中我收到此錯誤:
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'
在 JMP 19 Pro 中我收到編譯器錯誤。
//:*/
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
回覆:隔離森林和隔離樹_socket 錯誤,您需要解除安裝 18.0 版本,然後更新至較新的 18.x 版本。而且必須是卸載,而不是修改/恢復。套接字共享庫的安裝位置不正確。
對於 JMP 18 和 19 版本來說,isotree 都是比較棘手的軟體包之一。通常有效的解決方法是,為 JMP 18 標準安裝 Python.org 3.11.x 版本,或為 JMP 19 標準安裝 3.13.x 版本,然後在預設環境中執行常規 pip 安裝。這通常可以正確構建。然後在 JMP 內部執行 jpip 安裝。 JMP 會取得本機快取的打包版本,然後安裝到 JMP 私有的 site-packages 目錄中。
回覆:隔離森林和隔離樹感謝您回覆@Paul_Nelson 。
回覆:隔離森林和隔離樹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]
當 Python 需要建置基於 C/C++ 的套件時,你需要安裝 C/C++ 開發環境。 Visual Studio Code 應該就夠了。這和你剛安裝 Python 並嘗試安裝 isotree 沒什麼區別。