問題タブ [mixture-model]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
8637 参照

matlab - トレーニング済み混合ガウス モデルを使用した新しいデータのラベル付け

トレーニング済みガウス混合モデル (GMM) を使用して新しいデータの予測を行う方法がわかりません。たとえば、3 つの異なるクラス (クラスター) から抽出されたラベル付きデータをいくつか取得しました。データ ポイントのクラスごとに、GMM (gm1、gm2、および gm3) を当てはめます。各クラスの混合ガウスの数 (例: k1=2、k2=1、k3=3) がわかっているか、赤池情報量基準 (AIC) を使用して推定 (最適化) できるとします。次に、新しいデータセットを取得したときに、それがクラス 1、2、または 3 に属する可能性が高いかどうかをどのように知ることができますか?

一部の Matlab スクリプトは、私が何を意味するかを示しています。

図を取得できます。

訓練されたGMM

次に、たとえば次のような新しいテスト データを取得しました。

試験データ

テストデータは意図的にクラスタ 2 のデータに似せて作成しました。GMM を使用してトレーニングを行った後、どうにかして新しいテスト データのラベルを予測できますか? 各クラスの予測について、(p1 = 18%、p2 = 80%、p3 = 2%) のような確率を出すことは可能ですか。p2=80% を得たので、新しいテスト データがクラスター 2 としてラベル付けされるというハード分類を行うことができます。

ps: この投稿を見つけましたが、私には理論的なようです(同様の投稿)。できれば、返信に簡単な Matlab スクリプトをいくつか入れてください。

どうもありがとう。A.


編集:

Amro が問題の解決策を回答したので、さらに質問があります。

  1. Amro は、初期化を行ったデータセット全体を使用して新しい GMM を作成しました。

    アムロが得たものは以下のようなものです

    アムロの結果

    これは、ラベル付けされたクラスター 1 と、クラスター 1 の一部と混合されたクラスター 2 を分離するため、私のデータには適していない可能性があります。これは私が避けようとしているものです。

    ここで提示するのは人工的な数値例です。ただし、私の実際のアプリケーションでは、画像のセグメンテーションの問題を処理します (たとえば、cluster1 が背景画像で、cluster2 が分離したいオブジェクトです)。次に、個別の GMM を個別のクラスに適合させるために何らかの方法で「強制」しようとします。2 つのクラスターが離れている場合 (たとえば、この例のクラスター 1 とクラスター 3)、アムロの方法を使用してすべてのデータを結合し、GMM フィッティングを実行しても問題はありません。ただし、画像データでトレーニングを行う場合、解像度の制限により、オブジェクトから背景を完全に分離することはできません (部分的なボリューム効果が発生します)。したがって、示されているように、cluster1 が cluster2 とオーバーラップしている可能性が非常に高くなります。

    しかし、少し考えた後、私が今やろうとしていることは次のとおりです。

    皆さんはどう思いますか?それともアムロの方法と同等ですか?もしそうなら、訓練されたGMMを強制的に分離する方法はありますか?

  2. また、関数を使用する理由について質問がありposteriorます。基本的に、GMM フィッティングを考慮して、テスト データの可能性を推定したいと考えています。では、なぜ今事後確率を計算するのでしょうか? それとも単なる命名の問題ですか (つまり、「事後確率」=「可能性」)?

  3. 私の知る限り、GMM は常に教師なしの方法として使用されてきました。GMM は k-means クラスタリングの確率バージョンであると誰かが私に言いました。そのような「監視された」スタイルで使用する資格はありますか? 推奨される論文や参考文献はありますか?

返信ありがとうございます。A.

0 投票する
1 に答える
1153 参照

matlab - GMM反復からクラスターにラベルを付ける方法は?

ガウス混合モデルの概念を理解するから GMM の概念を読みました。それは私にとって役に立ちます。fisheriris にも GMM を実装しましたが、fitgmdist 関数がなかったので使用しませんでした。そこで、 http://chrisjmccormick.wordpress.com/2014/08/04/gaussian-mixture-models-tutorial-and-matlab-code/のコードを使用しました。

