2016-04-05 15 views
1

私は、ガウス混合モデルをpythonを使って加重データポイントのセットに合わせたいと思います。python最小共分散を持つガウス混合モデル(GMM)を使用した加重データの適合

私はsklearn.mixture.GMM()を試しましたが、それはすべてのデータポイントに均等に重みを付けるという事実を除いては問題ありません。誰かがこの方法でデータポイントにウェイトを割り当てる方法を知っていますか?私はデータポイントを使って "重みを増やす"ことを数回試みましたが、これは大きなデータセットでは効果がないようです。

自分自身でEMアルゴリズムを実装することも考えましたが、これはたとえば上記のGMM方法を使用すると、大規模なデータセットの計算時間が非常に長くなります。

EMアルゴリズムcv2.EM()のopencvメソッドが見つかりました。これはうまくいきますが、sklearn.mixture.GMMと同じ問題があります。さらに、共分散に許容される値の最小値を変更する方法はないようです。あるいは共分散最小を例えば次のように変更する方法がある。 0.001?私はプローブパラメータを使ってデータに重みを割り当てることができると期待していましたが、これは単なる出力パラメータのようであり、フィッティングプロセスに影響を与えませんでしたか? probs0を使用し、trainMを使用してMステップでアルゴリズムを開始すると、どちらも役に立ちませんでした。 probs0については、データポイントの重み付けパラメータがデータポイントに対応する行に書き込まれている間に、カラムが同一の(データポイントの数)x(GMMコンポーネントの数)マトリックスを使用しました。これは問題を解決しませんでした。それはちょうどすべての意味で混合モデルになりました。

上記の方法を操作する方法を誰かが知っていますか、誰かがGMMに加重データを適用できるように別の方法を知っていますか?

おかげで、あなたはまだ解決策を探しているなら ジェーン

+0

GMMを簡単にサポートウェイトに拡張できます。おそらくこれの実装を変更する必要があります。私はELKIのようなJavaと一緒に行きます:純粋なPythonは遅すぎる、Cythonは簡単ではない、そしてCは多くのデバッグ経験が必要です。 Javaは簡単で性能はCよりわずかに悪くなりますが、「最小共分散」という意味はどうしてですか?なぜ共分散0が悪いのでしょうか?負の共分散はどうですか? –

+0

共分散は無限大の可能性を引き起こすので悪いです。したがって、確かに「正しい」解ではないとしても、平均が0の共分散を持つデータポイントのすぐ上に置かれるモデルは、最善の適合結果(最尤)を達成します何が望まれているのではなく、データを記述すること。さらに、結果を処理して投稿したいので、共分散の最小値を自分で決めることが良いでしょう。 – JaneD

+0

いいえ、あなたは分散しています。共分散は相関である。 –

答えて