2022年2月24日 16:30~ ## スライド ![[okabelab_meeting_202202.pdf]] ## アウトライン - 進捗サマリ - 研究課題3 - サマリ:研究課題3 時系列解析の研究 [[research/tsifter/TSifter]] - 1月研究会での報告 - 正確性89%、次元削減率93% - 正確性100%を達成した状態で、どこまで次元削減率を高められるか? - 今日の報告 - 正確性100%、次元削減率92%を達成 - 次元削減手法としてはやることがなくなったため、今後は次元削減の後続の処理である原因診断を含めた実験を行う。 - おさらい - (アップデートしたい) - 分散システムの複雑化 - インシデントへの迅速な対応が難化 - コンポーネントごとに膨大なKPIを観測した上で、そのうちの何十ものKPI(実数の多変量時系列データ)を監視している - サービス内の各コンテナが提供するメトリクスや、一部のサービスで利用するミドルウェアが提供するメトリクス - インシデント発生時に次のような課題がある - 手動による原因診断 - オペレーターは「アラートストーム」に悩まされる - あるメトリクスと他のメトリクスが依存関係をもつことから、インシデント発生時には、複数のメトリクスの挙動が変化する - 依存関係にある全ての監視されたKPIごとにアラートが通知される - オペレーターへの認知不可が高く、誤まった原因を導きやすい - 既存の原因診断手法 - マイクロサービスごとに1-6種類の限られた、かつ、サービス共通のメトリクスのみを入力とする。 - 原因の候補として「サービス」単位の出力となる。 - 診断の解像度を向上させ、原因箇所の特定を早めるために、「サービス」内のどのコンテナのどのメトリクスかまで出力したい。 - 全メトリクスを入力すればよいが、原因診断手法は通常、メトリクス同士の相関を調べる - 推定法の計算量を低下させるためには、メトリクス数は小さいほうがよい。 - 提案手法:時系列データの高速な次元削減手法 - 目的:インシデント発生時の原因診断に有用なメトリクスのみを検出し、原因診断手法へ入力するメトリクス数を削減する - 何が問題だったのか?(正確性) - ステップ1のおさらい - オフラインの異常検知。異常箇所を特定不要。30分や1時間など比較的短時間。 - 自己回帰モデルに定常性の検定手法を用いていた。 - 少数スパイクを含む系列(異常)とホワイトノイズ系列(正常)を区別できなかった。どちらも正常へ。 - 教科書にある統計的機械学習による異常検知を試す - 定常性の検定手法 + スパイクとホワイトノイズの区別 - [[ホテリングのT2法]]による異常検知 - 時系列の各点のy軸の値を正規分布にあてはめ、正規分布の逸脱度合いが高いものを異常とする - [[k-最近傍法|最近傍法]]による異常検知 - 複数のモデルの段階的組み合わせにより、閾値パラメータが増える問題 - 自己回帰モデルの範疇で解けないか? - 前回のスライド 「「傾向変化が小さい系列」を「定常性」にあてはめるのが妥当なのか?」 - 自己回帰モデルの直観的理解:過去のデータ点からそれ以降を予測できるという仮定を置いた時系列モデル - 自己回帰モデルにフィットしない系列を異常とすればよいはず - 定常性の検定手法は階差系列に対して最小二乗法にあてはめている - 階差をとると、少数スパイクの特徴は失われる - 最終的に実測値を学習データとして自己回帰モデルにフィットさせて、フィットされたモデルを用いて予測線を引いて、予測値と実測値の差分を異常度とする手法を採用 - 異常度に対して閾値を設定することになるが、閾値の数値間隔をもつことが難しい。 - カイ二乗分布に当てはめて、異常度の閾値を確率で表現する。 - 一般的には、0.01から0.05までの確率が使われる。 - 正確性を重視して閾値を小さくとる。つまり0.01。 - 評価結果 - スコア表 - 次元削減率の理論上の上限に対する評価 - 14 service x (1 service metrics + 1 container metrics) = 28 - 7 service + 14 containers = 21 - 合計 21 / 628 metrics = - 形成されたクラスタの様子を目視確認 - その他の試行錯誤 - ステップ2のクラスタリングの工夫 - 時系列から異常部位の特徴を濃くして、正常部位の特徴を薄くする、方向性で、できるだけ同じクラスタにまとめられないか? - ステップ1で原系列が異常度系列に変換されたことを活用して、異常度系列群に対してクラスタリングする - 異常度系列をバイナリ系列に変換してクラスタリングする - まとめと今後の予定 - ステップ1の手法を「定常性の検定手法」から「自己回帰モデルによる予測誤差に基づく異常検知」に変更 - 正確性が100% 次元削減率78-82% - 次元削減手法の出力を原因診断手法の入力として実験 - データセットの拡充 --- TO-DOs - [ ] TSifterの概観をアップデート - [ ] 周期性などのグラフをアップデート - [x] 少数スパイクがADF検定でだめだった理由の深堀り - [x] 予測誤差の図を用意する - [x] 自己回帰モデルの数式 - [x] カイ二乗分布の図 - [x] 形成されたクラスタの様子を目視確認 - [x] その他の試行錯誤