えんじにあのじゆうちょうスマートフォン用の表示で見るえんじにあのじゆうちょう勉強したことを中心にアウトプットしていきます。異常検知はじめに異常検知はいろいろな方法がありますが、どれもよくわかっていませんでした。調べた中で最も単純だと思われる「ホテリング理論」についてまとめてみます。概要ぶっちゃけてしまうと、以下のAlbert社の記事がとてもとてもわかりやすいです。www.albert2005.co.jpそもそも異常検知は「正常」となる状態を定めてその正常から逸脱する場合に「異常」として扱うようなロジックとなります。ホテリング理論の場合、正常となるデータの出現する確率分布を定義して、その分布から大きく逸脱する場合に異常値であると判定します。確率分布として正規分布を仮定します。すると、この事象の確率密度関数は以下の通り表されます。これの対数を取ったものをアノマリ度として利用します。これを整理すると、となりますが、これは自由度1のχ2乗分布に従います。これについては、以下の記事がわかりやすいです。bellcurve.jp分布さえ定義できてしまえば、あとはχ2乗分布の分布に対して閾値となるp値を決定し、そのp値を上回るか下回るかで判断ができます。やってみようそれではコードを書いて実現してみます。2].legend()適当にいろいろな種類用意しています。ちなみに今回は1~3までくらいしか使わないのですが、他の実験もやってる都合6種類作っています。それについてはまた後日書きます。axis=1)あとはこの母数を元に、自由度1のχ2乗分布を見ればよいわけです。ここでは、異常とみなす確率を0.5%として計算してみます。2].legend()非常に単純な実装ができました。うまくいくケース、いかないケースこれも前述のAlbert社のブログにしっかり書かれているので、それが詳しいですが改めて。1番目の絵のようなさも正規分布で表されそうなものであればうまく検知できます。値が変化するようなケースでは正しく検知することはできません。ホテリング理論は実装も単純で良いのですが、データの変動が大きい場合はあまりうまくいかないことに注意しなくてはいけません。まとめ今回は異常検知で最も単純そうなホテリング理論について、Pythonでの実装を通して学習しました。単純な方法ですが、場面を見極めれば十分使える思うので、しっかり理解しておきましょう。(1)認定はてなブログをはじめよう!marufeuillexさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。