私がガウス混合モデルの理解の概念を読んだとき、アムロは結果をそのラベル、つまりsetosa、virginica、およびversicolorでプロットできました。彼はどうやってそれをしたのですか?何度か繰り返した後、mu、Sigma、および weight のみが得られました。ラベルは一切ありません。GMM イテレーションの混合モデルにラベル (setosa、virginica、versicolor) を付けたいと考えています。

0 投票する
2 に答える
1009 参照

python - ガウス混合モデルからのベクトルの一部のサンプリング

平均値と共分散行列によって与えられるガウス分布の合計から、ベクトルの一部の要素のみをサンプリングしたいと考えています。

具体的には:

ガウス混合モデル (GMM) を使用してデータを代入しています。私は次の手順とsklearnを使用しています:

  1. 平均で代入する
  2. GMM を使用して平均と共分散を取得します (たとえば、5 つのコンポーネント)
  3. サンプルの 1 つを取り、欠損値のみをサンプリングします。他の値は同じままです。
  4. 数回繰り返す

これには2つの問題があります。(A) ガウスの合計からどのようにサンプリングするか、(B) ベクトルの一部のみをサンプリングする方法。両方同時に解決できると思います。(A) については、棄却サンプリングまたは逆変換サンプリングを使用できますが、numpy で多変量正規分布ジェネレーターを利用するより良い方法があると感じています。または、他の効率的な方法。(B) の場合、サンプル変数に、サンプルからの既知の値を引数として持つガウス分布を乗算するだけです。右?

私はPythonでの解決策を好みますが、アルゴリズムまたは疑似コードで十分です。

0 投票する
1 に答える
9713 参照

normalization - 精度に対する特徴スケーリングの影響

ガウス混合モデルを使用した画像分類に取り組んでいます。3 つのクラスに属する約 34,000 のフィーチャがあり、すべて 23 次元空間にあります。さまざまな方法を使用して、トレーニング データとテスト データの両方で特徴のスケーリングを実行しましたが、スケーリングの実行後に精度が実際に低下することがわかりました。多くの機能間で多くの次数の違いがあったため、機能のスケーリングを実行しました。なぜこれが起こっているのか知りたいのですが、特に機能の大きな違いを考えると、機能のスケーリングにより精度が向上すると思いました。

0 投票する
1 に答える
435 参照

matlab - ガウス混合モデルによる色分布の推定

画像があり、ガウス混合モデルによって入力画像の色分布を推定したいのですが、Matlab でどのように行うことができますか?

gmdistribution.fit(X,k)X は 2D マトリックスでなければならず、myImage は 3D マトリックスであるため、私にはうまくいきgmdistribution.fit(myImage,10)ません。

gmdistribution.fit(myImage(:,:,1),10)画像の赤色に使用すると、次のエラーが発生します。

そして私が使用するとき: gmdistribution.fit(single(myImage(:,:,1)),10)私はこのエラーを出します:

ガウス混合モデルを使用した画像セグメンテーションにこれを使用したいと考えています。何か考えがあれば、私を助けてください。

0 投票する
1 に答える
275 参照

matlab - GMM 学習のための EM 実装での空のコンポーネントの処理

MATLAB でゼロから EM を使用してガウス混合モデルの学習を実装しようとしています。このプロジェクトでは、後で標準の GMM モデルにいくつかの変更を加える必要があります。そのため、私は VLFeat や Stats Toolbox などの市販の実装を使用していません。実装のロールアウトは学習体験であり、後で簡単にカスタマイズできます。

具体的には、球面共分散を持つ GMM の EM をコーディングします。

  1. 空のクラスターの処理。GMM の一部のコンポーネントにデータが割り当てられていない場合の処理​​に問題があります。それらの事後確率質量はゼロまたは無視できます。このケースは、多数のクラスターが定義されている場合に発生します。このケースを処理する標準的な方法は何ですか?

  2. 直感的に、共分散が最も高いコンポーネントを選択し、そのデータの半分を空のコンポーネントに割り当てます。

