プロが教える店舗&オフィスのセキュリティ対策術

ノンパラメトリックベイズの初心者です。書籍「続わかりやすいパターン認識」の第12章のp260~261のクラスタリング法1のアルゴリズムの実装に関して何点か質問があります。この当たりについてご経験のある方のアドバイスをお願い致します。
(1)Step2ですが、p259の式(12.14)についてですが、これは式上段の現クラスタ数cの事後確率と式下段の新規での事後確率(1個)を計算して、その中でその値が一番大きいものをSk(所属クラスタ)として採用するという理解でいいでしょうか?
(2)Step3のθiを確率的に決定し、更新する方法がいまいちよく分かりません。これは(1)で所属クラスタが決定すれば、その情報に合わせて各クラスタごとにθiの値を計算し直せばいいと思うのですが、その場合p259の式(12.15)の各クラスタの事後分布を使ってどのような計算を行えばいいのかがよく分かりません。たとえば、θ1 = a, θ2 = b, p(θ1|xk∈ω1) = A, p(θ2|xk∈ω2) = Bが求まったとしてどのような計算を行えばいいのでしょうか?また、A、Bの値は実際にはp269の式(12.37)を計算することになりますが、これらの値は既に正規化されていると思っていいのでしょうか?(A/(A+B)のようなものを計算しなくてもよい。)
(3)p259の注釈(10)ですが、初回の1回目を実行してみたところ、所属クラスタは初期設定したものと同じという結果になってしまいました。この場合は、このクラスタはパターンの増減がなかったので、式(12.15)は計算しなくてよいのでしょうか?また、新規クラスタでの式(12.15)はパターン1個のみで行うと書いてありますが、これは具体的にどのような計算をすればいいのでしょうか?
(4)p267のウィッシャート分布Wですが、1回目の計算が終わった段階で、分母の2^(νd/2)はd=2で、p269の式(12.37)、式(12.42)によりμc=15 + 500=515でかなり大きな数になってしまうようなのですが、一般的に式(12.30)はそのまま計算できるものなのでしょうか?それとも比を取るなどして計算できるように(値が発散してしまわないように)工夫する必要があるのでしょうか?

たくさん書いてしまいましたが、ノンパラメトリックベイズは是非習得したいと思っているので、御経験のある方、是非ご教示願えればと思います。

質問者からの補足コメント

  • No.1さんのMH法も後でやってみようと思うのですが、ご指摘の、この書籍に出ているギブスサンプリングで実行した場合、1回目の繰り返し(c=上段=1、下段=1)の時にp259の式(12.14)の上段と下段の確率が500個ずつ計算できたとしてこの後、どんな計算を行えばよいのでしょうか?

    No.2の回答に寄せられた補足コメントです。 補足日時:2017/06/11 22:54
  • (2)で私がよく分かっていないのは、(1)の計算結果で500個の所属クラスタが決まるので、その決まったクラスタ内でθ(μとΣ)を計算し直せばいいような気もするのですが、θも(1)と同様にp259の式(12.15)から確率的にサンプリングしてやらないといけないということなのでしょうか?後、確認ですが、ここで言っているθはこの書籍の下付き添字のθですよね。(上付き添字のθではない)

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/06/11 23:18
  • サンプリングの経験がほとんどないので教えていただきたいのですが、(1)の質問でp259の式(12.14)で、下段の積分の式はp269の式(12.35)で計算できるので、上段と下段の具体的な値が計算できるので、例えばc=1(上段が1個の場合)、
    A (上段)= 9
    B (下段)= 1
    とした場合、
    a(Aの確率) = A / (A+B) = 0.9
    b (Bの確率)= B / (A+B) = 0.1
    となるので、threshold = 0.9
    として、pythonのnumpy.random.uniform()
    で、0 ≦ x < 1 の値をランダムに発生させて、
    x < threshold の場合、A
    x > threshold の場合、B
    という様に選択(3個以上も同様に処理する)していっていいのでしょうか?

    No.3の回答に寄せられた補足コメントです。 補足日時:2017/06/13 14:01

A 回答 (4件)

(1) 違います。


c個のクラスタ全てについて(12.14)式の上段の式を計算し、また、式下段の新規での事後確率(1個)を計算して、c+1個の確率の比に応じてskをどこにするかランダムに決めるということです。

(2) 質問の意味がよくわかりません。どこかで勘違いがあるような気がします。
Step 3は、(12.15)式によって定まるθiの事後分布から、ランダムにサンプリングして、それを新しい θi にする、ということです。

(3) 単純に、(12.15)式で、クラスタωi に属するxkが1個だけ、つまり、ωi = {xk} とすればいいわけで、具体的に書けば、
p(θi |{xk}) = G0(θi)*p(xk|θi) / ∫{G0(θi)*p(xk|θi)}dθi
です。

(4) 式(12.37)のθiの事後分布からサンプリングするのは簡単にはできないので、普通は、このサンプリングもMCMC(MH法など)を使ってやります。
基本的にMCMCであれば、確率密度関数の比させとれればよいわけで、正規化する必要はありません。したがって、式(12.30)の分母は計算する必要はありません。
また、基本的には、確率密度関数そのものではなくて、その対数をとったものを使って計算するので、ちょっとくらい、べき乗の数が大きくなっても問題なく計算できます。
この回答への補足あり
    • good
    • 0

そういえば、この質問ではなくて、前の凸クラスタリングに関する質問についてですが、


本で、線が太くなっているのは、併合したクラスタを(意図的に)太い線で描いているわけではなくて、
併合する前の各クラスタを全て同じ太さの線で描いてあるだけだと思いますよ。太い線のように見えているのはほ中心位置がほとんど同じ(併合するべき)複数のクラスタがあって、線が重なっているためです。
    • good
    • 0
この回答へのお礼

図には、併合したセントロイドは示されていないので、おっしゃる通りだと思います。
ご丁寧にありがとうございます。

お礼日時:2017/06/13 14:15

>(2)で私がよく分かっていないのは、(1)の計算結果で500個の所属クラスタが決まるので、その決まったクラスタ内でθ(μとΣ)を計算し直せばいいような気もする



そうですよ。まさに、それをやっているのがStep2です。ただし、ここでは、ギブスサンプリングをしているので、各xkの所属クラスタが決まっても、θは一意に決まるわけではなくて、事後分布からサンプリングしないといけません。下付きのθです。

>No.1さんのMH法も後でやってみようと思うのですが、

全体の枠組みは、本に書かれている通り、ギブスサンプリングですよ。
#1で、MH法を使うと書いたのは、(12.37)式で表されるθiの事後分布からのサンプリングについてです。もちろん、確率密度関数が明にわかっているわけで、MCMCを使わないでも、逆関数法などで直接サンプリングすることも原理的には不可能ではないですが、現実的には大変でしょう。
あるいは、(12.37)式の確率密度関数を、なんらかのサンプリングが簡単な確率分布(混合正規分布など)で近似して、そこからサンプリングする、というのも考えられます。
この回答への補足あり
    • good
    • 0

企業で統計を推進する立場の者です。



#1さんが完璧ともいえる回答をしていますが、
一点補足です。

ノンパラベイズは、主に離散値が対象なので、
MCMCの場合のサンプリングは、
メトロポリス・ヘイスティング(MH)よりはむしろ、
・チャイニーズ・レストラン・プロセス
・スティック・ブレーキング・プロセス
が使用されます。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!