未経験からデータサイエンティスト

未経験からデータサイエンティストの勉強したことの備忘録とか雑記とか

機械学習による異常検知 1. 異常検知ことはじめ

どうも、sue124です。
久しぶりにブログを書いていこうと思います。

今回は書籍「入門 機械学習による異常検知」をちょうど読み終わったので、この本をもとに「異常検知」に関して、自分が理解したことを備忘録的に書いていこうと思います。

この本は、数式での導出が丁寧になされてる良書でした。
(その分内容がヘビーで、線形代数の本と行ったり来たりして、大変でしたが)

このブログでは数式の細かい導出までは丁寧に書かないつもりなので、そこが気になる方は是非一読ください。


今回は冒頭の「異常検知の基本的な考え方」についてまとめます。

1-1. 異常検知の基本的な流れ

与えられたデータ(変数)を基に異常検知をしていくわけですが、異常検知のモデル構築は一般的に以下の3ステップで行われます。

ステップ1:分布推定

まずは正常のモデルを作ります。
全てのデータが一致することはないので、ばらつきを含んだモデル(確率分布)をつくることになります。

ステップ2:異常度の定義

正常からのずれ度合い、すなわち異常度を定義します。

ステップ3:閾値の定義

正常 or 異常 を判定するために、異常度に閾値を設定し、異常度が閾値を超えたら異常と判定します。


上記の「分布」「異常度」「閾値」が異常検知の三大要素と本の中では呼ばれています。
この本で紹介されている異常検知の手法は、基本的に上記の3ステップに沿って行われます。

1-2 機械学習で確率分布を求める

データから正常モデルを構築するには、対象となる系の性質に応じて、解くべき問題が以下のように変わります。
対応する章も、併せて記載します。

  • 密度分布問題:2, 3章

入出力に区別がなく、観測順序が重要でない場合

  • 次元削減問題:5章

データが多次元で、パターンの把握に役立つ次元とそうでない次元が混在している場合

  • 回帰問題:6章

入力と出力の関係が重要だが、観測データの順序が重要でない場合

  • 分類問題:3.3節と8.3節

出力が離散値(カテゴリー)をとる場合
(基本的には出力が離散値出なく、どの程度そのカテゴリーに近いかを知りたいことが多いので、この本では深堀はされていない)

  • 時系列問題:7章

入力と出力の関係に加えて、観測データの順序が重要である場合

1-3. 異常の度合いを数値で表す

正常時の確率分布 p(x) が与えられているとすると、以下のことが言えます。

  • 正常時に出現確率が大きい観測値は、異常度が低い
  • 正常時に出現確率が小さい観測値は、異常度が高い

このことから、観測値 x' の一つの自然な異常度 p(x') として、以下を採用します。


a(x') = -\ln p(x')

上式では自然対数のマイナス(負の対数尤度)を取っているので、観測値の出現確率が低い場合に高い異常度が与えられることになります。
また、負の対数尤度を取ることには、以下のメリットがあります。

  • マハラノビス距離と直接の対応がつく(正規分布の場合)
  • -\ln p(x')x' の確率分布にわたり平均したものは、平均情報量※になる

※平均情報量は、以前私が記事にした決定木に関する記事でも出てきたものですね。
sue124.hatenablog.com



今後の記事では、上記の考えに基づいて異常検知を考えていきます。
次回は1変数の正規分布の異常検知に関してを書く予定です。