WBICによる混合正規信号の
分離と抽出
@TYM_circle10
2018/03/20
1
概要
■ 混合正規分布に従うデータから、元の分布を精密に抽出すること
を目指し実験を行った
■ 重畳した正規分布から作成したデータに対し、クラスタ(重畳分布)
数をBICとWBICでそれぞれ推定した
■ 推定されたクラスタ数に基づいて混合正規分布モデルを構築し、
変分ベイズ(ADVI)およびMCMC(NUTS)によりパラメータを推定し
た
 BICではクラスタ数を少なく見積もったのに対し、WBICでは正確
なクラスタ数を推定できた
 その後のパラメータ推定には課題が残った
2
1. 問題
3
問題
■ 正規分布に従う信号源があり、複数の信号源からの値が重畳した状況を
考える
– 観測されるデータは、混合正規分布から生成されると仮定できる
 より複雑な分布・モデルはlater work
■ クラスタ数の決定(モデル選択)→ パラメータ推定 の手順を踏む
– 論文に載せられる解析手順を踏む
– クラスタ数決定:一致性のある情報量規準(BIC, WBIC)による選択
– パラメータ推定:VB(ADVI), MCMC(NUTS)
4
使用したデータ
■ クラスタ数K=3の混合正規分布を考える
𝑦 ~
1
3
𝒩 10, 1.52
+ 𝒩 15, 1.02
+ 𝒩 17, 1.02
■ このGMMの各コンポーネントから、N=100点ずつのデータを生成する
5
使用したデータ
■ 実際に生成されたデータ(ヒストグラム)
– クラスタ数が K≧2 らしいことはわかる
– 右側の釣鐘型から重畳を判別するのは困難(2≦K≦5 ?)
6
使用したデータ
■ 実際に生成されたデータ(ヒストグラム)
– クラスタ数が K≧2 らしいことはわかる
– 右側の釣鐘型から重畳を判別するのは困難(2≦K≦5 ?)
7
2. 手法
8
BICの算出
■ mclustによる計算結果をそのまま使用
– 各クラスタの分散が異なるモデルを使用(modelNames=“V”)
– 検算として、flexmixによる推定値からもBICを計算(問題無かったため、以後登場しない)
 自動でクラスタが削除される仕様のため、引数にminprior=0を追加
9
WBICの算出 - (1)Stan
■ stanによりWBICを計算した。
– target記法により、逆温度 1/ log 𝑛 の事後分布からサンプリングを実行
– generated quantitiesブロックにて、事後分布の下での対数尤度値を取得
– stanスクリプトの外(Rスクリプト内で)WBICの算出を行う
10
WBICの算出 - (2)R [or Python]
■ WBICの定義式:逆温度βの事後分布 𝑝 𝛽(𝑤|𝒀) に対して、
𝔼 𝛽 𝑛𝐿 𝑛 = − 𝑝 𝛽 𝑤 𝒀 log
𝑛
𝑝 𝑌𝑛 𝑤 𝑑𝑤
■ Stan内で取得したのは、「各データ点𝑌𝑛での対数尤度log 𝑝 𝑌𝑛 𝑤 」を、 逆
温度1/ log 𝑛 の事後分布に従いサンプリングしたもの
したがって、
1. 全データについて足し合わせ、𝑛𝐿 𝑛 𝑤 = log 𝑛 𝑝 𝑌𝑛 𝑤 を得る
2. MCMCサンプルに関して平均を取り、𝔼1/ log 𝑛 [𝑛𝐿 𝑛(𝑤)] を近似する
ことでWBICの値が算出できる
11
3. 結果
12
モデル選択
■ 算出されたBICとWBICの値
 BICではクラスタ数K=2と誤推定に陥る
 一方WBICでは、真のモデルK=3を当てることができた
13
パラメータ推定(ADVI)
■ 真のモデル(K=3)でADVIによるパラメータ推定を試行すると…
クラスタ数が削減されている
 変分ベイズ(ADVI)では3つのクラスタを取得できない。
 モデル選択なしでは、K=3であったことすら特定不可能
 MCMC(NUTS)による推定に切り替える
14
パラメータ推定(NUTS)
■ VBに変えてNUTSで推定
– chain=4, iter=10000, warmup=8000
– EAPを採用すると
0.29𝒩 9.74, 1.622 + 0.25𝒩 13.70, 1.822 + 0.47𝒩(17.36,1.602)
15
抽出されたクラスタ
■ 真のモデル(分布)
𝒩 10.0, 1.502 , 𝒩 15.00, 1.002 , 𝒩 17.00, 1.002
■ 復元されたクラスタ(正規分布)
𝒩 9.74, 1.622
, 𝒩 13.70, 1.822
, 𝒩(17.36,1.602
)
16
補足.WBICの検算
17
WBICの検算
■ 前述の結果では、BICとWBICの値が乖離していた[p.13]
– 同じ量(自由エネルギー)を近似しているはず
– モデルの特異性によりBICが乖離した orWBICの計算ミス
■ クラスタ間を離したデータ(N=300)で再実験
𝑦 ~
1
3
𝒩 1, 1.52 + 𝒩 15, 1.02 + 𝒩 27, 1.02
■ BIC&WBIC値
– 概ね一致した値
– 前述の値のズレは
モデルの特異性由来
18
気になる点…K=2でのRhat
■ WBIC計算時、Rhat>1.1となるパラメータ数をカウントした
⇨ K=2の時のみ、Rhat>1.1となるパラメータが存在した
■ iterやburn-inを増やしても解決しない
■ また複数回実行しても、K≧3は全てRhat<1.1であった
– モデルの表現能力不足により、収束点が存在しない?
 自然なものなのか、解決策があるものかは分からず
19

WBICによる混合正規分布の分離と抽出