[GitHub - azamikram/rcd: Root Cause Discovery: Root Cause Analysis of Failures in Microservices through Causal Discovery](https://github.com/azamikram/rcd)を
基に、[[2022__NeurIPS__Root Cause Analysis of Failures in Microservices through Causal Discovery|RCD]]を再現実装する。
## Setup
`Link modifed files`をいかに書き換えて実行する。
```shell-session
ln -fs $PWD/pyAgrum/lib/image.py $PWD/.venv/lib/python3.8/site-packages/pyAgrum/lib/
ln -fs $PWD/causallearn/search/ConstraintBased/FCI.py $PWD/.venv/lib/python3.8/site-packages/causallearn/search/ConstraintBased/
ln -fs $PWD/causallearn/utils/Fas.py $PWD/.venv/lib/python3.8/site-packages/causallearn/utils/
ln -fs $PWD/causallearn/utils/PCUtils/SkeletonDiscovery.py $PWD/.venv/lib/python3.8/site-packages/causallearn/utils/PCUtils/
ln -fs $PWD/causallearn/graph/GraphClass.py $PWD/.venv/lib/python3.8/site-packages/causallearn/graph/
```
ln -fs $PWD/pyAgrum/lib/image.py $PWD/.venv/lib/python3.8/site-packages/pyAgrum/lib/
ln -fs $PWD/causallearn/search/ConstraintBased/FCI.py $PWD/.venv/lib/python3.8/site-packages/causallearn/search/ConstraintBased/
ln -fs $PWD/causallearn/utils/Fas.py $PWD/.venv/lib/python3.8/site-packages/causallearn/utils/
ln -fs $PWD/causallearn/utils/PCUtils/SkeletonDiscovery.py $PWD/.venv/lib/python3.8/site-packages/causallearn/utils/PCUtils/
ln -fs $PWD/causallearn/graph/GraphClass.py $PWD/.venv/lib/python3.8/site-packages/causallearn/graph/
## Sock Shop data
- https://github.com/azamikram/rcd/blob/master/rcd.py#L136 のコメントアウトを外す
## Command or option
- --localized オプションをつける -> 分割統治アプローチをとる
- bins -> カイ二乗検定のための離散化のビンの個数
- GAMMA -> メトリクスの分割単位
- LOCAL_ALPHA -> PCアルゴリズムの有意水準の開始数値
## Implementation
- ALPHA_STEPずつ有意水準を増加させながら、複数回PCアルゴリズムを実行し、F-NODEの近傍ノードを追加していく。
- 統合フェーズのみSTART_ALPHA=0.001とする。分割フェーズではSTART_ALPHA=0.01
- PCアルゴリズムの以下のコードでランダム性が入っている
```
# x: local node
local_neigh = np.random.permutation(cg.neighbors(x))
```