ノンパラメトリッククラスタリングのPyMC:ガウス混合のパラメーターを推定するディリクレプロセスがクラスター化に失敗する
問題のセットアップ 私がPyMCに適用したい最初のおもちゃの問題の1つは、ノンパラメトリッククラスタリングです。いくつかのデータを指定して、ガウス混合としてモデル化し、クラスターの数と各クラスターの平均と共分散を学習します。この方法について私が知っていることのほとんどは、2007年頃のマイケルジョーダンとイーワイテによるビデオ講義(スパースが大流行する前)と、Fonnesbeck博士とE. Chen博士のチュートリアル[fn1]、[ fn2]。しかし、問題はよく研究されており、信頼できる実装がいくつかあります[fn3]。 このおもちゃの問題では、1次元ガウスから10回の描画を生成し、から40回の描画を生成します。以下に見られるように、どのサンプルがどの混合成分からのものであるかを簡単に見分けられるように、ドローをシャッフルしませんでした。N(μ = 4 、σ = 2 )N(μ=0,σ=1)N(μ=0,σ=1)\mathcal{N}(\mu=0, \sigma=1)N(μ=4,σ=2)N(μ=4,σ=2)\mathcal{N}(\mu=4, \sigma=2) 各データサンプルをに対してモデル化しここで、はこの番目のデータポイントのクラスターを示します。。ここでは、使用される切り捨てられたディリクレプロセスの長さです。私にとって、です。iは= 1 、。。。、50 、Z iは I Z I ∈ [ 1 、。。。、N D P ] N D P N D P = 50yi∼N(μzi,σzi)yi∼N(μzi,σzi)y_i \sim \mathcal{N}(\mu_{z_i}, \sigma_{z_i})i=1,...,50i=1,...,50i=1,...,50ziziz_iiiizi∈[1,...,NDP]zi∈[1,...,NDP]z_i \in [1,...,N_{DP}]NDPNDPN_{DP}NDP=50NDP=50N_{DP}=50 ディリクレプロセスインフラストラクチャを拡張すると、各クラスターIDはカテゴリ確率変数からのドローであり、その確率質量関数はスティック破壊コンストラクトによって与えられます: with for a濃度パラメータ。スティックブレイキングは、最初にに依存する iidベータ分布ドローを取得することにより、合計が1になる -longベクトル構築します。[fn1]を参照してください。そして、データに無知であることを知らせたいので、[fn1]に従い、 0.3、100)と仮定します。、Z I〜C A …