[[時系列の異常パターンの識別法]]を評価するために、データセットから異常パターンに該当する時系列を発見して収集する。 ## 要件 - 異常パターンは[[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]] - それほど差がない