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.