kashinoki38 blog

something like tech blog

Amazon OpenSearch Service(AOS)の異常検知

多少調べたので、Amazon OpenSearch Service(AOS)の異常検知について、調べた情報のメモをします。

理解としては、

  • データの学習期間はアンドキュメントだが、過去のデータポイント含めてストリームにモデルは学習されていく。うので、過去からの傾向が Anomaly Grade には考慮されるはず。
  • Detector intervalで指定した時間でデータが集計(avg, sum, min, max)され、そのポイントをストリームにモデルに送ることで学習する(値分布の密度を学習する。低密度なものが Anomaly Grade が高くなるように)
  • リアルタイムに集計したデータポイントへ Anomaly Grade を返す
  • このときにデータが不足していると Data confidence が低い
  • より多くのデータを投入していくことで、 Confidence が高まっていく

まずドキュメントはこちら。

opensearch.org

まとめ

  • OpenSearchの異常は、時系列データの異常な動作の変化
    • 異常検出は、ランダムカットフォレスト(RCF)アルゴリズムを使用して、OpenSearchデータの異常をほぼリアルタイムで自動的に検出
    • RCFは、教師なし機械学習アルゴリズムであり、着信データストリームのスケッチをモデル化して、各着信データポイントの値を計算anomaly gradeしconfidence scoreます
  • 検出器の定義
    • Detector interval
      • 検出器はこの間隔でデータを集約し、集約された結果を異常検出モデルに送ります。
      • この間隔を短く設定するほど、検出器が集約するデータポイントは少なくなります。
      • 異常検出モデルは、連続するデータポイントを使用してモデルのサンプルを作成する手法であるshinglingプロセスを使用します
        • このプロセスには、連続した間隔から特定の数の集約データポイントが必要です。
      • 実際のデータに基づいて検出器の間隔を設定することをお勧めします
        • 長すぎると結果が遅れる可能性があり、短すぎると一部のデータが失われる可能性があります。
    • Window delay
      • データがリアルタイムではなく一定の遅延でOpenSearchに取り込まれることを検出器に通知
      • この遅延を考慮して検出器間隔をシフト
        • E.g. 検出器の間隔が10分で、データが一般に1分の遅延でクラスターに取り込まれるとします
          • 検出器が2:00に実行されると仮定します。検出器は、1:50から2:00までの最後の10分間のデータを取得しようとしますが、1分の遅延のため、9分間のデータしか取得せず、1:59から2:00までのデータを見逃します
          • ウィンドウ遅延を1分に設定すると、インターバルウィンドウが1:49〜1:59にシフトするため、検出器は検出器インターバル時間の10分すべてを占めます。
  • モデルを構成する
    • 異常をチェックするインデックスのフィールド
      • 各機能の集計方法を選択する必要がありaverage()、count()、sum()、min()、またはmax()
  • 結果を観察する
    • Anomaly grade
      • 0から1までの数値で、データポイントの異常度を示します
      • 異常グレード0は「異常ではない」ことを表し、ゼロ以外の値は異常の相対的な重大度を表します
    • Data confidence
      • 報告された異常グレードが予想される異常グレードと一致する確率の推定値
      • モデルがより多くのデータを観察し、データの動作と傾向を学習するにつれて、信頼度が高まります 信頼度はモデルの精度とは異なることに注意

AWS Blog

aws.amazon.com

