# 宣言的RCA
## 定義
宣言的 RCA(Declarative Root-cause Analysis)とは、ユーザーが「何を調べるか(仮説空間の宣言)」を記述的言語(SQL 等)で指定し、システムが「どのように検索するか(スコアリング・ランキング)」を自動的に実行する根本原因分析のスタイルである。
従来の RCA ツールが特定の相関計算・依存グラフ手法を固定して使うのに対し、宣言的 RCA は仮説の**形式**(メトリクスファミリーのトリプル (X, Y, Z))と仮説の**探索空間**をユーザーが宣言的に定義する。これにより、探索空間の柔軟な制御とドメイン知識の埋め込みを両立させる。
確率的グラフィカルモデル(PGM / 因果 BN)の枠組みを統一理論基盤とし、「完全な因果グラフの学習」ではなく「標的変数の祖先探索」に特化することで計算コストを抑える。(Source: [[@2019__SIGMOD__ExplainIt! - A Declarative Root-cause Analysis Engine for Time Series Data]])
## 主な構成要素
1. **仮説形式**: トリプル (X, Y, Z)。X=説明変数ファミリー, Y=標的, Z=条件付け変数。これにより鎖・フォーク・コライダーを含む BN 構造の任意の部分を探索できる
2. **宣言的仮説列挙**: SQL でメトリクスをグルーピング・フィルタ・JOIN し、仮説空間を制約する。全組み合わせの自動生成ではなくドメイン知識で制約する
3. **スコアリング関数の差し込み可能性**: 単変量相関・多変量 Ridge 回帰・ランダム射影など複数のスコアリング手法をランタイムに選択できる
4. **条件付け(pseudocause)**: 既知の変動源 Z を制御変数として設定し、Y の残差 Yr に特化した原因 Cr を上位ランクに浮上させる
## 横断的知見
- **ExplainIt!(2019)が唯一の公表先行例**: 現時点で宣言的 RCA を明示的に論文化したシステムは ExplainIt! のみであり、横断的な比較は今後のソース蓄積を待つ。ただし設計哲学として「データベースが因果仮説探索の基盤として最適の立場にある」とする主張は、2019 年の時点で LLM-era の「ツール呼び出しを狭く定義してエージェントの探索空間を制御する」設計と同じ問題意識を先取りしている。(Source: [[@2019__SIGMOD__ExplainIt! - A Declarative Root-cause Analysis Engine for Time Series Data]])
## 未解決の問い
- 宣言的仮説設計の「SQL でドメイン知識を記述する」ステップは現実の運用者にとって習得コストが高い。LLM が自然言語の問題記述から SQL 仮説クエリを自動生成できれば、宣言的 RCA の入力コストを下げられるか
- ExplainIt! は Z を「ユーザーが決める」設計だが、どの変数を Z に設定すべきかを自動推薦する機構(変動源の分離の自動化)は未実装。この「Z の選択問題」は [[仮説駆動RCA]] の「仮説生成問題」と同一か
- 単一スコアラーが支配しないという評価結果(§6.1)は、スコアラー選択をユーザー任せにする設計の限界を示している。スコアラー自動選択(meta-learning, adaptive scoring)は研究課題か
## 関連
- 親概念: [[根本原因分析]]
- 関連概念: [[仮説駆動RCA]] / [[因果発見]] / [[AIOps]]
- 代表実装: ExplainIt! ([[@2019__SIGMOD__ExplainIt! - A Declarative Root-cause Analysis Engine for Time Series Data]])
## 出典
- [[@2019__SIGMOD__ExplainIt! - A Declarative Root-cause Analysis Engine for Time Series Data]](ExplainIt! — 宣言的 RCA の先駆実装)