はじめに
外れ値検知の代表的な手法であるkNN, LOF, OC-SVM, Isolation Forestについて、ベンチマークを測定するスクリプトを作成した。 各手法は外れ値検知ライブラリのPyODに実装されており、今回はOptunaによるハイパーパラメータ探索も入れている。
PyODのベンチマークについては公式にもドキュメントが用意されているので、一読を勧める。 pyod.readthedocs.io
準備
PyODはpipでインストール可能である。
pip install pyod
また、以下のgithubレポジトリからベンチマーク用のデータをダウンロードしておく。 github.com
なおベンチマーク用データ自体は以下のサイトから入手可能である。種類はたくさんあるが、今回はそこから16種類のデータセットを利用する。 odds.cs.stonybrook.edu
スクリプトたち
ベンチマークのスクリプトと同じ階層に dataディレクトリを作成しておき、ベンチマーク用データはdataディレクトリ以下にまとめて置いておくこと。
Isolation Forest benchmark_iforest.py · GitHub
各スクリプトはPyLint的に10.00(満点)になるように作ったが、可読性はいまいちかもしれない。
trial数やハイパーパラメータの探索範囲などはかなり適当に決めている。
おわりに
PyOD使おうぜ!(n回目)
Optunaもいいぞ!