2

私はPRToolsMATLABライブラリーを使用して、いくつかの分類器をトレーニングし、テストデータを生成し、分類器をテストしています。

私は次の詳細を持っています:

  • N:テスト例の総数
  • k:各分類器とクラスの誤分類の数

私はやってみたいです:

誤分類の未知の確率(qで示される)のベイズ事後分布を計算してプロットします。つまり、確率密度関数がq自体に対して機能します(したがって、P(q)はqに対して0から1までプロットされます)。

私はそれを持っています(matlabコードではなく数式です!):

Posterior = Likelihood * Prior  / Normalization constant = 
P(q|k,N)  = P(k|q,N)   * P(q|N) / P(k|N)

事前確率は1に設定されているため、尤度と正規化定数を計算するだけで済みます。

尤度は次のように表すことができることを私は知っています(ここで、B(N、k)は二項係数です):

P(k|q,N) = B(N,k) * q^k * (1-q)^(N-k)

...したがって、正規化定数は、0から1までの上記の後部の積分にすぎません。

P(k|N) = B(N,k) * integralFromZeroToOne( q^k * (1-q)^(N-k) )

(二項係数(B(N、k))は、尤度定数と正規化定数の両方に表示されるため、省略できます)

さて、正規化定数の積分は一連のように計算できるはずだと聞きました...次のようなものです。

k!(N-k)! / (N+1)!

あれは正しいですか?(このシリーズの講義ノートはいくつかありますが、正規化定数積分用なのか、誤分類(q)の全体的な分布用なのかわかりません)

また、これを実際に計算する方法としてヒントを歓迎しますか?(階乗は簡単に切り捨てエラーを作成しますよね?)...そして、最終的なプロット(0から1までのqの事後分布)を実際に計算する方法。

4

2 に答える 2

1

私はベイズ事後分布を実際にはあまり行っていませんが(しばらくの間はありません)、あなたが与えたものを手伝うように努めます。初め、

k!(N-k)! / (N+1)! = 1 / (B(N,k) * (N + 1))

また、Matlabでnchoosek()を使用して二項係数を計算できますが、ドキュメントには大きな係数の精度の問題がある可能性があると記載されています。Nとkの大きさはどれくらいですか?

第二に、Mathematicaによると、

integralFromZeroToOne( q^k * (1-q)^(N-k) ) = pi * csc((k-N)*pi) * Gamma(1+k)/(Gamma(k-N) * Gamma(2+N))

ここcsc()で、は余割関数、Gamma()ガンマ関数です。ただし、Gamma(x)=(x-1)!これはすぐに使用します。問題は、下部に関数Gamma(kN)があり、kNが負になることです。ただし、反射式はそれを支援するので、最終的には次のようになります。

= (N-k)! * k! / (N+1)!

どうやら、あなたのメモは正しかった。

于 2010-05-25T23:57:01.850 に答える
0

q誤分類の確率とします。次に、実行でk誤分類が発生する確率は次のようになります。N

P(k | N、q)= B(N、k)q ^ k(1-q)^(Nk)

q次に、0と1の間に制限される適切な事前分布を仮定する必要があります。上記の共役事前分布はベータ分布です。その場合q ~ Beta(a,b)、後部もベータ分布です。あなたの情報のために後部は次のとおりです。

f(q |-)〜Beta(a + k、b + Nk)

お役に立てば幸いです。

于 2010-05-26T00:49:50.853 に答える