Re: Foresta di isolamento e alberi di isolamentoOttimo suggerimento @FN .
Oltre alla foresta di isolamento,
potrebbe anche essere interessante considerare l'Extended Isolation Forest invece del "normale" algoritmo Isolation Forest, in quanto fornisce maggiore flessibilità nelle direzioni dei confini decisionali (non solo orizzontali o verticali).
Ecco un articolo che spiega come funziona la foresta di isolamento estesa e come usarla: https://link.medium.com/TL1Lxirf9pb
Re: Foresta di isolamento e alberi di isolamentoGli alberi estesi o le foreste saranno ancora migliori, anzi.
Seguendo il tuo link, il documento originale per esteso è qui: https://arxiv.org/pdf/1811.02141.pdf
Foresta isolata e alberi isolatiIsolation Forest è emerso come uno dei rilevatori di anomalie più popolari negli ultimi anni, grazie alla sua efficacia generale su diversi benchmark e alla sua forte scalabilità. È efficiente dal punto di vista computazionale e ha dimostrato di essere molto efficace nel rilevamento delle anomalie.

Foresta isolata rispetto ad altre ( src )
L'algoritmo isola le osservazioni selezionando casualmente una caratteristica e poi selezionando casualmente un valore di suddivisione tra i valori massimo e minimo della caratteristica selezionata. L'implementazione è quindi la stessa degli alberi di partizione e degli alberi bootstrap con la differenza che la funzione target dovrebbe essere uniforme (cercando di suddividere le variabili con un valore Y costante).
Tuttavia, se si prova a farlo in JMP, non funziona.
Includendo Isolation Forest in JMP, simile allo screening dei predittori, gli utenti avrebbero accesso a un potente strumento per rilevare anomalie nei loro dati. Ciò potrebbe aiutarli a identificare modelli o comportamenti insoliti che potrebbero giustificare ulteriori indagini.
Questo documento studia il funzionamento di IForest e ne migliora alcune limitazioni (ad esempio, la foresta di isolamento esteso)
https://hal.science/hal-03537102/document
Documentazione di Scikit-learn
https://scikit-learn.org/stable/modules/outlier_detection.html
Analisi e modellazione dei dati di baseModellazione predittiva e apprendimento automaticoOggetto: Foresta di isolamento e alberi di isolamento - Stato modificato in: IndagineGrazie per questa richiesta @FN . Attualmente stiamo indagando.
Re: Foresta di isolamento e alberi di isolamentoGrazie Mia. Si noti che l'implementazione di un albero di isolamento è la stessa di un albero delle partizioni.
L '"unica" differenza è che la partizione avviene in modo casuale.
In JMP, se introduci una Y senza alcuna variabilità (tutti 0, ad esempio), JMP non esegue alcuna divisione (qualcosa previsto, altrimenti le soluzioni saranno stocastiche a un certo punto).
In letteratura, questo è noto come Extratrees.
https://en.wikipedia.org/wiki/Random_forest#ExtraTrees
Re: Foresta di isolamento e alberi di isolamentoCiao @mia_stephens , qualche aggiornamento a riguardo? Grazie
Re: Foresta di isolamento e alberi di isolamentoCiao @FN , abbiamo svolto alcune ricerche sull'utilizzo dell'integrazione Python in JMP 18 con il pacchetto Python "isotree", utilizzando JSL per creare finestre di dialogo in JMP. Sembra promettente, ma non abbiamo nulla da condividere a questo punto. Sei curioso di dare un'occhiata a questo approccio?
Re: Foresta di isolamento e alberi di isolamentoGrazie, Mia.
Come condiviso nei miei commenti precedenti, questo approccio sarà molto utile in JMP poiché supera gli altri algoritmi di rilevamento delle anomalie con valori anomali globali.
Le distanze KNN (nel menu di analisi dei valori anomali di JMP) funzionano bene per i valori anomali locali.
Aggiungendo es. Isolation Forest sarà utile per identificare e rimuovere rapidamente tutti i tipi di valori anomali in enormi set di dati.
Algoritmi di rilevamento di anomalie non supervisionati su dati del mondo reale: quanti ne abbiamo bisogno?
L'albero delle partizioni può anche essere modificato per dividere i dati in modo casuale quando non viene fornito Y.
Oggetto: Foresta isolata e alberi isolatiRitorniamo a questa richiesta per vedere se ci sono aggiornamenti.
In questo documento vengono riepilogati i motivi per cui JMP dovrebbe implementare questa funzionalità.
"33 algoritmi di rilevamento delle anomalie non supervisionati su 52 set di dati tabulari multivariati del mondo reale, che eseguono il più grande confronto di algoritmi di rilevamento delle anomalie non supervisionati fino ad oggi. Su questa raccolta di set di dati, l'algoritmo EIF (Extended Isolation Forest) supera significativamente la maggior parte degli altri algoritmi."
Oggetto: Foresta isolata e alberi isolatiHo appena visto un webinar sull'integrazione JMP-Python di Ross M (che è stato fantastico) in cui evidenzia questo approccio in Python, ma sembra che potrebbe essere fatto in modo relativamente semplice in modo nativo in JMP. Sembra rappresentare un mix di tecniche che JMP già fa, come alberi di partizione e analisi di outlier multivariata.
Re: Foresta isolata e alberi isolati - Stato modificato in: Sì, rimanete sintonizzati!In fase di sviluppo come componente aggiuntivo Pythonic.
Oggetto: Foresta isolata e alberi isolatiOttima notizia! Grazie Mia:)
Oggetto: Foresta isolata e alberi isolatiIl componente aggiuntivo è ora disponibile sul marketplace! https://marketplace.jmp.com/appdetails/Isolation+Forest
Grazie @russ_wolfinger per avercelo fornito.
Oggetto: Foresta isolata e alberi isolatiSì, in effetti, il componente aggiuntivo è ora disponibile. Grazie @MathStatChem per averlo avviato!
Re: Foresta di isolamento e alberi di isolamento - Stato modificato in: ConsegnatoRe: Foresta isolata e alberi isolati@mia_stephens , grazie per l'impegno profuso nello sviluppo di questo componente aggiuntivo!
Detto questo, ho notato che la sua dipendenza dalle librerie Python rende piuttosto difficile il suo utilizzo, almeno sui computer Windows.
Se non ci sono piani per implementare questa funzionalità in modo nativo in JMP (il che sarebbe fantastico, secondo me:smiling_face_with_smiling_eyes: ), prenderesti in considerazione l'idea di rendere open source il componente aggiuntivo? In questo modo, la comunità potrebbe contribuire a mantenerlo e migliorarlo in futuro.
---
Ad esempio, non riesco a installare isotree:
Python Install Packages("isotree");
In JMP 18 ricevo questo errore:
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'
E in JMP 19 Pro ricevo un errore del compilatore.
//:*/
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: Foresta isolata e alberi isolatiErrore _socket: è necessario disinstallare la versione 18.0 e aggiornare a una versione 18.x più recente. E deve essere una disinstallazione, non una modifica/ripristino. La libreria condivisa socket non si trova nella posizione di installazione corretta.
Sia per la versione 18 che per la 19, isotree è uno dei pacchetti più difficili da gestire. Una soluzione alternativa che di solito funziona è quella di avere un'installazione standard di Python.org 3.11.x per JMP 18 o 3.13.x per JMP 19 ed eseguire una normale installazione pip nell'ambiente predefinito. Questa operazione di solito funziona correttamente. Quindi, eseguire l'installazione jpip dall'interno di JMP. JMP può quindi prelevare la build locale memorizzata nella cache e installarla nella directory privata site-packages di JMP.
Re: Foresta isolata e alberi isolatiGrazie per aver risposto @Paul_Nelson .
Re: Foresta isolata e alberi isolatierror: 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]
Quando Python deve compilare pacchetti basati su C/C++, è necessario avere installato un ambiente di sviluppo C/C++. Visual Studio Code dovrebbe essere sufficiente. Non è diverso da quanto accade se si ha Python installato e si tenta di installare isotree.