Closes #114 (closed)
After doing some experiments on SOD, it turns out (as expected) that more than 95% of the extra time complexity is purely because of snn() function in SOD and more specifically the numpy function isin() used in snn().
However, this function cannot be used under numba since it is not supported yet.
I implemented a workaround to make it work under numba.
The results show noticeable improvement in time complexity and even faster than Fast ABOD algorithm.
Although SOD achieves a pretty good precision in high-dimensional spaces, nevertheless, please note that SOD is well-known to have relatively poor time complexity as many papers and blogs show (example).
Experiment Settings:
| #Samples | #Features | #Neighbors |
|---|---|---|
| 10K | 10 | 50 |
Results
| Model | Time(sec) |
|---|---|
| SOD (old) | 130 |
| SOD (new) | 58 |
| Fast ABOD | 87 |