【初心者流】Courcera 機械学習 Week 9を解く!内容:異常検知

アノマリー検出(異常検知)


今回は製造現場にて製品に発生した異常を検出するといった少し応用的に機械学習を用いる話になります。

上の図のように、製品に対して品質を確認するためのテストを二種類行ったとしましょう。このとき、どうやら赤で色分けした製品サンプル一つが外れ値となっているようです。

さて、この外れ値は見た目には他の製品サンプルの品質結果から外れているように見えますが、定量的に判断したいところですよね。そこで用いられるのがガウス分布を用いたアノマリー検知です。

次の要領で用います。

  1. あまりアノマリーな結果を含まない品質結果データをm個用意します。
  2. 上記データに対して平均\(\mu_1, \mu_2,…  \mu_n\)と分散の二乗(標準偏差)\(\sigma^2_1,\sigma^2_2,…,\sigma^2_n\)を求めます。このときnは行った品質テストの数を示します。$$\mu_j=\frac{1}{m}\sum^m_{i=1}x^{(i)}_j$$ $$\sigma^2_j=\frac{1}{m}\sum^m_{i=1}(x^{(i)}_j-\mu_j)^2$$
  3. 異常値が混じっている可能性のある新しい品質結果データから\(p(x)\)を求めます。$$p(x)=\displaystyle \prod_{ j= 1 }^n p(x_j;\mu_j,\sigma^2_j)=\prod^n_{j=1}\frac{1}{\sqrt{2\pi}\sigma_j}\exp(-\frac{(x_j-\mu_j)^2}{2\sigma^2_j})$$このとき\(\prod\)は\(p(x_1;\mu_1,\sigma^2_1)p(x_2;\mu_2,\sigma^2_2)…p(x_n;\mu_n,\sigma^2_n)\)のように積の形をコンパクトにしたものです。
  4. \(p(x)<\epsilon\)であれば新しい品質結果データに異常値ありと判断されます。

さて、実際には異常値だとわかっているサンプルデータと正常なデータを用意し、例えば

トレーニング用(正常データのみ) = 60%

交差検定用(Cross Validation)(異常値含む) = 20%

テスト用(異常値含む) = 20%

のような割合で用いて、自身のアルゴリズムを検証していきます。

ちなみにパラメータεは次のように異常値あり/なしを決める重要な要素となりますが、このεの決め方は交差検定を行いながらアルゴリズムの精度が良くなるように調整してやる必要があります。

\(y=1\) if \(p(x)<\epsilon \)(異常値あり!)

\(y=0\) if \(p(x)\geq\epsilon \)(異常値なし!)

まとめ


・アノマリー検知は正常なデータが数多くある中から、異常値を見つけ出すアルゴリズムである。

・製造業においてはあるテストの結果値の平均±3σで評価することがある(σは標準偏差)。機械学習を用いた場合、複数の特徴量からアノマリー(異常値)かどうかを判断することができる。

今回は短めにここまで!最近暑くて気が滅入っちゃいますね…

次へ:week9 その2 レコメンダーシステム、協調フィルタリング

  • 投稿が見つかりません。

コメント

タイトルとURLをコピーしました