
15.6
階層を畳む
■
187
未知族の個数だけである。したがって、本当は、
n
個のディリクレオブジェクトを
必要としない。階層最上位にパラメータを保持できる。
Species2
は、この最適化
を実装している。
●
Species2
は、すべての仮説について同じランダム値集合を使ってもいる。これ
は、ランダム値を生成する時間を節約するが、より重要なことがわかるという利
点もある。すべての仮説にサンプル空間から同じ選択をすることで、仮説間の比
較をより公正にできるので、収束するまでの繰り返し回数が少なくなる。
●
これらの変更を施しても、性能上の大きな問題が残っている。観察した種の個
数が増えるにつれて、ランダム占有率の配列が大きくなり、近似的に正しい配列
を選ぶ機会が小さくなる。したがって、繰り返しのほとんど大半が小さな尤度し
か持たず、全体にあまり寄与せず、仮説間の差異も明らかにしない。解は、一
度に
1
つずつ種を更新することである。
Species4
はこの戦略の単純な実装で、
Dirichlet
オブジェクトを使って下位仮説を表している。
●
最後に、
Species5
が下位仮説を組み合わせて最上位にして、
numpy
配列演算を使っ
て速度を速める。
詳細に興味がなければ、おへそのデータからの結果を示した「15.9 おへそデータ」
の節まで飛ばしても構わない。
15.6
階層を畳む
最下位ディリクレ分布のすべては、同じデータで更新されるので、すべてについて
最初の
m
個のパラメータは同じである。それらを取り除いて、パラメー ...