.. image:: https://raw.githubusercontent.com/yzhao062/pyod/master/brand/pyod-icon.svg :target: https://pyod.dev :alt: PyOD エコシステム :width: 84px
PyOD 3: スケールするエージェント型異常検知
|badge_website| |badge_pypi| |badge_anaconda| |badge_docs| |badge_stars| |badge_forks| |badge_downloads| |badge_testing| |badge_coverage| |badge_maintainability| |badge_license| |badge_benchmark|
.. |badge_website| image:: https://img.shields.io/badge/website-pyod.dev-990000 :target: https://pyod.dev :alt: ウェブサイト
.. |badge_pypi| image:: https://img.shields.io/pypi/v/pyod.svg?color=brightgreen :target: https://pypi.org/project/pyod/ :alt: PyPI バージョン
.. |badge_anaconda| image:: https://anaconda.org/conda-forge/pyod/badges/version.svg :target: https://anaconda.org/conda-forge/pyod :alt: Anaconda バージョン
.. |badge_docs| image:: https://readthedocs.org/projects/pyod/badge/?version=latest :target: https://pyod.readthedocs.io/en/latest/?badge=latest :alt: ドキュメントの状態
.. |badge_stars| image:: https://img.shields.io/github/stars/yzhao062/pyod.svg :target: https://github.com/yzhao062/pyod/stargazers :alt: GitHub スター
.. |badge_forks| image:: https://img.shields.io/github/forks/yzhao062/pyod.svg?color=blue :target: https://github.com/yzhao062/pyod/network :alt: GitHub フォーク
.. |badge_downloads| image:: https://pepy.tech/badge/pyod :target: https://pepy.tech/project/pyod :alt: ダウンロード
.. |badge_testing| image:: https://github.com/yzhao062/pyod/actions/workflows/testing.yml/badge.svg :target: https://github.com/yzhao062/pyod/actions/workflows/testing.yml :alt: テスト
.. |badge_coverage| image:: https://coveralls.io/repos/github/yzhao062/pyod/badge.svg :target: https://coveralls.io/github/yzhao062/pyod :alt: カバレッジ状況
.. |badge_maintainability| image:: https://api.codeclimate.com/v1/badges/bdc3d8d0454274c753c4/maintainability :target: https://codeclimate.com/github/yzhao062/Pyod/maintainability :alt: 保守性
.. |badge_license| image:: https://img.shields.io/github/license/yzhao062/pyod.svg :target: https://github.com/yzhao062/pyod/blob/master/LICENSE :alt: ライセンス
.. |badge_benchmark| image:: https://img.shields.io/badge/ADBench-benchmark_results-pink :target: https://github.com/Minqi824/ADBench :alt: ベンチマーク
**PyOD はエージェント対応です。** Claude Code と Codex は ``od-expert`` スキルを使用して ADEngine の調査を実行でき、MCP 互換エージェントは PyOD の検出器知識と計画ツールを照会できます。従来の ``fit``/``predict`` API は変更されていません。
PyOD 3 は、異常検知のための最も包括的な Python ライブラリです。4つの柱:
=========================== ========================================================================================
柱 内容
=========================== ========================================================================================
マルチモーダル 表、時系列、グラフ、テキスト、画像、音声 データに対応する61の検出器を、単一のAPIで提供
全ライフサイクル 生データから説明付きの異常と次のステップのガイダンスまでを単一の呼び出しで実現
エージェント型 od-expert は自然言語のリクエストを ADEngine ワークフローに変換します。MCP は他のエージェント向けに構造化ツールを公開します
最も利用されている 4,600万以上のダウンロード。ベンチマークに裏付けられたルーティング (ADBench, TSB-AD, BOND, NLP-ADBench)
=========================== ========================================================================================
インストール ^^^^^^^
コアライブラリ (すべてのアクティベーションパスに必要):
.. code-block:: bash
pip install pyod
次に、お使いのエージェントスタックに合ったアクティベーションパスを選択します:
.. code-block:: bash
# 1. Claude Code / Codex — enables the od-expert skill
pyod install skill # Claude Code: user-global (~/.claude/skills/)
pyod install skill --project # Codex: project-local (./skills/, Codex has no user-global dir)
# 2. Any MCP-compatible LLM — requires the optional mcp extra
pip install pyod[mcp]
pyod mcp serve # alias for `python -m pyod.mcp_server`
# 3. Pure Python — no extra step
# from pyod.utils.ad_engine import ADEngine
pyod info をいつでも実行すると、バージョン、検出器の数、各アクティベーションパスのインストール状態を確認できます。pyod info は、インストールされているエージェントスタック (Claude Code の場合は ~/.claude/、Codex の場合は ~/.codex/) も検出し、適切なインストールコマンドを推奨します。
conda、ソースからのインストール、依存関係の詳細、トラブルシューティングについては、完全な インストールガイド <https://pyod.readthedocs.io/en/latest/install.html>__ を参照してください。v3.0.0 の従来の pyod-install-skill コマンドは、pyod install skill のエイリアスとして引き続き機能します。
5行のコードで外れ値検出 (pip install pyod):
.. code-block:: python
from pyod.models.iforest import IForest
clf = IForest()
clf.fit(X_train)
y_train_scores = clf.decision_scores_ # training anomaly scores
y_test_scores = clf.decision_function(X_test) # test anomaly scores
PyOD の3つの使用方法:
========= ===================== ====================================================================== =======================================
層 名前 使用する場面 エントリポイント
========= ===================== ====================================================================== =======================================
1 クラシックAPI 使用したい検出器が明確にわかっている場合 レイヤー1の例 <https://pyod.readthedocs.io/en/latest/examples/tabular.html>__
2 ADEngine PyOD に検出器の選択・比較・評価を自動的に任せたい場合 レイヤー2のチュートリアル <https://pyod.readthedocs.io/en/latest/examples/adengine.html>__
3 エージェント型調査 AI エージェントに自然な対話で異常検出 (OD) を進めてもらいたい場合 レイヤー3のチュートリアル <https://pyod.readthedocs.io/en/latest/examples/agentic.html>__
========= ===================== ====================================================================== =======================================
レイヤー2と3は、PyOD のライフサイクルオーケストレーションの核である ADEngine によって支えられています。マルチターンのレイヤー3調査フロー全体は、Claude Code と Codex 向けの od-expert スキルで利用できます。MCP サーバー (python -m pyod.mcp_server) は、MCP 互換 LLM 向けに10個のステートレスツールを公開しており、知識クエリ (list_detectors, explain_detector, compare_detectors, get_benchmarks)、プランニング (profile_data, plan_detection, build_detector)、検出 (run_detection, analyze_results, explain_findings) を網羅します。ステートフルな investigate / MCP ツールは延期されます。
.. image:: https://raw.githubusercontent.com/yzhao062/pyod/development/docs/figs/agentic-demo.png :alt: PyOD 3 のエージェント型調査デモ(cardiotocography データセット) :align: center :width: 720
上の図は、UCI Cardiotocography データセットでの実際の5ターンのエージェント型対話を示しています。完全な ウォークスルー <https://pyod.readthedocs.io/en/latest/examples/agentic.html>、実行可能な エージェント型の例 <https://github.com/yzhao062/pyod/blob/development/examples/agentic_example.py>、またはインタラクティブな HTMLデモ <https://htmlpreview.github.io/?https://github.com/yzhao062/pyod/blob/development/examples/agentic_demo.html>__ を参照してください。
PyOD エコシステム & リソース:
NLP-ADBench <https://github.com/USC-FORTIS/NLP-ADBench>__ (NLP異常検知) | TODS <https://github.com/datamllab/tods>__ (時系列) | PyGOD <https://pygod.org/>__ (グラフ) | ADBench <https://github.com/Minqi824/ADBench>__ (ベンチマーク) | AD-LLM <https://arxiv.org/abs/2412.11142>__ (LLMベースの異常検知) [#Yang2024ad]_ | Resources <https://github.com/yzhao062/anomaly-detection-resources>__
About PyOD ^^^^^^^^^^
2017年に設立された PyOD は、異常検知のための最も長く使われ、最も広く利用されている Python ライブラリです。4,600万以上のダウンロード <https://pepy.tech/project/pyod>__ を誇り、学術研究(Analytics Vidhya <https://www.analyticsvidhya.com/blog/2019/02/outlier-detection-python-pyod/>、KDnuggets <https://www.kdnuggets.com/2019/02/outlier-detection-methods-cheat-sheet.html>、Towards Data Science <https://towardsdatascience.com/anomaly-detection-for-dummies-15f148e559c1>__ で紹介)と商用製品の両方に利用されています。
V3 は、従来の fit/predict API の完全な後方互換性を維持しながら、ADEngine (ライフサイクルオーケストレーション) と od-expert スキル (エージェント型ワークフロー) を追加してライブラリを拡張します。V3 は、高速な並列トレーニングのための SUOD [#Zhao2021SUOD]_ と、モデルごとの高速化のための numba JIT 上に構築されています。
インパクトと認知:
=================================== ===========================================================================
分野 例
=================================== ===========================================================================
宇宙 & 科学 欧州宇宙機関の OPS-SAT 宇宙機テレメトリベンチマーク <https://www.nature.com/articles/s41597-025-05035-3>__ (Nature Scientific Data, 2025) は、全30アルゴリズムに PyOD を使用しています。
エンタープライズ導入 Walmart (毎日100万以上の価格更新, KDD 2019)、Databricks (PyOD を MLflow/Hyperopt と統合する Kakapo フレームワーク、内部関係者脅威検出ソリューション)、IQVIA (123,000件以上の薬局請求)、Altair AI Studio、Ericsson (特許 WO2023166515A1 <https://patents.google.com/patent/WO2023166515A1>)。
書籍 Outlier Detection in Python <https://www.manning.com/books/outlier-detection-in-python> (Brett Kennedy, Manning); Handbook of Anomaly Detection with Python (Chris Kuo, Columbia); Finding Ghosts in Your Data <https://link.springer.com/book/10.1007/978-1-4842-8870-2>__ (Kevin Feasel, Apress)。
コース DataCamp の Anomaly Detection in Python <https://www.datacamp.com/courses/anomaly-detection-in-python>__ (プラットフォームの学習者数1,900万人以上)、Manning の liveProject <https://www.manning.com/liveproject/using-pyod-and-ensembles-methods>、O'Reilly ビデオ版、複数の Udemy コース。
ポッドキャスト Talk Python To Me #497 <https://talkpython.fm/episodes/show/497/outlier-detection-with-python>、 の完全ドキュメント翻訳)、日本語、韓国語、ドイツ語、スペイン語。
=================================== ===========================================================================
引用、エンタープライズ導入、特許、メディアでの取り上げの完全なリストについては、Read the Docs の インパクトページ <https://pyod.readthedocs.io/en/latest/impact.html>__ を参照してください。
PyOD の引用:
学術出版物で PyOD を使用する場合は、以下の論文を引用していただけると幸いです:
PyOD 2: A Python Library for Outlier Detection with LLM-powered Model Selection <https://arxiv.org/abs/2412.12154>__ はプレプリントとして公開されています。学術出版物で PyOD を使用する場合は、以下の論文を引用していただけると幸いです::
@inproceedings{chen2025pyod,
title={Pyod 2: A python library for outlier detection with llm-powered model selection},
author={Chen, Sihan and Qian, Zhuangzhuang and Siu, Wingchun and Hu, Xingcan and Li, Jiaqi and Li, Shawn and Qin, Yuehan and Yang, Tiankai and Xiao, Zhuo and Ye, Wanghao and others},
booktitle={Companion Proceedings of the ACM on Web Conference 2025},
pages={2807--2810},
year={2025}
}
PyOD paper <http://www.jmlr.org/papers/volume20/19-011/19-011.pdf>__ は Journal of Machine Learning Research (JMLR) <http://www.jmlr.org/>__ (MLOSS トラック) に掲載されています。::
@article{zhao2019pyod,
author = {Zhao, Yue and Nasrullah, Zain and Li, Zheng},
title = {PyOD: A Python Toolbox for Scalable Outlier Detection},
journal = {Journal of Machine Learning Research},
year = {2019},
volume = {20},
number = {96},
pages = {1-7},
url = {http://jmlr.org/papers/v20/19-011.html}
}
または::
Zhao, Y., Nasrullah, Z. and Li, Z., 2019. PyOD: A Python Toolbox for Scalable Outlier Detection. Journal of machine learning research (JMLR), 20(96), pp.1-7.
異常検知に関するより広い視点については、ADBench <https://arxiv.org/abs/2206.09426>__ [#Han2022ADBench]_ と ADGym <https://arxiv.org/abs/2309.15376>__ に関する NeurIPS 論文を参照してください。
目次:
API チートシート & リファレンス <#api-cheatsheet--reference>__ベンチマーク <#benchmarks>__実装済みアルゴリズム <#implemented-algorithms>__ (表, 時系列, グラフ, 埋め込み)追加トピック <#additional-topics>__ (モデルの保存/読み込み, SUOD, 閾値設定)外れ値検出のクイックスタート <#quick-start-for-outlier-detection>__貢献方法 <#how-to-contribute>__採用基準 <#inclusion-criteria>__API チートシート & リファレンス ^^^^^^^^^^^^^^^^^^^^^^^^^^
完全な API リファレンスは、PyOD ドキュメント <https://pyod.readthedocs.io/en/latest/>__ でモダリティごとに分かれています: 表 <https://pyod.readthedocs.io/en/latest/pyod.models.tabular.html>、時系列 <https://pyod.readthedocs.io/en/latest/pyod.models.timeseries.html>、グラフ <https://pyod.readthedocs.io/en/latest/pyod.models.graph.html>、埋め込み <https://pyod.readthedocs.io/en/latest/pyod.models.embedding.html>、ADEngine <https://pyod.readthedocs.io/en/latest/pyod.ad_engine.html>、ユーティリティ <https://pyod.readthedocs.io/en/latest/pyod.utils.html>。以下は全検出器向けのクイックチートシートです:
適合済みモデルの主要属性:
ベンチマーク ^^^^^^^^^^
ADBench <https://github.com/Minqi824/ADBench>__ [#Han2022ADBench]_: 57個の表データセットに対する30アルゴリズム。比較 <https://github.com/yzhao062/pyod/blob/master/examples/compare_all_models.py>__ を参照。NLP-ADBench <https://github.com/USC-FORTIS/NLP-ADBench>__: 8個のテキストデータセットに対する19手法。2段階 (埋め込み + 検出器) がエンドツーエンドより優れています。TSB-AD <https://github.com/TheDatumOrg/TSB-AD>__ [#Liu2024TSB]_: 1070個の時系列データセットに対する40アルゴリズム (NeurIPS 2024)。BOND <https://arxiv.org/abs/2206.10071>__ [#Liu2022BOND]_: 14個のデータセットに対する14のグラフ異常検知アルゴリズム (NeurIPS 2022)。追加トピック ^^^^^^^^^^^^^^^^^
モデルの保存と読み込み <https://pyod.readthedocs.io/en/latest/model_persistence.html>: PyOD モデルの保存と読み込みには joblib または pickle を使用します。例 <https://github.com/yzhao062/pyod/blob/master/examples/save_load_model_example.py> を参照。SUOD による高速トレーニング <https://pyod.readthedocs.io/en/latest/fast_train.html>: SUOD フレームワーク [#Zhao2021SUOD]_ でトレーニングと予測を高速化します。例 <https://github.com/yzhao062/pyod/blob/master/examples/suod_example.py> を参照。外れ値スコアの閾値設定 <https://pyod.readthedocs.io/en/latest/thresholding.html>: PyThresh <https://github.com/KulikDM/pythresh> による汚染レベルの設定に対するデータ駆動型アプローチ。実装済みアルゴリズム ^^^^^^^^^^^^^^^^^^^^^^
PyOD は2つの機能グループに分類されます: (i) 検出アルゴリズム。表、時系列、グラフ、音声データに特化したサブセクションがあり (表の表内の EmbeddingOD は、ファウンデーションモデルエンコーダーを介してテキストと画像のサポートを追加します)、(ii) データ生成、評価、ライフサイクルオーケストレーションのためのユーティリティ関数。
(i-a) 表 & マルチモーダル検出アルゴリズム :
.. list-table:: :widths: 15 14 58 5 8 :header-rows: 1* - タイプ - 略称 - アルゴリズム - 年 - 参照
例 <https://github.com/yzhao062/pyod/blob/development/examples/ecod_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/abod_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/abod_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/copod_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/mad_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/sos_example.py>__)アンサンブル手法(IForest、INNE、DIF、FB、LSCP、LODA、SUOD、XGBOD)は上記の表に含まれています。スコア結合関数(平均、最大化、AOM、MOA、中央値、多数決)は pyod.models.combination にあります。詳細は APIドキュメント <https://pyod.readthedocs.io/en/latest/pyod.models.tabular.html>__ をご覧ください。
(i-b) 時系列異常検知 :
すべての時系列検知器は、表形式検知器と同じ fit/predict/decision_function API を使用します。ただし、1つ例外があります: MatrixProfile はトランスダクティブ(学習のみ。fit() の後に decision_scores_ と labels_ を使用し、オブサンプル外の predict はありません)です。
入力形式: 単変量の場合は形状 (n_timestamps,) のnumpy配列、多変量の場合は (n_timestamps, n_channels)。各行は1タイムステップで、列はチャンネル/特徴量です。Pandas DataFrameとリストは自動変換されます。出力: decision_scores_ は形状 (n_timestamps,) で、タイムステップごとに1つの異常スコアを持ちます。
3行で実現する時系列検知:
.. code-block:: python
from pyod.models.ts_kshape import KShape # or any TS detector
clf = KShape(window_size=20)
clf.fit(X_train) # shape (n_timestamps,) or (n_timestamps, n_channels)
scores = clf.decision_scores_ # per-timestamp anomaly scores
TSB-ADベンチマーク <https://github.com/TheDatumOrg/TSB-AD>__ [#Liu2024TSB]_ (NeurIPS 2024、1070データセット)によるアルゴリズムランキング:
.. list-table:: :widths: 15 18 50 5 12 :header-rows: 1
例 <https://github.com/yzhao062/pyod/blob/development/examples/ts_od_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/ts_matrix_profile_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/ts_spectral_residual_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/ts_kshape_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/ts_sand_example.py>__)(i-c) グラフ異常検知 (pip install pyod[graph]):
すべてのグラフ検知器はv1ではトランスダクティブです: fit() の後に decision_scores_ と labels_ を使用します。オブサンプル外の predict はありません。入力: x(ノード特徴量)と edge_index(COOエッジ)を持つPyG Data オブジェクト。SCANは特徴量なしで動作します。
3行で実現するグラフ検知 (pip install pyod[graph]):
.. code-block:: python
from pyod.models.pyg_dominant import DOMINANT
clf = DOMINANT(hidden_dim=64, epochs=100)
clf.fit(data) # PyG Data object
scores = clf.decision_scores_ # per-node anomaly scores
BONDベンチマーク <https://arxiv.org/abs/2206.10071>__ [#Liu2022BOND]_ (NeurIPS 2022、14データセット)によるアルゴリズムランキング:
.. list-table:: :widths: 18 18 45 5 14 :header-rows: 1
dominantの例 <https://github.com/yzhao062/pyod/blob/development/examples/pyg_dominant_example.py>__)colaの例 <https://github.com/yzhao062/pyod/blob/development/examples/pyg_cola_example.py>__)conadの例 <https://github.com/yzhao062/pyod/blob/development/examples/pyg_conad_example.py>__)anomalydaeの例 <https://github.com/yzhao062/pyod/blob/development/examples/pyg_anomalydae_example.py>__)guideの例 <https://github.com/yzhao062/pyod/blob/development/examples/pyg_guide_example.py>__)(i-d) 音声異常検知 (pip install pyod[audio]):
音声クリップは同じ fit/decision_function APIを使用します。2つの経路が利用可能です: 軽量な「埋め込み後に検知」経路(EmbeddingOD.for_audio() が各クリップを74次元の手設計音響ベクトルに変換し、任意の古典的検知器を実行します)と、専用の深層検知器(AudioAE、ログメル再構成オートエンコーダ)です。入力はファイルパス、波形配列、または (waveform, sample_rate) タプルです。出力: クリップごとに1つの異常スコア。
3行で実現する音声検知 (pip install pyod[audio]):
.. code-block:: python
from pyod.models.embedding import EmbeddingOD
clf = EmbeddingOD.for_audio('balanced') # 74-dim handcrafted features + KNN
clf.fit(train_clips) # list of file paths or waveform arrays
scores = clf.decision_scores_ # per-clip anomaly scores
.. list-table:: :widths: 18 18 45 5 14 :header-rows: 1
for_audio(): 任意の検知器と組み合わせる74次元のMFCC、クロマ、スペクトル特徴量(ii) ユーティリティ関数:=================== ============================ ===================================================================================================================================================== 種別 名前 機能 =================== ============================ ===================================================================================================================================================== データ generate_data 合成データの生成。通常データは多変量ガウス分布、外れ値は一様分布から生成 データ generate_data_clusters より複雑なパターンのためのクラスターによる合成データ生成 評価 evaluate_print 検出器のROC-AUCとPrecision @ Rank nを出力 評価 precision_n_scores Precision @ Rank nを計算 ユーティリティ get_label_n 生の外れ値スコアを、上位n件に1を割り当ててバイナリラベルに変換 統計 wpearsonr 2つのサンプルの重み付きPearson相関を計算 エンコーディング resolve_encoder 文字列名、BaseEncoderインスタンス、またはcallableからエンコーダを解決 エンコーディング SentenceTransformerEncoder sentence-transformersモデル(例: MiniLM、mpnet)でテキストをエンコード エンコーディング OpenAIEncoder OpenAI Embeddings API(text-embedding-3-small/large)でテキストをエンコード エンコーディング HuggingFaceEncoder HuggingFace transformers(BERT、DINOv2、CLIP)でテキストまたは画像をエンコード =================== ============================ =====================================================================================================================================================
外れ値検出のクイックスタート ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PyODは、いくつかの特集記事やチュートリアルを通じて、機械学習コミュニティで広く認知されています。
Analytics Vidhya: PyODライブラリを使用してPythonで外れ値検出を学ぶための素晴らしいチュートリアル <https://www.analyticsvidhya.com/blog/2019/02/outlier-detection-python-pyod/>__
KDnuggets: 外れ値検出手法の直感的な可視化 <https://www.kdnuggets.com/2019/02/outlier-detection-methods-cheat-sheet.html>、PyODによる外れ値検出手法の概要 <https://www.kdnuggets.com/2019/06/overview-outlier-detection-methods-pyod.html>
Towards Data Science: 初心者のための異常検知 <https://towardsdatascience.com/anomaly-detection-for-dummies-15f148e559c1>__
"examples/knn_example.py" <https://github.com/yzhao062/pyod/blob/master/examples/knn_example.py>__
はkNN検出器の基本APIを示しています。他のすべてのアルゴリズムでもAPIは一貫している(類似している)ことに注意してください。
サンプル実行のより詳細な手順は、examplesディレクトリ <https://github.com/yzhao062/pyod/blob/master/examples>__ にあります。
#. kNN検出器を初期化し、モデルを適合させ、予測を行います。
.. code-block:: python
from pyod.models.knn import KNN # kNN detector
from pyod.utils.data import generate_data
contamination = 0.1 # percentage of outliers
n_train = 200 # number of training points
n_test = 100 # number of testing points
# generate sample data
X_train, X_test, y_train, y_test = generate_data(
n_train=n_train, n_test=n_test, n_features=2,
contamination=contamination, random_state=42)
# train kNN detector
clf_name = 'KNN'
clf = KNN()
clf.fit(X_train)
# get the prediction label and outlier scores of the training data
y_train_pred = clf.labels_ # binary labels (0: inliers, 1: outliers)
y_train_scores = clf.decision_scores_ # raw outlier scores
# get the prediction on the test data
y_test_pred = clf.predict(X_test) # outlier labels (0 or 1)
y_test_scores = clf.decision_function(X_test) # outlier scores
# it is possible to get the prediction confidence as well
y_test_pred, y_test_pred_confidence = clf.predict(X_test, return_confidence=True) # outlier labels (0 or 1) and confidence in the range of [0,1]
#. ROCとPrecision @ Rank n(p@n)で予測を評価します。
.. code-block:: python
from pyod.utils.data import evaluate_print
# evaluate and print the results
print("\nOn Training Data:")
evaluate_print(clf_name, y_train, y_train_scores)
print("\nOn Test Data:")
evaluate_print(clf_name, y_test, y_test_scores)
#. サンプル出力と可視化を確認します。
.. code-block:: python
On Training Data:
KNN ROC:0.9992, precision @ rank n:0.95
On Test Data:
KNN ROC:1.0, precision @ rank n:1.0
.. code-block:: python
from pyod.utils.example import visualize
visualize(clf_name, X_train, y_train, X_test, y_test, y_train_pred,
y_test_pred, show_figure=True, save_figure=False)
謝辞 ^^^^^^^^^^^^^^^
この資料は、米国国立科学財団(National Science Foundation)の支援を
受けた研究に基づいています。賞番号 2346158 <https://www.nsf.gov/awardsearch/showAward?AWD_ID=2346158>_
は「NSF POSE: Phase II: OpenAD: An Integrated Open-Source Ecosystem for
Anomaly Detection」のための賞です。この賞では、イリノイ大学シカゴ校が
主導機関として、イリノイ工科大学、リーハイ大学、そして
南カリフォルニア大学が副受賞機関として記載されています。
この資料に記載された意見、調査結果、結論または推奨事項はすべて著者の見解であり、 必ずしも米国国立科学財団の見解を反映するものではありません。
参考文献 ^^^^^^^^^
.. [#Aggarwal2015Outlier] Aggarwal, C.C., 2015. Outlier analysis. In Data mining (pp. 237-263). Springer, Cham.
.. [#Aggarwal2015Theoretical] Aggarwal, C.C. and Sathe, S., 2015. Theoretical foundations and algorithms for outlier ensembles.\ ACM SIGKDD Explorations Newsletter\ , 17(1), pp.24-47.
.. [#Aggarwal2017Outlier] Aggarwal, C.C. and Sathe, S., 2017. Outlier ensembles: An introduction. Springer.
.. [#Almardeny2020A] Almardeny, Y., Boujnah, N. and Cleary, F., 2020. A Novel Outlier Detection Method for Multivariate Data. IEEE Transactions on Knowledge and Data Engineering.
.. [#Angiulli2002Fast] Angiulli, F. and Pizzuti, C., 2002, August. Fast outlier detection in high dimensional spaces. In European Conference on Principles of Data Mining and Knowledge Discovery pp. 15-27.
.. [#Arning1996A] Arning, A., Agrawal, R. and Raghavan, P., 1996, August. A Linear Method for Deviation Detection in Large Databases. In KDD (Vol. 1141, No. 50, pp. 972-981).
.. [#Bandaragoda2018Isolation] Bandaragoda, T. R., Ting, K. M., Albrecht, D., Liu, F. T., Zhu, Y., and Wells, J. R., 2018, Isolation-based anomaly detection using nearest-neighbor ensembles. Computational Intelligence\ , 34(4), pp. 968-998.
.. [#Breunig2000LOF] Breunig, M.M., Kriegel, H.P., Ng, R.T. and Sander, J., 2000, May. LOF: identifying density-based local outliers. ACM Sigmod Record\ , 29(2), pp. 93-104.
.. [#Burgess2018Understanding] Burgess, Christopher P., et al. "Understanding disentangling in beta-VAE." arXiv preprint arXiv:1804.03599 (2018).
.. [#Campello2013Density] Campello, R.J.G.B., Moulavi, D. and Sander, J., 2013, April. Density-based clustering based on hierarchical density estimates. In Pacific-Asia Conference on Knowledge Discovery and Data Mining (pp. 160-172). Springer.
.. [#Cook1977Detection] Cook, R.D., 1977. Detection of influential observation in linear regression. Technometrics, 19(1), pp.15-18.
.. [#Chen2024PyOD] Chen, S., Qian, Z., Siu, W., Hu, X., Li, J., Li, S., Qin, Y., Yang, T., Xiao, Z., Ye, W. and Zhang, Y., 2024. PyOD 2: A Python Library for Outlier Detection with LLM-powered Model Selection. arXiv preprint arXiv:2412.12154.
.. [#Fang2001Wrap] Fang, K.T. and Ma, C.X., 2001. Wrap-around L2-discrepancy of random sampling, Latin hypercube and uniform designs. Journal of complexity, 17(4), pp.608-624.
.. [#Goldstein2012Histogram] Goldstein, M. and Dengel, A., 2012. Histogram-based outlier score (hbos): A fast unsupervised anomaly detection algorithm. In KI-2012: Poster and Demo Track\ , pp.59-63.
.. [#Goodge2022Lunar] Goodge, A., Hooi, B., Ng, S.K. and Ng, W.S., 2022, June. Lunar: Unifying local outlier detection methods via graph neural networks. In Proceedings of the AAAI Conference on Artificial Intelligence.
.. [#Gopalan2019PIDForest] Gopalan, P., Sharan, V. and Wieder, U., 2019. PIDForest: Anomaly Detection via Partial Identification. In Advances in Neural Information Processing Systems, pp. 15783-15793.
.. [#Han2022ADBench] Han, S., Hu, X., Huang, H., Jiang, M. and Zhao, Y., 2022. ADBench: Anomaly Detection Benchmark. arXiv preprint arXiv:2206.09426.
.. [#Hardin2004Outlier] Hardin, J. and Rocke, D.M., 2004. Outlier detection in the multiple cluster setting using the minimum covariance determinant estimator. Computational Statistics & Data Analysis\ , 44(4), pp.625-638.
.. [#He2003Discovering] He, Z., Xu, X. and Deng, S., 2003. Discovering cluster-based local outliers. Pattern Recognition Letters\ , 24(9-10), pp.1641-1650.
.. [#Hoffmann2007Kernel] Hoffmann, H., 2007. Kernel PCA for novelty detection. Pattern recognition, 40(3), pp.863-874.
.. [#Iglewicz1993How] Iglewicz, B. and Hoaglin, D.C., 1993. How to detect and handle outliers (Vol. 16). Asq Press.
.. [#Janssens2012Stochastic] Janssens, J.H.M., Huszár, F., Postma, E.O. and van den Herik, H.J., 2012. Stochastic outlier selection. Technical report TiCC TR 2012-001, Tilburg University, Tilburg Center for Cognition and Communication, Tilburg, The Netherlands.
.. [#Kingma2013Auto] Kingma, D.P. and Welling, M., 2013. Auto-encoding variational bayes. arXiv preprint arXiv:1312.6114.
.. [#Kriegel2008Angle] Kriegel, H.P. and Zimek, A., 2008, August. Angle-based outlier detection in high-dimensional data. In KDD '08\ , pp. 444-452. ACM.
.. [#Kriegel2009Outlier] Kriegel, H.P., Kröger, P., Schubert, E. and Zimek, A., 2009, April. Outlier detection in axis-parallel subspaces of high dimensional data. In Pacific-Asia Conference on Knowledge Discovery and Data Mining\ , pp. 831-838. Springer, Berlin, Heidelberg.
.. [#Latecki2007Outlier] Latecki, L.J., Lazarevic, A. and Pokrajac, D., 2007, July. Outlier detection with kernel density functions. In International Workshop on Machine Learning and Data Mining in Pattern Recognition (pp. 61-75). Springer, Berlin, Heidelberg.
.. [#Lazarevic2005Feature] Lazarevic, A. and Kumar, V., 2005, August. Feature bagging for outlier detection. In KDD '05. 2005.
.. [#Li2024NLPADBench] Li, Y., Li, J., Xiao, Z., Yang, T., Nian, Y., Hu, X. and Zhao, Y., 2025. NLP-ADBench: NLP Anomaly Detection Benchmark. In Findings of the Association for Computational Linguistics: EMNLP 2025.
.. [#Li2019MADGAN] Li, D., Chen, D., Jin, B., Shi, L., Goh, J. and Ng, S.K., 2019, September. MAD-GAN: Multivariate anomaly detection for time series data with generative adversarial networks. In International Conference on Artificial Neural Networks (pp. 703-716). Springer, Cham.
.. [#Li2020COPOD] Li, Z., Zhao, Y., Botta, N., Ionescu, C. and Hu, X. COPOD: Copula-Based Outlier Detection. IEEE International Conference on Data Mining (ICDM), 2020.
.. [#Li2021ECOD] Li, Z., Zhao, Y., Hu, X., Botta, N., Ionescu, C. and Chen, H. G. ECOD: Unsupervised Outlier Detection Using Empirical Cumulative Distribution Functions. IEEE Transactions on Knowledge and Data Engineering (TKDE), 2022.
.. [#Liu2008Isolation] Liu, F.T., Ting, K.M. and Zhou, Z.H., 2008, December. Isolation forest. In International Conference on Data Mining\ , pp. 413-422. IEEE.
.. [#Liu2019Generative] Liu, Y., Li, Z., Zhou, C., Jiang, Y., Sun, J., Wang, M. and He, X., 2019. Generative adversarial active learning for unsupervised outlier detection. IEEE Transactions on Knowledge and Data Engineering.
.. [#Nguyen2019scalable] Nguyen, M.N. and Vien, N.A., 2019. Scalable and interpretable one-class svms with deep learning and random fourier features. In Machine Learning and Knowledge Discovery in Databases: European Conference, ECML PKDD, 2018.
.. [#Pang2019Deep] Pang, Guansong, Chunhua Shen, and Anton Van Den Hengel. "Deep anomaly detection with deviation networks." In KDD, pp. 353-362. 2019.
.. [#Papadimitriou2003LOCI] Papadimitriou, S., Kitagawa, H., Gibbons, P.B. and Faloutsos, C., 2003, March. LOCI: Fast outlier detection using the local correlation integral. In ICDE '03, pp. 315-326. IEEE.
.. [#Pevny2016Loda] Pevný, T., 2016. Loda: Lightweight on-line detector of anomalies. Machine Learning, 102(2), pp.275-304.
.. [#Perini2020Quantifying] Perini, L., Vercruyssen, V., Davis, J. Quantifying the confidence of anomaly detectors in their example-wise predictions. In Joint European Conference on Machine Learning and Knowledge Discovery in Databases (ECML-PKDD), 2020.
.. [#Perini2023Rejection] Perini, L., Davis, J. Unsupervised anomaly detection with rejection. In Proceedings of the Thirty-Seven Conference on Neural Information Processing Systems (NeurIPS), 2023.
.. [#Ramaswamy2000Efficient] Ramaswamy, S., Rastogi, R. and Shim, K., 2000, May. Efficient algorithms for mining outliers from large data sets. ACM Sigmod Record\ , 29(2), pp. 427-438.
.. [#Rousseeuw1999A] Rousseeuw, P.J. and Driessen, K.V., 1999. A fast algorithm for the minimum covariance determinant estimator. Technometrics\ , 41(3), pp.212-223.
.. [#Ruff2018Deep] Ruff, L., Vandermeulen, R., Goernitz, N., Deecke, L., Siddiqui, S.A., Binder, A., Müller, E. and Kloft, M., 2018, July. Deep one-class classification. In International conference on machine learning (pp. 4393-4402). PMLR.
.. [#Schlegl2017Unsupervised] Schlegl, T., Seeböck, P., Waldstein, S.M., Schmidt-Erfurth, U. and Langs, G., 2017, June. Unsupervised anomaly detection with generative adversarial networks to guide marker discovery. In International conference on information processing in medical imaging (pp. 146-157). Springer, Cham.
.. [#Scholkopf2001Estimating] Scholkopf, B., Platt, J.C., Shawe-Taylor, J., Smola, A.J. and Williamson, R.C., 2001. Estimating the support of a high-dimensional distribution. Neural Computation, 13(7), pp.1443-1471.
.. [#Shyu2003A] Shyu, M.L., Chen, S.C., Sarinnapakorn, K. and Chang, L., 2003. A novel anomaly detection scheme based on principal component classifier. MIAMI UNIV CORAL GABLES FL DEPT OF ELECTRICAL AND COMPUTER ENGINEERING.
.. [#Sugiyama2013Rapid] Sugiyama, M. and Borgwardt, K., 2013. Rapid distance-based outlier detection via sampling. Advances in neural information processing systems, 26.
.. [#Tang2002Enhancing] Tang, J., Chen, Z., Fu, A.W.C. and Cheung, D.W., 2002, May. Enhancing effectiveness of outlier detections for low density patterns. In Pacific-Asia Conference on Knowledge Discovery and Data Mining, pp. 535-548. Springer, Berlin, Heidelberg.
.. [#Wang2020adVAE] Wang, X., Du, Y., Lin, S., Cui, P., Shen, Y. and Yang, Y., 2019. adVAE: A self-adversarial variational autoencoder with Gaussian anomaly prior knowledge for anomaly detection. Knowledge-Based Systems.
.. [#Xu2023Deep] Xu, H., Pang, G., Wang, Y., Wang, Y., 2023. Deep isolation forest for anomaly detection. IEEE Transactions on Knowledge and Data Engineering.
.. [#Yang2024ad] Yang, T., Nian, Y., Li, S., Xu, R., Li, Y., Li, J., Xiao, Z., Hu, X., Rossi, R., Ding, K. and Hu, X., 2024. AD-LLM: Benchmarking Large Language Models for Anomaly Detection. arXiv preprint arXiv:2412.11142.
.. [#You2017Provable] You, C., Robinson, D.P. and Vidal, R., 2017. Provable self-representation based outlier detection in a union of subspaces. In Proceedings of the IEEE conference on computer vision and pattern recognition.
.. [#Zenati2018Adversarially] Zenati, H., Romain, M., Foo, C.S., Lecouat, B. and Chandrasekhar, V., 2018, November. Adversarially learned anomaly detection. In 2018 IEEE International conference on data mining (ICDM) (pp. 727-736). IEEE.
.. [#Zhao2018XGBOD] Zhao, Y. and Hryniewicki, M.K. XGBOD: Improving Supervised Outlier Detection with Unsupervised Representation Learning. IEEE International Joint Conference on Neural Networks\ , 2018.
.. [#Zhao2019LSCP] Zhao, Y., Nasrullah, Z., Hryniewicki, M.K. and Li, Z., 2019, May. LSCP: Locally selective combination in parallel outlier ensembles. In Proceedings of the 2019 SIAM International Conference on Data Mining (SDM), pp. 585-593. Society for Industrial and Applied Mathematics.
.. [#Zhao2021SUOD] Zhao, Y., Hu, X., Cheng, C., Wang, C., Wan, C., Wang, W., Yang, J., Bai, H., Li, Z., Xiao, C., Wang, Y., Qiao, Z., Sun, J. and Akoglu, L. (2021). SUOD: Accelerating Large-scale Unsupervised Heterogeneous Outlier Detection. Conference on Machine Learning and Systems (MLSys).
.. [#Boniol2021SAND] Boniol, P., Paparrizos, J., Palpanas, T. and Franklin, M.J., 2021. SAND: Streaming Subsequence Anomaly Detection. Proceedings of the VLDB Endowment, 14(10), pp.1717-1729.
.. [#Malhotra2015Long] Malhotra, P., Vig, L., Shroff, G. and Agarwal, P., 2015. Long Short Term Memory Networks for Anomaly Detection in Time Series. In European Symposium on Artificial Neural Networks (ESANN).
.. [#Paparrizos2015KShape] Paparrizos, J. and Gravano, L., 2015. k-Shape: Efficient and Accurate Clustering of Time Series. In Proceedings of the 2015 ACM SIGMOD International Conference on Management of Data, pp.1855-1870.
.. [#Ren2019Time] Ren, H., Xu, B., Wang, Y., Yi, C., Huang, C., Kou, X., Xing, T., Yang, M., Tong, J. and Zhang, Q., 2019. Time-Series Anomaly Detection Service at Microsoft. In Proceedings of the 25th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining, pp.3009-3017.
.. [#Xu2022Anomaly] Xu, J., Wu, H., Wang, J. and Long, M., 2022. Anomaly Transformer: Time Series Anomaly Detection with Association Discrepancy. In International Conference on Learning Representations (ICLR).
.. [#Yeh2016Matrix] Yeh, C.C.M., Zhu, Y., Ulanova, L., Begum, N., Ding, Y., Dau, H.A., Silva, D.F., Mueen, A. and Keogh, E., 2016. Matrix Profile I: All Pairs Similarity Joins for Time Series Subsequences. In 2016 IEEE 16th International Conference on Data Mining (ICDM), pp.1317-1322.
.. [#Ding2019DOMINANT] Ding, K., Li, J., Bhanushali, R. and Liu, H., 2019. Deep Anomaly Detection on Attributed Networks. In Proceedings of the 2019 SIAM International Conference on Data Mining, pp.594-602. SIAM.
.. [#Liu2022CoLA] Liu, Y., Li, Z., Pan, S., Gool, T., Xiang, T. and Gong, B., 2022. Anomaly Detection on Attributed Networks via Contrastive Self-Supervised Learning. In Proceedings of the ACM Web Conference 2022, pp.2137-2147.
.. [#Xu2022CONAD] Xu, Z., Huang, X., Zhao, Y., Dong, Y. and Li, J., 2022. Contrastive Attributed Network Anomaly Detection with Data Augmentation. In Pacific-Asia Conference on Knowledge Discovery and Data Mining, pp.444-457. Springer.
.. [#Fan2020AnomalyDAE] Fan, H., Zhang, F. and Li, Z., 2020. AnomalyDAE: Dual Autoencoder for Anomaly Detection on Attributed Networks. In Proceedings of the 29th ACM International Conference on Information and Knowledge Management, pp.747-756.
.. [#Yuan2021GUIDE] Yuan, X., Zhou, N., Yu, S., Huang, H., Chen, Z. and Xia, F., 2021. Higher-Order Structure Based Anomaly Detection on Attributed Networks. In 2021 IEEE International Conference on Big Data, pp.2691-2700. IEEE... [#Li2017Radar] Li, J., Dani, H., Hu, X. and Liu, H., 2017. Radar: Residual Analysis for Anomaly Detection in Attributed Networks. In Proceedings of the Twenty-Sixth International Joint Conference on Artificial Intelligence, pp.2152-2158.
.. [#Peng2018ANOMALOUS] Peng, Z., Luo, M., Li, J., Liu, H. and Zheng, Q., 2018. ANOMALOUS: A Joint Modeling Approach for Anomaly Detection on Attributed Networks. In Proceedings of the Twenty-Seventh International Joint Conference on Artificial Intelligence, pp.3529-3535.
.. [#Xu2007SCAN] Xu, X., Yuruk, N., Feng, Z. and Schweiger, T.A.J., 2007. SCAN: A Structural Clustering Algorithm for Networks. In Proceedings of the 13th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, pp.824-833.
.. [#Liu2024TSB] Liu, Q., Boniol, P., Palpanas, T. and Paparrizos, J., 2024. TSB-AD: Towards A Reliable Time-Series Anomaly Detection Benchmark. In Advances in Neural Information Processing Systems (NeurIPS).
.. [#Liu2022BOND] Liu, K., Dou, Y., Zhao, Y., Ding, X., Hu, X., Zhang, R., Ding, K., Chen, C., Peng, H., Shu, K., Sun, L., Li, J., Chen, G.H., Jia, Z. and Yu, P.S., 2022. BOND: Benchmarking Unsupervised Outlier Node Detection on Static Attributed Graphs. In Advances in Neural Information Processing Systems (NeurIPS).
iterateReal Python Podcast #208 <https://realpython.com/podcasts/rpp/208/>aidoczh.com <https://www.aidoczh.com>例 <https://github.com/yzhao062/pyod/blob/development/examples/qmcd_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/kde_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/sampling_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/gmm_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/pca_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/kpca_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/mcd_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/cd_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/ocsvm_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/lmdd_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/lof_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/cof_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/cof_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/cblof_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/loci_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/hbos_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/hdbscan_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/knn_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/knn_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/knn_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/sod_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/rod_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/iforest_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/inne_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/dif_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/feature_bagging_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/lscp_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/xgbod_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/loda_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/suod_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/auto_encoder_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/vae_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/vae_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/so_gaal_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/mo_gaal_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/deepsvdd_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/alad_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/ae1svm_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/devnet_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/rgraph_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/lunar_example.py>__)例 <https://github.com/yzhao062/pyod/blob/development/examples/embedding_od_example.py>__)radarの例 <https://github.com/yzhao062/pyod/blob/development/examples/pyg_radar_example.py>__)anomalousの例 <https://github.com/yzhao062/pyod/blob/development/examples/pyg_anomalous_example.py>__)scanの例 <https://github.com/yzhao062/pyod/blob/development/examples/pyg_scan_example.py>__)