単純ベイズ法による異常検知 #ml-professional
-
Upload
ai-makabi -
Category
Data & Analytics
-
view
3.372 -
download
0
Transcript of 単純ベイズ法による異常検知 #ml-professional
異常検知と変化検知 単純ベイズ法による異常検知機械学習プロフェッショナルシリーズ輪読会 #6
@a_macbee / 2015-10-07
第三章: 単純ベイズ法による 異常検知
について学んでいきます
3.1 多次元の問題を1次元に 帰着する
この章では多次元の問題について考える
この章では多次元の問題について考える多次元の異常検知問題の例:スパムメール検知
メール文章中の各単語の 出現頻度情報を利用して スパム (=異常) か判定
{ こんにちは: 1, お得: 0, … } → 普通のメール ( 正常 ) { こんにちは: 0, お得: 10, … } → スパムメール ( 異常 )
この章では多次元の問題について考える多次元の異常検知問題の例:スパムメール検知
メール文章中の各単語の 出現頻度情報を利用して スパム (=異常) か判定
単語の種類数が次元数に相当する
{ こんにちは: 1, お得: 0, … } → 普通のメール ( 正常 ) { こんにちは: 0, お得: 10, … } → スパムメール ( 異常 )
{ こんにちは: 1, お得: 0, … } → 普通のメール ( 正常 ) { こんにちは: 0, お得: 10, … } → スパムメール ( 異常 )
{ こんにちは: 1, お得: 0, … } → 普通のメール ( 正常 ) { こんにちは: 0, お得: 10, … } → スパムメール ( 異常 )
x(1) = { x1(1), x2(1), … xM(1)} → 0 = y(1) x(2) = { x1(2), x2(2), … xM(2)} → 1 = y(2) … x(N) = { x1(N), x2(N), … xM(N)} → 0 = y(N)
正常:y = 0 異常:y = 1
{ こんにちは: 1, お得: 0, … } → 普通のメール ( 正常 ) { こんにちは: 0, お得: 10, … } → スパムメール ( 異常 )
x(1) = { x1(1), x2(1), … xM(1)} → 0 = y(1) x(2) = { x1(2), x2(2), … xM(2)} → 1 = y(2) … x(N) = { x1(N), x2(N), … xM(N)} → 0 = y(N)
( 1.1 )
正常:y = 0 異常:y = 1
M次元のラベル付き異常値検出問題
何が難しいのか?
{ こんにちは: 1, お得: 0, … } → 普通のメール ( 正常 ) { こんにちは: 0, お得: 10, … } → スパムメール ( 異常 )
x(1) = { x1(1), x2(1), … xM(1)} → 0 = y(1) x(2) = { x1(2), x2(2), … xM(2)} → 1 = y(2) … x(N) = { x1(N), x2(N), … xM(N)} → 0 = y(N)
( 1.1 )
正常:y = 0 異常:y = 1
「変数がたくさんあって手に負えない」 = Mの次元数が増えると辛い
( 1.2 )
そんなときの 単純ベイズ法(a.k.a ナイーブベイズ法)
単純ベイズ法ベイズの定理に従い事後確率が最大になる y に分類 ( 今回の例の場合,y は 0 or 1,x は M次元のベクトル)
単純ベイズ法ベイズの定理に従い事後確率が最大になる y に分類 ( 今回の例の場合,y は 0 or 1,x は M次元のベクトル)
ここで,M次元の変数それぞれが独立であると仮定 → ナイーブ 尤度を各パラメータ毎の尤度の積で書ける
( 3.1 )
単純ベイズ法ベイズの定理に従い事後確率が最大になる y に分類 ( 今回の例の場合,y は 0 or 1 )
ここで,M次元の変数それぞれが独立であると仮定 → ナイーブ 尤度を各パラメータ毎の尤度の積で書ける
( 3.1 )
異常度の計算に使います
( 1.2 )
「統計的に独立」 って何が嬉しいの?
深ぼってみる
尤度を最尤推定の枠組みで考える 1/2
( 3.1 )
尤度を最尤推定の枠組みで考える 1/2
( 3.1 )
対数尤度で考える 未知パラメータを含む形で明示的に書く
( 3.2 )
尤度を最尤推定の枠組みで考える 1/2
( 3.1 )
対数尤度で考える 未知パラメータを含む形で明示的に書く
( 3.2 )
今回の例の場合,多項分布 となるため (※後述), i 番目の語の出現確率D1はy(n)=1となる標本の集合
尤度を最尤推定の枠組みで考える 2/2
未知パラメータ毎に微分して 0 になる点が 最尤解を与える ※1 θに拘束条件がないと仮定
変数ごと,yごとに問題が切り分けられる!
( 3.2 )
変数が統計的に独立な場合の最尤推定
式 (3.1) のように変数ごとに積の形となっている場合,M変数のそれぞれに対して別々に最尤推定することで,モデルのパラメータを求めることができる
定理 3.1
( 3.1 )
[章3.1] まとめ
まとめ 1/2
• 多次元の問題について考えるにあたり,単純ベイズ法の考え方を導入した
まとめ 1/2
• 多次元の問題について考えるにあたり,単純ベイズ法の考え方を導入した
• 変数が統計的に独立であると仮定して,尤度は各パラメータの積で与えられる
( 3.1 )
まとめ 1/2
• 多次元の問題について考えるにあたり,単純ベイズ法の考え方を導入した
• 変数が統計的に独立であると仮定して,尤度は各パラメータの積で与えられる
( 3.1 )
異常度の計算に使います
( 1.2 )
まとめ 2/2
• M変数のそれぞれについて最尤推定することで,モデルのパラメータを求められる (定理 3.1)
• ここでは,単純ベイズ法は各変数が独立だとみなすモデリング手法を異常度に適用したもの・・・と考えてOK
( 3.2 )
まとめ 2/2
• M変数のそれぞれについて最尤推定することで,モデルのパラメータを求められる (定理 3.1)
• ここでは,単純ベイズ法の各変数が独立だとみなすモデリング手法を,異常度計算に適用した
( 3.2 )
まとめ 2/2
• M変数のそれぞれについて最尤推定することで,モデルのパラメータを求められる (定理 3.1)
• ここでは,単純ベイズ法の各変数が独立だとみなすモデリング手法を,異常度計算に適用した
( 3.2 )
今回の例の場合,多項分布 となるとしてたけど・・・ 多項分布って何だっけ?
多項分布による単純ベイズ分類 について深掘る
3.3 多項分布による 単純ベイズ分類
多項分布:頻度についての分布頻度を集計したベクトル x について,x の出方を表す確率分布
( 3.6 )
条件:
多項分布:頻度についての分布頻度を集計したベクトル x について,x の出方を表す確率分布
( 3.6 )
条件:
各メールを文章中の単語の集まりで表す x = ( うれしい, がっかり, 値段, … )
各単語の頻度を単語ごとに集計
メールを単語の袋詰で表現する Bag-of-Wordsモデル
多項分布:頻度についての分布頻度を集計したベクトル x について,x の出方を表す確率分布
( 3.6 )
条件:
各単語の出現確率
各単語の 出現確率の和は1
単語の総数の階乗をAとすると
多項分布:頻度についての分布頻度を集計したベクトル x について,x の出方を表す確率分布
( 3.6 )
条件:
改めて対数尤度関数をみてみると・・・
( 3.2 )
改めて対数尤度関数をみてみると・・・
( 3.2 )
y=0と1に対応して Mult(x|θ0)とMult(x|θ1)のモデルを仮定 θ0とθ1を最尤推定する
( 3.7 )
※ (定数) は未知パラメータに関係しない定数
改めて対数尤度関数をみてみると・・・
( 3.2 )
y=0と1に対応して Mult(x|θ0)とMult(x|θ1)のモデルを仮定 θ0とθ1を最尤推定する
( 3.7 )
ただし,次の制約を満たすこと:
この対数尤度関数を最大化する
制約をラグランジュの未定乗数で取り入れると以下の通リ書ける
束縛条件最大化したい関数
整理すると以下の通リ書ける
よく出現する単語ほど出現確率が 高く見積もられる
( Dyにおける単語 i の出現総数 )=Niy
( Dyにおける全単語の出現総数 )=|Dy|
整理すると以下の通リ書ける
( Dyにおける単語 i の出現総数 )=Niy
( Dyにおける全単語の出現総数 )=|Dy|
よく出現する単語ほど出現確率が 高く見積もられる
一度も出現しない単語をゼロ扱いするのは都合が悪い → スムージングする
γ > 0 としてゲタを履かせる
多項分布のパラメータを 求めることが出来た!
求めたパラメータを利用して 異常値検出をしよう
異常値検出: スパムメール検出
( 3.9 )
( 1.2 )
求めた多項分布の式を代入 係数ベクトルα
→ 線形分類器の 形になっている
[章3.3] まとめ
まとめ 1/3
• 確率分布が多項分布である場合の単純ベイズ法について考える
• 例えばメールのBag-of-Wordsの表現は多項分布にあたる
( 3.6 )
まとめ 2/3
• 確率分布を多項分布とした場合の最尤推定→ よく出現する単語ほど出現確率が高く見積もられる
ゲタを履かせる → スムージング
まとめ 3/3
• 求めた最尤値を利用して異常度を計算できる
• 異常度は本質的には線形分類器になっている
3.4 最大事後確率推定と 多項分布のスムージング
未知パラメータの事前分布
• 未知パラメータに常識的な想定を込めた事前分布を導入 → 多項分布の場合は「ディリクレ分布」
定数 αi > 0 を設定 (αnを無限とおくとn次元目の単語は必ず出現すると想定している)
( 3.10 )
未知パラメータの事前分布
• 未知パラメータに常識的な想定を込めた事前分布を導入 → 多項分布の場合は「ディリクレ分布」
定数 αi > 0 を設定 (αnを無限とおくとn次元目の単語は必ず出現すると想定している)
最大事後確率推定でモデルを推定する
( 3.10 )
定義 3.1: 最大事後確率推定
• データDを与えたときのパラメータθの尤度を p(D|θ) とする.また,θの事前分布を p(θ) とする.このとき,最適パラメータθ* を
により選ぶ方法を,最大事後確率推定もしくは MAP推定と呼ぶ.
( 3.12 )
定義 3.1: 最大事後確率推定
• データDを与えたときのパラメータθの尤度を p(D|θ) とする.また,θの事前分布を p(θ) とする.このとき,最適パラメータθ* を
により選ぶ方法を,最大事後確率推定もしくは MAP推定と呼ぶ.
( 3.12 )
尤度と事前分布の積を最大化するθ → 事後分布を最大化するθ
最大事後確率推定を利用してθを求める
[ 事前分布 ] 未知パラメータθ0とθ1はお互い独立
最大事後確率推定を利用してθを求める
[ 事前分布 ] 未知パラメータθ0とθ1はお互い独立
( 3.12 )
( 3.7 )
最大事後確率推定を利用してθを求める
[ 事前分布 ] 未知パラメータθ0とθ1はお互い独立
( 3.12 )
( 3.7 )
のように変更するだけ
最大事後確率推定を利用してθを求める
[ 事前分布 ] 未知パラメータθ0とθ1はお互い独立
( 3.12 )
[ 対数尤度関数 ]
( 3.13 )
上記の対数尤度関数をラグランジュ未定乗数を用いて素朴に微分
( 3.13 )
( 3.14 )
上記の対数尤度関数をラグランジュ未定乗数を用いて素朴に微分
( 3.13 )
( 3.14 )
( 3.8 )αをγ+1と置く →
[章3.4] まとめ
まとめ 1/2
• 未知パラメータの事前分布を考える
• 多項分布のモデル推定をするため,ディリクレ分布を事前分布として導入
• 事前分布を考慮して最大事後確率推定を行う
( 3.10 )
( 3.12 )
まとめ 2/2
• 事前分布を含んだ対数尤度関数をラグランジュ未定乗数法で解き,未知パラメータの最適化を得る
( 3.13 )
( 3.14 )
3.5 二値分類と 異常検知の関係
ベイズ決定則
以下を満たす場合 y = 1 と判定
( 3.15 )
全体の誤り確率を最小にする最適な判別規則
p(y=1|x) と p(y=0|x) を計算してみて,大きい方を選ぶ
ベイズ決定則
以下を満たす場合 y = 1 と判定
( 3.15 )
全体の誤り確率を最小にする最適な判別規則
p(y=1|x) と p(y=0|x) を計算してみて,大きい方を選ぶ
と比較
任意の標本 x が与えられたときにそれを y=0 または y=1 のいずれかに分類する.その判定規則は以下の通リ与える:
任意の標本 x が与えられたときにそれを y=0 または y=1 のいずれかに分類する.その判定規則は以下の通リ与える:
誤り確率を最小にするように a(x) と τ を決めたい
任意の標本 x が与えられたときにそれを y=0 または y=1 のいずれかに分類する.その判定規則は以下の通リ与える:
訓練データに基づいて,あるいは勘と経験で p(x) と p(y|x) が求められていたとすると・・・
任意の標本 x が与えられたときにそれを y=0 または y=1 のいずれかに分類する.その判定規則は以下の通リ与える:
訓練データに基づいて,あるいは勘と経験で p(x) と p(y|x) が求められていたとすると・・・
[ 誤り確率 ]
( 3.16 )
任意の標本 x が与えられたときにそれを y=0 または y=1 のいずれかに分類する.その判定規則は以下の通リ与える:
訓練データに基づいて,あるいは勘と経験で p(x) と p(y|x) が求められていたとすると・・・
[ 誤り確率 ]
条件を満たすと y=1であると判別
p(y=0|x)p(x)をxについて積分 → y=0となる確率
y=0であると判別
y=1となる確率
※指示関数 I[・]:中身が真のときに 1,そうでないときに 0
( 3.16 )
任意の標本 x が与えられたときにそれを y=0 または y=1 のいずれかに分類する.その判定規則は以下の通リ与える:
訓練データに基づいて,あるいは勘と経験で p(x) と p(y|x) が求められていたとすると・・・
[ 誤り確率 ]
( 3.16 )( 3.17 )
この誤り確率を最小にしたい
この誤り確率を最小にしたい
p(y=1|x) > p(y=0|x) の場合に {・} は負となる
{・} の中が負となる場合を拾えれば良い
この誤り確率を最小にしたい
p(y=1|x) > p(y=0|x) の場合に {・} は負となる
{・} の中が負となる場合を拾えれば良い
とおけば良い
この誤り確率を最小にしたい
p(y=1|x) > p(y=0|x) の場合に {・} は負となる
{・} の中が負となる場合を拾えれば良い
とおけば良い
実際にはlogをとってる
この誤り確率を最小にしたい
p(y=1|x) > p(y=0|x) の場合に {・} は負となる
{・} の中が負となる場合を拾えれば良い
とおけば良い
ベイズ決定則
以下を満たす場合 y = 1 と判定
( 3.15 )
全体の誤り確率を最小にする最適な判別規則
p(y=1|x) と p(y=0|x) を計算してみて,大きい方を選ぶ
ベイズ決定則
以下を満たす場合 y = 1 と判定
( 3.15 )
全体の誤り確率を最小にする最適な判別規則
p(y=1|x) と p(y=0|x) を計算してみて,大きい方を選ぶ
ネイマン・ピアソン決定則に よく似ている
ベイズ決定則とネイマン・ピアソン決定則を比較
• ネイマンピアソン決定則p(x|y=1)とp(x|y=0)の比がある閾値を超えたら以上と判定
• ベイズ決定則p(x|y=1)p(y=1)とp(x|y=0)p(y=0)の比が1を超えたら以上と判定
ベイズ決定則とネイマン・ピアソン決定則を比較
• ネイマンピアソン決定則p(x|y=1)とp(x|y=0)の比がある閾値を超えたら以上と判定
• ベイズ決定則p(x|y=1)p(y=1)とp(x|y=0)p(y=0)の比が1を超えたら以上と判定
p(y=1) << p(y=0) なので, 異常判定を強く抑制している
= 二値分類器を使って異常検知するのは注意が必要
[章3.5] まとめ
まとめ
• 二値分類で一般的に使われるベイズ則をとりあえげた
• ベイズ則は異常判定を強く抑制する傾向にあるため,利用する際には注意が必要
以下を満たす場合 y = 1 と判定
( 3.15 )
3.2 独立変数モデルのもとでの ホテリングのT2法
独立変数モデルをラベルなしデータに適用
ホテリングのT2法を例として挙げる
( 3.3 )
※ x はM次元
※ 共分散行列の非対角成分を0とおいている
独立変数モデルをラベルなしデータに適用
ホテリングのT2法を例として挙げる
( 3.3 )
※ x はM次元
※ 共分散行列の非対角成分を0とおいている
この場合も定理3.1は成り立つ
(※途中計算省略) 最尤推定で以下の解が得られる
( 3.4 )
一次元の標本平均と分散に一致
(※途中計算省略) 最尤推定で以下の解が得られる
一次元の標本平均と分散に一致
[ 異常度 ]
( 3.4 )
( 3.5 )
M個の変数それぞれの異常度の和※異常度計算についてはp.18の流れを参照
(※途中計算省略) 最尤推定で以下の解が得られる
一次元の標本平均と分散に一致
[ 異常度 ]
( 3.4 )
( 3.5 )
M個の変数それぞれの異常度の和
・面倒な行列計算が不要で,変数同士の独立性がよく成り立つ のであれば実用上有用 ・独立性がなりたたない場合もおおまかな異常度を見積もれる
(a) 変数間に相関がない (b) 変数間に線形相関がある
変数間の相関と異常判定に与える影響
(a) 変数間に相関がない (b) 変数間に線形相関がある
変数間の相関と異常判定に与える影響赤い四角=正常と判定される範囲 範囲は変数毎に決まる
(変数間に線形相関がある場合) 変数個々に見ている限りは,異常判定の枠が不当に大きくなる傾向にある
(a) 変数間に相関がない (b) 変数間に線形相関がある
変数間の相関と異常判定に与える影響赤い四角=正常と判定される範囲 範囲は変数毎に決まる
(変数間に線形相関がある場合) 変数個々に見ている限りは,異常判定の枠が不当に大きくなる傾向にある → 後の章で相関がある場合の異常検知について扱う
[章3.2] まとめ
まとめ
• 独立変数モデルはラベルなしデータにも使える
• ホテリングのT2法を例として挙げた
• 異常度はM個の変数それぞれの異常度の和として表せる
• しかし,変数間に相関がある場合,異常判定の枠が不当に大きくなる傾向にあるので注意が必要
( 3.5 )