Re: アイソレーション フォレストとアイソレーション ツリー素晴らしい提案@FN .
孤立の森に加えて、
"通常の" Isolation Forest アルゴリズムの代わりに Extended Isolation Forest を検討することも興味深いかもしれません。これは、(水平または垂直だけでなく) 決定境界の方向により多くの柔軟性を提供するためです。
拡張分離フォレストの仕組みと使用方法を説明する記事は次のとおりです。 https://link.medium.com/TL1Lxirf9pb
Re: アイソレーション フォレストとアイソレーション ツリー確かに、拡張された木や森はさらに優れています。
あなたのリンクをたどると、extended の元の論文はここにあります: https://arxiv.org/pdf/1811.02141.pdf
隔離林と隔離樹木Isolation Forest は、さまざまなベンチマークでの一般的な有効性と強力なスケーラビリティにより、近年最も人気のある異常検出器の 1 つとして浮上しています。計算効率が高く、異常検出に非常に効果的であることが証明されています。

隔離林と他の林との比較 ( src )
このアルゴリズムは、特徴をランダムに選択し、選択した特徴の最大値と最小値の間の分割値をランダムに選択することで、観測値を分離します。したがって、実装はパーティション ツリーやブートストラップ ツリーと同じですが、ターゲット関数が均一である必要がある (定数 Y 値で変数を分割しようとする) という違いがあります。
しかし、これを JMP で試しても機能しません。
JMP に Isolation Forest を組み込むことで、予測子のスクリーニングと同様に、ユーザーはデータ内の異常を検出するための強力なツールにアクセスできるようになります。これにより、さらに調査する必要がある可能性のある異常なパターンや動作を特定できるようになります。
この論文では、IForestがどのように機能し、そのいくつかの制限(拡張された隔離フォレストなど)を改善するかを研究しています。
https://hal.science/hal-03537102/document
Scikit-learn ドキュメント
https://scikit-learn.org/stable/modules/outlier_detection.html
基本的なデータ分析とモデリング予測モデリングと機械学習Re: 隔離フォレストと隔離ツリー - ステータスが次のように変更されました: 調査中このリクエストをありがとう@FN . 現在調査中です。
Re: 隔離林と隔離樹木ありがとう、ミア。 分離ツリーの実装はパーティション ツリーと同じであることに注意してください。
「唯一の」違いは、パーティションがランダムに発生することです。
JMP では、変動性のない Y (たとえば、すべて 0) を導入すると、JMP は分割を実行しません (何かが期待されます。そうでない場合、解は特定の時点で確率的になります)。
文献では、これはエクストラツリーとして知られています。
https://en.wikipedia.org/wiki/Random_forest#ExtraTrees
Re: 隔離林と隔離樹木こんにちは@mia_stephens 、これについて何か更新はありますか?ありがとう
Re: 隔離林と隔離樹木こんにちは@FN 。JMP 18 の Python 統合とPython の「isotree」パッケージを使用して、JSL を使用して JMP でダイアログ ウィンドウを作成する方法について調査しました。有望に思えますが、現時点では共有できるものはありません。このアプローチを検討したことがありますか?
Re: 隔離林と隔離樹木ありがとう、ミア。
以前のコメントで共有したように、このアプローチは、グローバル外れ値を使用した他の異常検出アルゴリズムよりも優れているため、JMP で非常に役立ちます。
KNN 距離 (JMP の外れ値分析メニュー内) は、ローカル外れ値に適しています。
たとえば、Isolation Forest を追加すると、大規模なデータセット内のあらゆる種類の外れ値をすばやく識別して削除するのに役立ちます。
現実世界のデータに対する教師なし異常検出アルゴリズム: いくつ必要か?
Y が指定されていない場合は、パーティション ツリーを変更してデータをランダムに分割することもできます。
Re: 隔離林と隔離樹木このリクエストに戻って、更新があるかどうかを確認します。
この論文では、JMP にこれを実装する必要がある理由をまとめています。
「52 の実際の多変量表形式データ セットに対して 33 の教師なし異常検出アルゴリズムを適用し、これまでで最大規模の教師なし異常検出アルゴリズムの比較を実行しました。このデータ セットのコレクションでは、EIF (Extended Isolation Forest) アルゴリズムが他のほとんどのアルゴリズムを大幅に上回りました。」
Re: 隔離林と隔離樹木私はちょうど Ross M による JMP-Python 統合ウェビナー (素晴らしい内容でした) を見ましたが、その中で彼は Python でのこのアプローチを強調していましたが、JMP でネイティブに実行することも比較的簡単にできそうです。これは、パーティション ツリーや多変量外れ値分析など、JMP がすでに行っている手法を組み合わせたものと思われます。
Re: 隔離フォレストと隔離ツリー - ステータスが「はい、お楽しみに!」に変更されました。Python アドインとして開発中。
Re: 隔離林と隔離樹木素晴らしいニュースです!ありがとう、ミア:)
Re: 隔離林と隔離樹木アドインは現在マーケットプレイスで入手可能です! https://marketplace.jmp.com/appdetails/Isolation+Forest
提供してくれたフォローに感謝します。
Re: 隔離林と隔離樹木はい、アドインが利用できるようになりました。開始してくれた翻訳:に感謝します。
Re: 隔離フォレストと隔離ツリー - ステータスが「配信済み」に変更されましたRe: 隔離林と隔離樹木ミア・ステフェンズ 、このアドオンの開発にご尽力いただきありがとうございます!
そうは言っても、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
Re: 隔離林と隔離樹木_socketエラーが発生しています。18.0をアンインストールし、新しい18.xにアップデートする必要があります。また、変更/復元ではなく、アンインストールのみ行う必要があります。ソケット共有ライブラリが正しいインストール場所にありません。
18と19の両方において、isotreeは扱いにくいパッケージの一つです。通常有効な回避策は、JMP 18の場合はPython.org 3.11.x、JMP 19の場合は3.13.xを標準インストールし、デフォルト環境で通常のpipインストールを実行することです。通常はこれで正常にビルドされます。その後、JMP内からjpipインストールを実行します。JMPはローカルにキャッシュされたパッケージビルドを取得し、JMPのプライベートサイトパッケージディレクトリにインストールします。
Re: 隔離林と隔離樹木@Paul_Nelsonさん、ご返信ありがとうございます。
Re: 隔離林と隔離樹木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をインストールしようとした場合と変わりません。