まとめ

  • 異常検出
    • 一般的な定義の1つは、「低密度領域にあるデータポイント」です
      • 値分布の高密度領域は、データポイントが存在する可能性が高いドメインの領域
      • 低密度領域は、データが表示されない傾向がある場所
        • これの右下とかにある点は、低密度な点で、これって異常値っすよね。という意味。(異常値じゃない数値は高密度に分布されるよね)
  • ランダムカットフォレストと異常しきい値
    • 異常検出機能のアルゴリズムコアは、次の2つの主要コンポーネントで構成されています。
      • 入力データストリームの密度を推定するためのRCFモデル
      • ポイントを異常としてラベル付けする必要があるかどうかを判断するためのしきい値モデル
    • データ密度の効率的な推定を含むデータストリームを要約し、データを異常スコアに変換できます
    • 対応するデータポイントを異常として宣言するのに十分な大きさの異常スコアはどれくらいですか? 異常検出器は、しきい値モデルを使用してこの質問に答えます
  • 出力の理解
    • 異常検出器は、 2つの値を出力します
      • Anomaly grade
        • ゼロの場合は、対応するデータポイントが正常であることを示します
        • ゼロ以外のグレードは、RCFによって出力された異常スコアが計算されたスコアしきい値を超えていることを意味し、したがって異常の存在を示します
          • 冒頭で紹介した数学的定義を使用すると、勾配は異常の密度に反比例します。 つまり、イベントがまれであるほど、対応する異常グレードが高くなりま
      • Data confidence
        • 異常検出モデルがアルゴリズム固有のエラー範囲内の異常を正しく報告する確率の測定値
        • 次の3つのソースから導き出されます
          • RCFモデルが十分なデータを観測したかどうかの統計的測定
            • RCFモデルがより多くのデータを観察するにつれて、この信頼の源は100%に近づきます
            • 信頼限界は、しきい値モデルの分布スケッチによって作成された近似から得られます。
            • Elasticsearchクラスターの各ノードに起因する信頼度の測定。
              • ノードが失われると、対応するモデルデータも失われ、一時的な信頼性の低下につながります
  • サンプル
    • NYCタクシーデーターセット
      • ニューヨーク市からの6か月間のタクシー乗客数が30分のウィンドウに集約されています。
      • Anomaly Detection
        • データの密度をリアルタイムで推定するRCFモデルにストリーミングされます
        • RCFは、これらの異常スコアをしきい値モデルに送信します
        • しきい値モデルは、対応するデータポイントが異常であるかどうかを判断します
        • モデルは異常グレードの異常の重大度を報告します

そもそもランダムフォレストって

spjai.com

まとめ

  • 決定木

    • 因果関係がはっきりしている事象に関しては、決定木を用いて分析を行う事がよくあり、決定木はデータマイニングでよく用いられる手法
    • 分類木: 式1のyが、性別のように、分類可能な変数で、分類を目的にして、決定木のアルゴリズムを使用する場合
    • 回帰木: 不動産の家賃の変動や、株価の変動等、分類ではなく、過去、及び、現在のデータから、未来の数値を予想する場合
  • ランダムフォレスト

    • 木が集まって、アンサンブル的な学習を行うので、フォレストと称されます
      • 決定木の集合体なので、条件分岐をもった幾つかの決定木をランダムに構築して、それらの結果を組み合わせて、「分類」または「回帰」をする方法で、アンサンブル学習と呼ばれます
      • 多数決的な方法
    • バギング
      • アンサンブル学習を行う際の、決定木のサンプリングを行うアルゴリズムです。
      • 通常、入力トレーニングデータからランダムサンプリングを繰り返して、無作為に決定木のサンプリングを行う
    • ランダムフォレストは、比較的シンプルなアルゴリズムなので、高速に動作
    • 分岐に用いられている「性別は男か?」「年齢は10歳以上か?」のような条件分岐を、説明変数と呼ぶ

AOS で触ってみる

docs.aws.amazon.com

ステップ 1: ディテクターを作成する

  • 個別の異常検出タスク
  • 複数作成可能
  • Data Source の設定等

ステップ 2: ディテクターに機能(feature)を追加する

  • 異常をチェックするインデックス内のフィールドを指定
  • average()、sum()、count()、min()、max() から集計方法を選択
  • オプションで、Category field(分類機能)、Window size(集計間隔)を指定可能

ステップ 3: 結果の確認

  • リアルタイムと履歴がある