私の質問は次のとおりです: EM 実装でこれを処理する標準的かつ原則的な方法はありますか (Google 経由で見つけることができませんでした)。

0 投票する
0 に答える
215 参照

cluster-analysis - クラスタリングと混合モデルのフィッティング

クラスタリング方法と同じデータを分布に適合させる方法について質問があります。

2 つの特徴 (feat_A と feat_B) を持つデータセットがあると仮定し、クラスタリング アルゴリズムを使用してデータを最適な数のクラスターに分割すると仮定しましょう...たとえば 3.

私の目標は、各入力データ [feat_Ai,feat_Bi] に、ポイントがクラスター 1 2 3 に属する確率 (または類似のもの) を割り当てることです。

を。クラスタリングによる最初のアプローチ:

3 つのクラスター内のデータをクラスター化し、クラスターの中心からの距離に応じてクラスターに属する確率を各ポイントに割り当てます。

b. 混合モデルを使用した 2 番目のアプローチ:

混合モデルまたは混合分布をデータに当てはめます。データは、期待値最大化 (EM) アルゴリズムを使用して分布に当てはめられます。EM アルゴリズムは、各観測値に関する各成分密度に事後確率を割り当てます。クラスタは、事後確率を最大化するコンポーネントを選択することによって割り当てられます。


私の問題では、データのサブサンプルでクラスターの中心を見つけます(またはアプローチb.が使用されている場合はモデルに適合します)。次に、他の多くのデータに確率を割り当てる必要があります...新しいデータが存在する場合、意味のある割り当てを行うためにどのアプローチを使用するのが良いかを知りたいです。

次の理由から、 kmeanなどのクラスタリング方法を使用します。

  1. 新しいデータが、混合モデルの作成に使用された分布とは異なる分布に由来する場合、割り当てが正しくない可能性があります。

  2. 新しいデータでは、事後確率が変化します。

  3. クラスタリング法は、一種の最適な分離境界を見つけるためにクラスターの分散を最小化します。混合モデルは、データの分散を考慮してモデルを作成します (形成されるクラスターが最適な境界で分離されているかどうかはわかりません)。仕方)。

データに関する詳細情報:

機能は依存していると見なされるべきではありません。Feat_A は身体活動の期間を表します Feat_B は歩数を表します 原則として、活動の期間が長いほど歩数が増えると言えますが、常にそうであるとは限りません。

考えるのを手伝ってください。他にポイントがあれば教えてください..

0 投票する
1 に答える
95 参照

r - R のデータに当てはめられた複数のガウス分布から情報を抽出するにはどうすればよいですか?

.ab1 ファイルから抽出したシーケンス実行情報 (4 ヌクレオチド) があります。4 つのマルチピーク ガウス分布をデータに適合させたい (4 つの異なるヌクレオチドに対応) データは 5 つの列 (インデックス列と 4 つのヌクレオチド -A、T、からの読み取りに対応する他の 4 つの列) を持つ csv ファイルです。 G と C.

さらにピークを見つけるために、次を使用しました

特定のポイントには複数のピークがあり、複数のガウス分布のピークを持つ位置を見つけるコードを記述する必要があります (複数のヌクレオチドからのシグナルに対応)。R でそれを行う方法はありますか?

0 投票する
0 に答える
780 参照

winbugs - Winbugs「未定義の実際の結果」

R2 Winbugs を使用して、調査に関する実際のデータを使用して、 Kery et al 2009 (論文はこちら) に従って、オープン母集団二項混合モデルを実行しています。

最初に試したとき、私は自分で作った豊富さ (X1) に対して 1 つの共変量のみを使用しています。モデルはコンパイルおよび実行されますが、「未定義の実際の結果」が得られます。

可能であれば、これを修正する方法を見つけるのを手伝ってくれる人はいますか?

マイカウントデータはこちらからダウンロードできます

コードは次のとおりです。

みなさん、どうもありがとうございました!

PS。実際の共変量 X1 でも試しましたが、同じエラーが発生します。