[[TSifterの正確性の定義の提案]]
正確性 = 故障箇所特定に必要なメトリクスが削減されずに残留している度合い。
1. 手動ラベリング
- 時間がかかりすぎる
2. 自動ラベリング
- 3-sigma法で検出
- 正常範囲に異常があるとうまくいかない
- [[2021__ISSRE__Identifying Root-Cause Metrics for Incident Diagnosis in Online Service Systems|PatternMatcher]]
- 13種のどれかにあてはまるなら異常、そうでなければ正常
3. 半自動ラベリング
- [[2019__INFOCOM__Label-Less - A Semi-Automatic Labelling Tool for KPI Anomalies|Label-Less]]で提案された[[DTW]]と[[k-最近傍法|k-NN]]によるラベリング
- データセット内の時系列数が多いと半自動とはいえ時間がかかる
4. ルールベースラベリング
- [[TSifter 障害の空間的影響伝搬に基づくGround Truthの定義]]
- 故障箇所メトリクス (コンテナ、ミドルウェア)
- ネットワークの経路上レスポンス
半自動ラベリングとルールベースラベリングを組み合わせるのが現実的ではないか。
ルールベースで、データセットからラベリングするメトリクスを絞り込み、それらのメトリクスに対して、GUIを用いた半自動ラベリングを適用する。
[[Sock Shop]]と[[TrainTicket]]のそれぞれのデータセットに対して、正確性を決める。
---
TSifter全体の正確性を評価するために、データセット内のすべてのメトリクスに分類ラベルを手動で付与することが理想的である。しかし、データセットが度々作成し直されたり、データセット内に1万個のメトリクスが含まれていることがあるなどの理由で、時間がかかりすぎて現実的でない。
これまではネットワーク依存関係や注入された故障の種類と位置に基づいてGround Truthを定義した、**「ルールベースラベリング」**を検討していた。しかしながら、必ずしもルールに沿って選択されたメトリクスに異常が現れるわけではない。そのため、ルールに沿わないケースで、Ground Truthに誤りがあることが問題だった。
そこで、異常パターンの分類器でデータセット全体に荒い分類を行った後に誤りを手動で訂正する**「半自動ラベリング」**を検討する。データセット内から少数のメトリクスを選び、それらを教師データとする分類器を作成し、その k-NN + DTWで構築した簡易分類器で行う。この手法は、[PatternMatcherの実装難易度検討](https://www.notion.so/PatternMatcher-ffe217226fba474485e2d38ef6f7f287) にあるPatternMatcher論文でも、CNNのための学習データを1000メトリクス個用意するために用いられている。
knnのための学習データを480個メトリクス用意し、一つ抜き交差法+grid searchで評価したところ、次のようなスコアになった。分類ラベルとして、13種類の異常パターンの他に、異常の位置が故障注入範囲内か否かを付与した。
その後、[[PatternMatcherのNN実装]]により、より精度の高い分類器を作成した。
---
TSifterの全体の正確性の評価は、出力されたメトリクスのクラスラベルのうち異常ラベルである割合。
[[TSifterクラスタリングの評価検討]]
---
フェーズ2後の出力の評価は、時系列データの異常パターンのタイプわけとルールベースラベリングにより行う。
1. クラスタリングターゲット内で、異常パターンのタイプ(Type1とType2、Type0)がフェーズ1からフェーズ2にかけて消失していないかどうか。
2. 代表メトリクスにどれだけ重複がないか。
- 同じ異常パターンのものはどの程度あるか?
- 同じ異常Typeのメトリクスがどの程度あるか?
- 代表メトリクス間の距離は離れているか?
3. ルールベースラベリング:CPU故障であれば、故障箇所メトリクスには、CPU系のメトリクスが残留していなければならない。残留していれば1、していなければ0。
4. PatternMatcherでは、KS検定のp値を重みにするので、フェーズ1の異常度が高いメトリクスがクラスタリングにより消失していないかどうかをみる。フェーズ1の出力を異常度の降順で整列させて、フェーズ2の出力と比較し、フェーズ1出力のk番目にフェーズ2の出力の第一位がくる。
(クラスタリングの代表メトリクスを選ぶときに、異常度が最大のものを選べば良いのではないか?)