Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

異常検知と変化検知 第4章 近傍法による異常検知

11,591 views

Published on

機械学習プロフェッショナルシリーズ勉強会 #6 輪読会資料
異常検知と変化検知 第4章 「近傍法による異常検知」

Published in: Data & Analytics
  • Be the first to comment

異常検知と変化検知 第4章 近傍法による異常検知

  1. 1. 異常検知と変化検知 Chapter 4 近傍法による異常検知 2015/10/7 @kenmatsu4
  2. 2. 自己紹介 ・Facebookページ   https://www.facebook.com/matsukenbook ・Twitterアカウント   @kenmatsu4 ・Qiitaでブログを書いています(統計、機械学習、Python等)    http://qiita.com/kenmatsu4    (3500 contributionを超えました!) ・趣味    - バンドでベースを弾いたりしています。    - 主に東南アジアへバックパック旅行に行ったりします    (カンボジア、ミャンマー、バングラデシュ、新疆ウイグル自治区 etc) 旅行の写真 : http://matsu-ken.jimdo.com Twitterアイコン
  3. 3. コレですw
  4. 4. ・ホテリングの 法の様な制約がない  → 観測値が一定値の周りに集まって    なくても良い ・わかりやすい  → 「近さ」というわかりやすい概念 ・なので、本質としては「距離」をどう  定義するか、という問題。 本章で扱う「近傍法」の特徴 T2
  5. 5. ・k近傍法  (k-neighbor method) ・マージン最大化近傍法  (Large-margin nearest neighbors) 本章で扱う2つの近傍法
  6. 6. 4.1 k近傍法 : 経験分布に基づく異常判定
  7. 7. 標本サンプル数   : 4.1.1 k近傍法: ラベルなしデータ M 1 M 1 M 1 Data Set : D = {x(1) , x(2) , · · · , x(N) } ↑このデータは「異常標本を含まない」or        「異常標本があっても圧倒的少数」  であるとする。 新たに取得したデータ: x0 N 特徴量数      : M ← 判定対象
  8. 8. 経験分布 (·) は、ディラックのデルタ関数 インパルス関数 分散0の極限の正規分布 つまり Z 1 1 (x b)f(x)dx = f(b) を満たす (·) 1 b x f(x) ( の時のみ1, それ以外0)x = b pemp(x|D) = 1 N NX n=1 (x x(n) )
  9. 9. 経験分布 点があるところのみ 1/N で、それ以外は0の分布 pemp(x|D) → 経験されたところのみ値を持つ pemp(x|D) = 1 N NX n=1 (x x(n) )
  10. 10. 任意の位置 を中心とした十分小さい半径 の球を 経験分布 標本位置以外で確率0というのは実用的でないので… pemp(x|D) " x0 " 考え、この中で確率密度が一定と考える
  11. 11. 経験分布 pemp(x|D) " この球の中は   確率密度    p(x0 )VM (", x0 ) 確率密度 球の体積 の範囲に入る確率VM (", x0 ) p(x0 ) ⇥ |VM (", x0 )| ⇡ Z x2VM (",x0) pemp(x|D)dx
  12. 12. 経験分布 " 確率密度 球の体積 の範囲に入る確率VM (", x0 ) p(x0 ) ⇥ |VM (", x0 )| ⇡ Z x2VM (",x0) pemp(x|D)dx p(x0 )
  13. 13. 経験分布 VM (", x0 )M次元球の内部の領域: 領域 に含まれる  の要素の数を とする。VM (", x0 ) D k p(x0 ) ⇡ 1 |VM (", x0)| Z x2VM (",x0) 1 N NX n=1 (x x(n) )dx p(x0 ) ⇡ k N|VM (", x0)| " 確率密度 球の体積 の範囲に入る確率VM (", x0 ) p(x0 ) ⇥ |VM (", x0 )| ⇡ Z x2VM (",x0) pemp(x|D)dx
  14. 14. n次元球の体積から・・・ (定数)VM = ⇡ M 2 (M 2 ) + 1 "M = "M (定数)p(x0 ) ⇡ k N|VM (", x0)| ⇡ k N "M 1 半径 の球の体積は、 の定数倍と言える( に比例する)。"M" よって、確率密度もこのように表せる。 全体のデータ数のうち、 半径εの球の中に含まれる データ数の割合 "M
  15. 15. 異常度の導入 (1.4)より異常度は と、定義される。よって、 (定数) ・εを固定すれば、 k が小さい方が異常度が高い ・ k を固定すれば、εが大きい方が異常度が高い これより、 a(x0 ) = ln p(x0 |D) a(x0 ) = ln k + M ln " + … (1.4)
  16. 16. k近傍法 (k=1のとき) k=1とすると となるので、最近傍の標本までの距離を基準値として それを超えるものを異常と判定するというやり方を 採択できます。 異常 正常 x0 a(x0 ) = ↵ a(x0 ) > ↵ x0 a(x0 ) = ↵ a(x0 ) < ↵ (定数)a(x0 ) = M ln " +
  17. 17. k近傍法 (一般の場合) k の項が入る分、同じ ε でも異常度 が小さくなる。 a(x0 ) (定数)a(x0 ) = ln k + M ln " +
  18. 18. ε近傍法 近傍半径 ε を定数として与える。 そのため k によって異常度が決まる。 異常 正常 x0 a(x0 ) = ↵ x0 a(x0 ) > ↵ a(x0 ) = ln k + (定数)
  19. 19. ただし、個々の塊の粗密に違いがあることや、 変数の次元が高い場合に 個々の変数の寄与がかき 消されがちであるので 注意が必要。 k近傍法の特徴 k近傍法は分布が多峰的 (multimodal)でも適用が 可能。 x0 a(x0 ) = ↵
  20. 20. 手順 1. 観測データ x’ を得る 2. k が決まっているので ε が決まる 3. 異常度が閾値を超えているか判断する x0 "
  21. 21. 4.1.2 k近傍法: ラベルつきデータ M 1 M 1 M 1 D = {(x(1) , y(1) ), (x(2) , y(2) ), · · · , (x(N) , y(N) )} ラベル 0:正常, 1:異常を表すスカラーデータ M次元ベクトル N1 (x0 ) N0 (x0 ) :正常ラベルつきのk近傍標本数 :異常ラベルつきのk近傍標本数 N0 (x0 ) N1 (x0 )
  22. 22. 4.1.2 k近傍法: ラベルつきデータ M 1 M 1 M 1 D = {(x(1) , y(1) ), (x(2) , y(2) ), · · · , (x(N) , y(N) )} ラベル 0:正常, 1:異常を表すスカラーデータ M次元ベクトル N1 (x0 ) N0 (x0 ) :正常ラベルつきのk近傍標本数 :異常ラベルつきのk近傍標本数 N0 (x0 ) N1 (x0 ) k=6のとき 正常:4、異常:2
  23. 23. p(y = 1|x0 , D) = N1 (x0 ) k ← 近傍kのうち異常ラベルの数の割合 p(y = 0|x0 , D) = N0 (x0 ) k ← 近傍kのうち正常ラベルの数の割合 a(x0 ) = ln p(x0 |y = 1, D) p(x0|y = 0, D) p(x0 |y = 0, D) = p(y = 0|x0 , D)p(x0 ) p(y = 0) = p(x0 ) k · N0 (x0 ) ⇡0 ここは共通 a(x0 ) = ln ⇡0 N1 (x0 ) ⇡1N0(x0) 式(4.4):異常度 ここにベイズの定理を適用。異常も同様 全標本に対する 正常標本の割合 全標本に対する 正常標本の割合
  24. 24. 異常検知の実施 1. 近傍数 、異常判定の閾値 の候補をリストアップする。k ath は0を中心に値を決定する。(正常、異常が一様に分布 している場合、異常度が0に近くなるため) ath 【訓練時(事前準備)】 2.「距離」に何を使うかを決定する。基本はユークリッド   距離をまず試して精度を評価する。 ユークリッド距離で精度が良くない場合、局所外れ値度 で距離を定義するとうまくいく場合がある。(特に、 位置によりデータの濃淡がある場合)
  25. 25. 局所外れ値度(さわりだけ) pp0 q q0 データの密集度を考慮して距離を定義する。
  26. 26. 異常検知の実施 1. 訓練データ の中から標本 を選ぶ。 【訓練実施】 D x(n) 2. 残りのN-1個の標本の中から に最も近い標本を k 個 選ぶ x(n) 3. 式(4.4)に基づいて なら を異常と   判定する。 a(x(n) ) > ath x(n) 4. N個の標本全てに「異常」「正常」の仕分けが済むと、  正常標本精度、異常標本精度が算出できるので、ここから F値 = 2r0r1 r0 + r1 を求め、 の評価値とする。(k, ath) 正常標本精度 = 正しく正常と判定した数 正常標本総数 5. 1∼4を繰り返し、最大のF値となる を選択する(k⇤ , a⇤ th)
  27. 27. 異常検知の実施 1. 新たな観測値 に対して、最近傍 個を から選ぶ 【運用時】 x0 k⇤ D 2. なら を異常と判定する。a(x0 ) > a⇤ th x0
  28. 28. 4.2 マージン最大化近傍法
  29. 29. 計量学習:マージン最大化近傍法 M 1 M 1 M 1 D = {(x(1) , y(1) ), (x(2) , y(2) ), · · · , (x(N) , y(N) )} ラベル 0:正常, 1:異常を表すスカラーデータ M次元ベクトル ラベル付きデータ 分布の様相に応じて距離尺度をうまく調整し、精度を上げる ことを狙った手法。
  30. 30. 計量学習:マージン最大化近傍法 行列 A で基準化した2標本の距離 M 1 M 1 M M スカラーで 表す距離 2次形式! 行列 A をデータの分布をうまく表すように決める 行列 A をデータで学習させる手法を計量学習という このとき行列 A を「リーマン計量」と呼ぶ d2 A(x0 , x00 ) = (x0 x00 )T A(x0 x00 )
  31. 31. 計量学習:マージン最大化近傍法 マハラノビスの距離に似ているが、これに k 近傍法を 1枚かますことがこの手法の特徴 と、単位行列にするとユークリッド距離となる。A = IM Aは半正定値行列とする d2 A(x0 , x00 ) = (x0 x00 )T A(x0 x00 ) d2 A(x0 , x00 ) = (x0 x00 )T IM (x0 x00 ) = (x0 x00 )T (x0 x00 ) = kx0 x00 k2
  32. 32. から1つ、任意の標本 を取り出したとき、 同一ラベルに属する k 個の最近傍標本を (標的近傍) とする。 計量学習:マージン最大化近傍法 近傍数 k を決め、 を初期値とする。 【初期値】 A = IM D N(n) x(n) 近傍数 k=3 のとき、青い点がN(n) x(n)
  33. 33. 計量学習:マージン最大化近傍法 ターゲット 同一ラベルデータ k 近傍のデータの内、ターゲットと同一ラベルのデータ との距離の和 (n) 1 (A) ⌘ X i2N (n) d2 A(x(n) , x(i) ) これをなるべく小さくする 最小化条件1 Aで基準化された距離 0 1 2 3 4 5 6 0 1 2 3 4 5 6 赤セルがターゲット、 グレーセルが 近傍、 k=3 の例 N (n)
  34. 34. 計量学習:マージン最大化近傍法 条件2 ターゲットと異ラベル 標本との2乗距離[ ] ターゲットと同一ラベル 標本との2乗距離[ ]+ c2> c ※ cは図の灰色の帯の幅に対応
  35. 35. 計量学習:マージン最大化近傍法 最小化条件2:前ページの条件が破られている度合を最小化 x(j) :同一ラベル k 個のデータ (j = 1, 2, · · · , k) x(l) :全てのデータ (l = 1, 2, · · · , N) 前ページのcはAに吸収可能のため、1とする (n) 2 (A) ⌘ X j2N (n) NX l=1 I[y(l) 6= y(n) ] h 1 + d2 A(x(n) , x(j) ) d2 A(x(n) , x(l) ) i + 異ラベルの距離はマイナス → 距離が離れている方が   良いので。 :かっこの中が成り立つとき1、それ以外0I[·] [h]+ = max(0, h) = ( h, h 0 0, h < 0 ターゲットと異なる ラベルのものだけ取り出す
  36. 36. 計量学習:マージン最大化近傍法 最小化条件2 前ページのcはAに吸収可能のため、1とする (n) 2 (A) ⌘ X j2N (n) NX l=1 I[y(l) 6= y(n) ] h 1 + d2 A(x(n) , x(j) ) d2 A(x(n) , x(l) ) i + 異ラベルの距離はマイナス → 距離が離れている方が   良いので。 ターゲットと異なる ラベルのものだけ取り出す ターゲットと同一ラベル ターゲットと異なるラベル 濃いグレーの部分を 全部足し合わせる 同 異 同 同 異 異 同 異 k n k k l系 j系 N N
  37. 37. マージン最大化近傍法の最適化問題 (A) ⌘ 1 N NX n=1 h (1 µ) (n) 1 (A) + µ (n) 2 (A) i 最小化ターゲット subject to A ⌫ 0 半正定値行列である事を表している → 距離が負にならない事を示している (A) ⌘ 1 N NX n=1 h (n) 1 (A) + (n) 2 (A) i 実用上は μ=0.5として問題ないためその場合、μは下記のように 省略できる
  38. 38. 勾配法による最適化 半正定値計画(semi-definite programing) という最適化問題となる。 勾配法 固有値計算{ の組み合わせで解く
  39. 39. 勾配法によるAの更新 A A ⌘ @ (A) @A 最小化の更新式(A) ⌘ :勾配法のステップ幅 勾配法のイメージ
  40. 40. これを扱うには和の範囲を工夫して の中に 正の項しか入らないようにすると を外せる。   は右図のように角をもつので 微分できない。 勾配法によるAの更新 [h]+ [h]+ → 微分できる目的関数に対する   勾配法との違いから、 「劣勾配法」と呼ぶのが正確 [h]+ [·]+
  41. 41. 今日のハイライト X ⌘ {x(1) , x(2) , · · · , x(N) } M 1 M 1 M 1@ (A) @A = 1 N XCXT M MN NN N M M : 及び と異なるラベルかつ、x(n) x(j) 1 + d2 A(x(n) , x(j) ) d2 A(x(n) , x(l) ) > 0 である標本の集合(添え字が のもの)l Nn,j 式(4.12) 式(4.13) C ⌘ NX n=1 X j2N (n) 8 < : (1 µ)C(n,j) + µ X l2Nn,j (C(n,j) C(n,l) ) 9 = ;
  42. 42. 今日のハイライト 標的近傍 はAの更新より変わらない。N(n) : 及び と異なるラベルかつ、x(n) x(j) 1 + d2 A(x(n) , x(j) ) d2 A(x(n) , x(l) ) > 0 である標本の集合(添え字が のもの)l Nn,j     のほうはAの更新で変化するNn,j C ⌘ NX n=1 X j2N (n) 8 < : (1 µ)C(n,j) + µ X l2Nn,j (C(n,j) C(n,l) ) 9 = ; C(i,j) ⌘ (ei ej)(ei ej)T
  43. 43. の中身 { 個 i番目 j番目 ei = (0, 0, · · · , 1, · · · , 0, 0)T ej = (0, 0, 0, · · · , 1, · · · , 0)T N C(i,j) ⌘ (ei ej)(ei ej)T 1 N 1 N N N i j 0 0 … 1 … -1 … 0 0 0 0 0 0 0 0 0 0 … 0 0 0 0 0 0 0 0 i 1 0 0 0 1 0 -1 0 0 … 0 0 0 0 0 0 0 0 j -1 0 0 0 -1 0 1 0 0 … 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ei ej = (0, · · · , 1, · · · , 1, · · · , 0)T C(i,j) C(i,j)
  44. 44. 今日のハイライト:確かめてみる (n) 1 (A) ⌘ X i2N (n) d2 A(x(n) , x(i) ) M 1 1 M M M 行列Aで微分すると = X i2N (n) (x(n) x(i) )T A(x(n) x(i) ) = X i2N (n) x(n i)T Ax(n i) k近傍のデータk近傍のデータ = X i2N (n) MX k=1 MX l=1 aklx (n i) k x (n i) l 対称! @ (n) 1 (A) @akl = X i2N (n) x (n i) k x (n i) l = X i2N (n) (x (n) k x (i) k )(x (n) l x (i) l )
  45. 45. X i2N (n) (x (i) k x (n) k )(x (i) l x (n) l ) なんとなく、共分散っぽいものに 見えてくる! 中心 中心 k近傍のデータ k近傍のデータ 今日のハイライト:確かめてみる
  46. 46. 今日のハイライト:確かめてみる (A) ⌘ 1 N NX n=1 h (n) 1 (A) + (n) 2 (A) i = 1 N NX n=1 (n) 1 (A) + 1 N NX n=1 (n) 2 (A) 目的の最小化関数を定義し直す この時、最初の項の行列の微分を考えるとこのようになる = 1(A) + 2(A) @ 1(A) @akl = 1 N NX n=1 X i2N (n) (x (i) k x (n) k )(x (i) l x (n) l )
  47. 47. C(i,j) ⌘ (ei ej)(ei ej)T @ 1(A) @akl = 1 N NX n=1 X i2N (n) (x (i) k x (n) k )(x (i) l x (n) l ) @ (A) @A = 1 N XCXT 今日のハイライト:確かめてみる
  48. 48. (n) 2 (A) ⌘ X j2N (n) NX l=1 I[y(l) 6= y(n) ] h 1 + d2 A(x(n) , x(j) ) d2 A(x(n) , x(l) ) i + 行列Aで微分すると @ (n) 2 (A) @apq = X j2N (n) NX l=1 I[y(l) 6= y(n) ]  d2 A(x(n) , x(j) ) @apq @d2 A(x(n) , x(l) ) @apq + = X j2N(n) NX l=1 I[y(l) 6= y(n) ] h (x(n) p x(j) p )(x(n) q x(j) q ) (x(n) p x(l) p )(x(n) q x(l) q ) i + 同一ラベルのk近傍が対象 異ラベルの全てが対象 同 異 同 同 異 異 同 異 k n k k l系 j系 今日のハイライト:確かめてみる
  49. 49. Aの固有値分解 A U[ ]+UT 式(4.12), (4.13)により行列Aが更新されたら は負の固有値を0で置き換える  ことを意味している [ ]+ 主成分分析で次元削減をしているのと 似たようなイメージ A = U UT のように固有値分解を行い、下記でAを更新する
  50. 50. アルゴリズム 【初期化】 近傍数 k, 係数 μ(通常0.5), ステップ幅の初期値 を与える ⌘0 とリーマン計量Aの初期値を置くA = IM 各クラスの標本数の不均衡がある場合は前処理で 是正しておく ブートストラップ法で見かけ上の標本数を増やす、 標本数が多いクラスから間引く、等
  51. 51. アルゴリズム A A ⌘ @ (A) @A … 最小化の更新式(A) 【反復】 A U[ ]+UT A = U UT … 固有値計算 … 負の固有値除外 下記を実行して都度収束判定を行い、収束するまで 繰り返し実行する。収束したらその時の行列 を出力する。 ステップ幅ηは毎回値を更新する A⇤
  52. 52. 4.2.4 確率モデルとの関係 p(x|x(n) , y(n) ) = 1 Zn(A, ) exp ⇢ 1 2 2 d2 A(x, x(n) ) 多変量正規分布の変形 任意の標本 の近傍に下記のような確率分布を考える。x(n) 積分して1にするため 尤度は Y i2N (n) 1 Zn(A, ) exp ⇢ 1 2 2 d2 A(x(i) , x(n) )
  53. 53. 4.2.4 確率モデルとの関係 全体の対数尤度は、データ数nの和をとり、 L(A|D) = 1 2 2 NX n=1 X i2N (n) d2 A(x(i) , x(n) ) kN ln Zn(A, ) Zn()を解析的に求めるのが難しいので、マージン制約を 取り込んでいたことが、最大マージン近傍法の一つの解釈
  54. 54. Fin

×