> [!abstract]
> 本稿ではAIOps(IT運用のための人工知能)向け根本原因分析のオープンソースPythonライブラリPyRCAを紹介する。PyRCAは複雑なメトリクスの因果依存関係を解明し、インシデントの根本原因を自動的に特定するための包括的なフレームワークを提供する。グラフ構築とスコアリングの両タスクを含む複数の一般的なRCAモデルに統合インタフェースを提供する。本ライブラリはIT運用担当者、データサイエンティスト、研究者に対し、ラピッドなモデル開発、モデル評価、オンラインアプリケーションへのデプロイのワンストップ・ソリューションを提供することを目的とする。特に本ライブラリは因果グラフ構築をサポートする各種因果探索手法と、ベイズ分析、グラフ分析、因果分析等に着想を得た複数種類の根本原因スコアリング手法を含む。GUIダッシュボードは実践者に直感的なポイント&クリックインタフェースを提供し、人間による対話を通じてエキスパート知識を容易に組み込むことを可能にする。因果グラフとインシデントの根本原因を可視化する機能により、実践者は素早く知見を得てワークフロー効率を改善できる。本テクニカルレポートはPyRCAのアーキテクチャと主要機能を紹介するとともに、各種ベースラインモデルとのベンチマーク性能値を示す。さらに、PyRCAの機能をいくつかのユースケース例で実演する。
## 論文情報
| 項目 | 内容 |
|------|------|
| タイトル | PyRCA: A Library for Metric-based Root Cause Analysis |
| 著者 | [[Chenghao Liu]]、Wenzhuo Yang、Himanshu Mittal、Manpreet Singh、[[Doyen Sahoo]]、[[Steven C. H. Hoi]] |
| 所属 | [[Salesforce AI]] |
| 発表媒体 | arXiv:2306.11417 |
| 発表年 | 2023年6月20日 |
| URL | https://arxiv.org/abs/2306.11417 |
| コード | https://github.com/salesforce/PyRCA |
## 概要
PyRCAはAIOps向け根本原因分析(RCA)のオープンソースPythonライブラリであり、クラウドシステムの障害インシデントに対してメトリクスベースの根本原因特定を行うエンドツーエンドのフレームワークを提供する。因果グラフ構築・根本原因スコアリング・結果可視化を統合した設計と、コードなしで操作可能なGUIダッシュボードにより、IT運用者から研究者まで幅広い利用者を対象とする。シミュレーション実験では仮説検定アルゴリズムがRecall@1=1.00を達成し、グラフ構築ではPCアルゴリズムがGESを大幅に上回った。
## 問題設定
**入力**: クラウド・システムから収集した複数のKPI(主要性能指標)メトリクスの時系列データ(pandas.DataFrameフォーマット)、およびオプションのエキスパート知識(YAMLフォーマット)
**出力**: 異常メトリクスの根本原因である可能性が高い上位K個のメトリクスのリスト(根本原因スコア付き)
**前提**: 現代のクラウドシステムは大量のサービスが複雑な依存関係で接続されており、数千以上のKPIメトリクスが存在する。エンジニアが手動で全メトリクスを調査することは非現実的であり、自動化されたRCAツールが必要とされる。
## 提案手法
PyRCAは3層アーキテクチャで設計されている。
![[wiki/sources/_attachments/arxiv-2306.11417/fig4-dashboard-data-analysis.png]]
*図: PyRCAダッシュボードのデータ分析タブ*
![[wiki/sources/_attachments/arxiv-2306.11417/fig5-dashboard-causal-discovery.png]]
*図: PyRCAダッシュボードの因果グラフ探索タブ。ノード間の因果関係リストとグラフ構造を表示する*
### 入力層(Input Layer)
メトリクスデータをpandas.DataFrameとして読み込む。エキスパート知識ファイルはYAML形式で、禁止接続・必須接続・ルートノード・リーフノードの制約を指定できる。
### モデル層(Model Layer)
3カテゴリのモデルを統一インタフェースで提供する。
**因果グラフ構築モデル**:
- **PCアルゴリズム**: 制約ベースの因果探索。完全無向グラフから開始し条件付き独立テストでエッジを削除する。疎なグラフで効率的に動作する。
- **GESアルゴリズム**: スコアベースの因果探索。エッジなし状態から開始しBIC(ベイズ情報量規準)を最小化しながら貪欲にエッジを追加・削除する。
**根本原因スコアリングモデル(2フェーズ型)**:
- **ランダムウォークアルゴリズム**: 因果グラフ上のランダムウォークで各ノードのスコアを計算する。遷移確率行列は前進・後退・自己留まりの3ステップで構成される。
- **仮説検定アルゴリズム(HT)**: 異常を介入として解釈し、正常データと異常データの分布差を統計検定で比較する。
**根本原因スコアリングモデル(1フェーズ型)**:
- **ε-Diagnosisアルゴリズム**: 2標本検定とε統計量で時系列類似度を計測する低コスト手法。
- **RCDアルゴリズム**: 正常・異常データの両方を使って依存関係を発見する手法。異常を根本原因ノードへの介入としてモデル化する。
![[wiki/sources/_attachments/arxiv-2306.11417/fig2-causal-dag.png]]
*図: 因果DAGのノード構造例*
![[wiki/sources/_attachments/arxiv-2306.11417/fig3-anomaly-timeseries.png]]
*図: 異常検知における時系列の異常区間(オレンジ帯)の例*
### 出力層(Output Layer)
インタラクティブなGUIダッシュボード(`python -m pyrca.tools`)でRCAモデルの実行、ハイパーパラメータ調整、因果グラフの可視化・編集、結果のダウンロードが可能。評価指標としてグラフ構築にはPrecision/Recall/SHD、根本原因特定にはRecall@Kを使用する。
### シミュレーションデータ生成
DAGGen→DataGen→AnomalyDataGenのパイプラインで(i)DAG生成、(ii)構造因果モデル(SCM)に基づく正常データ生成、(iii)インシデント注入による異常データ生成が可能。
## 新規性
- RCA分野初のエンドツーエンド・オープンソースライブラリ(先行のCIRCAはスコアリングのみ、Tetrad/causalai/causal-learnはグラフ構築のみに特化)。
- 因果グラフ構築から根本原因スコアリングまでを統一インタフェースで提供し、YAML設定ファイルで容易にカスタマイズ可能。
- GUIダッシュボードによりコード不要でエキスパート知識を対話的に組み込める設計。
- pandas.DataFrameという既存のPythonエコシステムと親和性の高い標準フォーマットを採用。
## 実験設定
**データ**: シミュレーションデータ(DAGGen+DataGenで生成)
| パラメータ | 値 |
|-----------|-----|
| ノード数 | 20 |
| エッジ数 | 30 |
| グラフ数 | 500 |
| 1グラフあたりサンプル数 | 5,000 |
**評価指標**: RCAタスクはRecall@K(K=1,3,5)、グラフ構築タスクはPrecision/Recall/F1/SHD
**ベースライン**: ε-Diagnosis、RCD、Local-RCD、RW(ランダムウォーク)、BI(ベイズ推定)、HT(仮説検定)、各手法のPC推定グラフ版
## 実験結果
### RCAモデルのベンチマーク(表1)
| モデル | Recall@1 | Recall@3 | Recall@5 |
|--------|----------|----------|----------|
| ε-Diagnosis | 0.06±0.02 | 0.16±0.04 | 0.16±0.04 |
| RCD | 0.28±0.05 | 0.29±0.05 | 0.30±0.05 |
| Local-RCD | 0.44±0.05 | 0.70±0.05 | 0.70±0.05 |
| RW | 0.07±0.03 | 0.20±0.04 | 0.24±0.04 |
| RW-pc | 0.06±0.02 | 0.17±0.04 | 0.21±0.04 |
| BI | 0.15±0.04 | 0.35±0.05 | 0.43±0.05 |
| BI-pc | 0.11±0.03 | 0.30±0.05 | 0.40±0.05 |
| **HT** | **1.00±0.00** | **1.00±0.00** | **1.00±0.00** |
| HT-pc | 0.95±0.02 | 1.00±0.00 | 1.00±0.00 |
| HT-adj | 1.00±0.00 | 1.00±0.00 | 1.00±0.00 |
| HT-adj-pc | 0.77±0.04 | 0.92±0.03 | 0.92±0.03 |
### グラフ構築アルゴリズムの比較(表2)
| アルゴリズム | Precision | Recall | F1 | SHD |
|-------------|-----------|--------|----|-----|
| **PC** | **0.88±0.06** | **0.71±0.09** | **0.78±0.07** | **11.45±3.66** |
| GES | 0.46±0.15 | 0.44±0.14 | 0.45±0.14 | 32.53±9.15 |
PCアルゴリズムはGESに対してF1で0.78 vs 0.45と大幅に優位。SHD(誤った辺の方向付け数)も11.45 vs 32.53と顕著に低い。
## 考察
仮説検定(HT)の完璧な性能(Recall@1=1.00)はシミュレーションデータの前提条件、特に線形性やラテント交絡変数がないという仮定を満たす環境での結果であることに注意が必要である。真の因果グラフが既知の場合とPC推定グラフを使う場合で性能差が生じること(HT: 1.00→0.95)は、グラフ品質がRCA性能に直接影響することを示している。RCDは離散変数の仮定に縛られており、データ離散化ステップが独立性分析に干渉するため性能が低下する。
![[wiki/sources/_attachments/arxiv-2306.11417/fig1-monitoring-dashboard.png]]
*図: クラウド監視システムのダッシュボード例(Grafana)*
## 強み / 弱点・課題
**強み**:
- エンドツーエンドのRCAフレームワークとして因果グラフ構築から根本原因スコアリングまでを統合
- 統一インタフェースにより複数モデルの比較が容易
- YAMLベースのエキスパート知識組み込みによる実運用適用性の向上
- GUIダッシュボードで非エンジニアも使用可能
- 拡張性が高く、1クラス実装で新モデルを追加可能
**弱点・課題**:
- 実験はシミュレーションデータのみ。実際のクラウド・マイクロサービス環境での評価が不足
- ログデータおよびトレースデータへの対応は将来課題として明示されている
- PCアルゴリズムはi.i.d.サンプリングおよびラテント交絡変数なしを前提とし、現実の複雑なシステムでは仮定が崩れやすい
- HTの優位性はシミュレーションの前提条件依存であり、実環境での汎化は不明
- 1フェーズモデル(RCD、ε-Diagnosis)は大規模メトリクスへのスケールアビリティを主張するが、ベンチマーク上の性能は2フェーズ手法(真グラフ使用時)より劣る