vc1492a/PyNomaly

Anomaly detection using LoOP: Local Outlier Probabilities, a local density based outlier detection method providing an outlier score in the range of [0,1].

何を解決するか

PyNomaly は、データセット内の外れ値を検出するための Local Outlier Probabilities (LoOP) の Python 実装です。従来の方法が生のスコアを提供するのに対し、LoOP は 0 から 1 の間の正規化されたスコアを提供し、特定のデータポイントが外れ値である確率として直接解釈できます。

動作方法

このライブラリは、以下の複数ステップのパイプラインを通じて外れ値確率を計算します:

  1. 最近傍距離: 各観測値について k 個の最近傍を特定します。
  2. 標準距離: これらの距離の平均を捉えるために、平方平均平方根を計算します。
  3. 確率的距離: 標準距離に「範囲」パラメータ(lambda)をスケーリングして感度を制御します。
  4. 確率的局所外れ因子 (PLOF): 観測値の確率的距離とその近隣の平均確率的距離の比を計算します。
  5. 正規化 PLOF (nPLOF): 異なるクラスタ間でスコアを比較可能にするために、正規化定数を適用します。
  6. 局所外れ確率 (LoOP): 最終的な比にガウス誤差関数を適用し、0 から 1 の間の確率を生成します。

対象ユーザー

密度ベースの異常検出ツールを必要とするデータサイエンティストや実務家向けに設計されており、任意のスコアではなく、解釈可能な確率的結果を提供します。

特徴

  • 解釈可能なスコア: 出力は正規化された確率 [0, 1] です。
  • クラスタ対応: オプションのクラスタラベルをサポートし、全体のデータセットではなく特定のグループに対する外れ値確率を計算できます。
  • パフォーマンス最適化: Numba を統合して JIT コンパイルとマルチコア並列処理を実現し、Scipy を使って距離計算を最適化しています。
  • 柔軟な距離メトリクス: ユーザーが独自の距離行列や近隣行列を提供でき、ユークリッド距離以外のメトリクスを使用可能です。
  • ストリーミング対応: 全データセットの再適合が高コストになるため、ストリーミングデータ用に修正されたアプローチを含んでいます。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト