読者です 読者をやめる 読者になる 読者になる

異常検知本の読書メモ Part 1

機械学習 異常検知

異常検知本を最近読み進めていたので、自分が知らなくて新しく勉強になったところのみメモ。

ホテリングの{T^{2}}法による異常検知

  • 異常度a(x)はマハラノビス距離で与えることができる
  • サンプル数Nが次元数Mより圧倒的に多い場合はa(x)は自由度M、スケール因子1のカイ二乗分布に従う
    • これによりカイ二乗分布で欲しい閾値(逆関数か対応表から)を決めておく
  • 「カイ二乗分布の分散は2Mであるため、精度よく異常検知をするためにはなるべく変数選択をするか部分集合毎にT^{2}を計算するのがよい」と書いてあってナルホド感があった

単純ベイズ法による異常検知

  • naive bayesのところまぁ知ってるので飛ばす
  • ベイズ決定則とネイマンピアソン決定則の関係のところは勉強になった
    • ベイズ決定則は異常判定を強く抑制する傾向にあるので、既存の二値分類の実装をあまり深く考えずに異常検知に使うと異常標本精度が非常に低くなってしまうため注意が必要

近傍法による異常検知

  • いわゆるkNNによる方法
  • 距離尺度をユークリッド距離を使うことが多いが、もう少し頑張りたいので計量学習(metric learning)を入れる
    • カーネルほどは自由にはできないけど、半正定値行列を間に挟んで距離を計算することにより空間をいい感じ(後述)に歪める
    • 計量学習で学習するのは半正定値行列
    • 計量学習の中でも安定した性能を出せるマージン最大化近傍法が紹介されている
  • 目的関数には以下の2つの観点が盛り込まれている
    • 同一ラベルの標本はなるべく密集するように
    • 異なるラベルの標本はなる
  • 書きくだすとSDPになる
    • 劣勾配法と固有値分解を繰り返していく
    • 固有値分解は何だ?と思ったけど、固有値が入っている行列Γの負のところを0に置き換えて半正定値に無理やりするという感じだった

混合分布モデルによる逐次更新型異常検知

  • いわゆる混合モデルのEM推定かと思って飛ばそうかと思ったけど、異常検知の設定に合わせるために古い観測点の重みは小さくするというものが入っていた
  • しかし、そうすると重み更新のときに(十分統計量だけでなく)全サンプルを持っておく必要があって、これは大変
  • 重み係数を(妥当そうな)特殊な形にすると、更新時にサンプルを覚えておく必要がなくなってよい
    • 更新式も元のEM推定の雰囲気が残っていてシンプルなままでいい感じに見える

サポートベクトルデータ記述法による異常検知

  • いわゆる1クラスSVM。正例のみから学習するやつかと勘違いしていたけど、完全に教師なしの設定だった
  • ある程度マージンを許した状態で全データがなるべく超球の中に入るように、というのがobjective
    • そのままだと大変なので、SVMと同じく双対問題にしてから解く
  • カーネルで非線形性ができるが、変換後の超球がどんな形になるか想像しにくいということもあって、あまりオススメではない雰囲気で書かれていたように感じる

ガウス過程回帰による異常検知

  • ガウス過程は関数の事前分布や事後分布を考えることができて、予測毎に予測分散等が動的に変わる性質を持っている
    • この値を越えたら異常!みたいな感じじゃなくて、値がでかくても分散が小さくて予測に自信があるやつは異常と見なさない、ということができる
  • 実験計画法への応用(応答局面法)が特に面白かった
    • 自動車の衝突実験のようにコストがかかるシミュレーションをなるべく少ない回数でやりたい
      • ここを変えれば改善が大きそう、というのを実験前に知りたい
    • ガウス過程回帰を逆に使ってやる。期待改善量が大きなものを探して次のシミュレーションで調べる
    • ガウス過程で予測分布が計算できるので、それを利用して点ごとの期待値計算に使ってる

参考

異常検知と変化検知 (機械学習プロフェッショナルシリーズ)

異常検知と変化検知 (機械学習プロフェッショナルシリーズ)