はじめに
異常検知(外れ値検知)のための便利なPythonパッケージとしてPyODが存在する。
クラシックな手法から比較的最先端の手法まで実装されており、インタフェースも使いやすいのでオススメできる。
2021年8月9日現在、PyODにカーネル密度推定(Kernel Density Estimation; KDE)ベースの異常検知が実装されていなかったので、それを実装したということである。
PyODのインストール
pipでインストール可能である。
pip3 install pyod
異常検知について
以下の記事を読むのが良いだろう。 qiita.com
カーネル密度推定について
ばんくし氏の記事が参考になるだろう。 vaaaaaanquish.hatenablog.com
作成したクラス:KDE
すでに実装済のPyODの各種アルゴリズムを参考に、KDEのクラスを作った。
KDEの実装そのものはscikit-learnのKernelDensityクラスによった。
PyODのBaseDetectorを継承している。
【コードを表示する】
gist.github.com
異常検知デモンストレーションその1
PyODから提供されている各種アルゴリズムのexample用スクリプトを参考に、簡単なデモンストレーションのnotebookを作成した。 今回作成したKDEクラスをkde.pyとして保存した場合のnotebookである。
異常検知デモンストレーションその2
引き続いて3つのガウス分布からランダムにデータをサンプリングし、異常値を混ぜて正しく検出できるかを試したnotebookである。
おわりに
みんなPyOD使おうぜ!