[[時系列の異常パターンの識別法]]を評価するために、データセットから異常パターンに該当する時系列を発見して収集する。
## 要件
- 異常パターンは[[PatternMatcher メトリクスの典型的な13種類の異常パターン]]を採用する。
- 異常パターンごとに10個の時系列を採取する。
- 正常パターンを異常パターンと同数だけ採取する。
- 正常パターンは?
- 周期性
- ホワイトノイズ
## 手順
1. データセットから候補を発見する。ground truthメトリクスを全部抽出する。
- シンプルな除去はかけておく
2. パターンの選択。
- JupyterのButtom Widgetを使う https://analytics-note.xyz/programming/ipywidgets-button/
- 異常パターンの数だけボタンを用意
- NEXTボタンとSKIPボタンを用意
- NEXTボタンを押すと選択された異常パターン名で、時系列を保存する
3. ラベル付けした時系列を保存する
1. jsonlineでクリックするたびにファイル末尾に保存
2. dataset-id + chaos_type + chaos_comp + メトリクス名 + 異常パターン名のファイル名
4. ファイルをロードして、パターンごとの不足を[[Shape-based distance|SBD]] or [[DTW]]で距離の近いものを探索
## 工夫
- [x] 時系列データを同時に保存
- [x] 異常箇所が故障注入範囲内かそれ以前かのアノテーションも追加
- [ ] データセットロードとアノテーション作業の並行化
- [ ] アノテーション作業を中断して、再開できるようにする
- ウィジェットでファイルを指定する (ファイル名横にデータ数を表示)
- データ数が0のファイルは非表示
- [ ] 現在のパターンごとの選択数をボタン押下で更新して表示
- [ ] jsonlashでCLI表示
- [x] SAVEボタンがつぶれないようにする
- [x] SLOメトリクスも常時表示しておく
---
1. [[k-最近傍法|k-NN]]で分類器を作成する
- 100セグメントに対して手動ラベリング
- 現在のラベリング結果の統計を都度表示する
- 全レコード横断のラベリング
- k-nnで分類器を作成 100セグメント
- 分類器の予測結果で、Anomaly Patternごとに近傍順にソートした結果を返す
- ソート結果について、20個ずつページングして、batch confirmationする
- 不適切なメトリックを選択できるようにする。
- anomaly positionどうするか
- nx.spring_layoutで分類結果を可視化する
- knn学習器の調整
- rateとって負の数になる系列をrateとらないようにする
- predict_probaを使って、ソート
- 以降このパターンではすべてcorrectボタン All corect
- アノテーターがアノテーションしている間に、予測処理を回す
- ロードして再ラベリングのためのコード
- 右端のデータがまだ欠けてる系列がある inf になっている -> Single spile / inside
- 時系列のギザギザが多すぎる 丸めたい
- [[時系列データの平滑化]]
- [[Soft-DTW]]
- それほど差がない