( sinexton | 2022. 09. 29., cs – 08:41 )

Igazából annyira egyszerű a koncepció, ahogy leírtam. Az "isolation forest" algo sok nyelven elérhető, ha nem, akkor meg python-ból vagy másból meghívható.

Egyszerűen elkezded bedobálni egy globális változóba az objektumokat (lelapítva egyetlen tömbbé a tömbben) és futtatod közben. Ennyi az egész. Példa adat:

[[1, 1, 6],
 [0, 0, 1],
 [1, 1, 0],
 [0, 0, 3],
 [1, 0, 0],
 [0, 1, 0],
 [2, 0, 23],
 [3, 1, 0],
 [1, 13, 0],
 [3, 1, 1]]

AD eredménye:

[[6, 0.6240602610039736], [8, 0.6056862922420121]]

Vagyis a 6. és 8. sort gondolja anomáliának. Ha 0.7-es a limit, akkor még nem azok.

Persze itt látszik, hogy azokban van nagyobb érték és ez egyszerűnek tűnik. Nem lesz egyszerű azonban, amikor nagy a dimenzió mértéke és rengeteg adat van. Ott kapunk igazán okos döntést.

A fals pozitívok kérdése fontos, ehhez pár ötlet:

Egyrészt az isoforest visszatérési értéke egy 0..1 közötti pontszám, melynél a nagyobb pontszám erősebb anomáliát jelent. Az eredeti 2008-as paper szerint 0.6 felettiek tekintendők annak. Viszont ezt tudod kézzel finomhangolni.

Másrészt érdemes több objektumot elemezni, hogy a tömb dimenziója minél magasabb legyen. Úgy még okosabb szűrést kapunk.