問題タブ [expectation-maximization]

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 投票する
2 に答える
2624 参照

python - python共分散が最小のガウス混合モデル(GMM)で加重データをフィッティング

Python を使用して、ガウス混合モデルを一連の加重データ ポイントに適合させたいと考えています。

私は sklearn.mixture.GMM() を試しましたが、これはすべてのデータ ポイントを均等に重み付けするという事実を除いて正常に動作します。この方法でデータポイントに重みを割り当てる方法を知っている人はいますか? 「重みを増やす」ためにデータポイントを数回使用しようとしましたが、これは大規模なデータセットには効果がないようです。

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

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

上記の方法を操作する方法を知っている人はいますか、またはGMMに加重データを適合させるための別の方法を知っている人はいますか?

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

spss - SPSSで期待値最大化アルゴリズムを使用して初期値推定を作成するには?

EM アルゴリズムを使用して、spss で初期値を作成したいと考えています。

spss で欠損値分析を使用し、EM も選択しました。また、反復の最大回数として 500 回を選択しましたが、spss を実行した後、1 セットのデータしか得られません! しかし、EM平均と共分散も得ました。

私の質問は、これらの数値を使用して初期値を作成し、代入モデルを実行できるようにする方法です。

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

matlab - 期待値最大化アルゴリズム matlab のメモリ不足エラー

matlab で期待値最大化アルゴリズムを実装しています。アルゴリズムは 214096 x 2 データ行列で動作しており、確率の計算中に ( 214096 x 2 ) * (2 x 2) * ( 2 x 214096 ) 行列が乗算され、matlab でメモリ不足のエラーが発生します。この問題を解決する方法はありますか?

方程式

Matlab コード:

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

python-3.x - 期待値最大化アルゴリズム (ガウス混合モデル): ValueError: 入力行列は正の半正定値でなければなりません

データセット data=[[x,y],...] に期待値最大化アルゴリズム (ガウス混合モデル) を実装しようとしています。mv_norm.pdf(data, mean,cov)関数を使用してクラスターの責任を計算しています。しかし、6〜7回の反復後に共分散(cov行列)の新しい値を計算した後、cov行列は特異になっています。つまり、covの行列式は0(非常に小さい値)であるため、エラーが発生しています

ValueError: 入力行列は半正定値でなければなりません

np.linalg.LinAlgError('singular matrix') を上げる

誰かがこれに対する解決策を提案できますか?

最初に、予想されるクラスター数が 3 であるため、各クラスター共分散に [[3,0],[0,3]] を渡しました。

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

missing-data - 単変量 EM アルゴリズムを使用した通常の代入

不足しているデータを EM アルゴリズムで埋める方法の例が必要です。データは、株価の毎日の相対変化として、正規分布の一変量サンプルを想定しています。私はいくつかの文献検索を行いましたが、これに関する例はほとんど見つかりませんでした。欠損データの代入への EM アルゴリズムの適用について話すとき、彼らは通常、多変量の場合の例を挙げているようです。これらは、ほとんどの論文/講義ノートから私が目にするケースです。

今、人々が一変量サンプルの欠損データを EM アルゴリズムで埋めるかどうか、また EM アルゴリズムの代入がこの場合の平均代入と同等であるかどうか疑問に思っています。いくつかの洞察を共有したり、このトピックに関する参考文献へのリンクを提供していただければ幸いです。

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

java - 期待値最大化アルゴリズムのエンコード レコード サンプル

まず、私はデータ サイエンスのバックグラウンドを持たないプログラマーなので、統計に関する実用的な知識はかなり限られています。

内部データセット全体でレコードを照合するためのエンティティ マッチング ツールを作成しています。これらのドキュメント*に記載されている確率的マッチング手法を使用したいと考えています。期待値の最大化 (EM) を使用した一致/不一致の重みの導出を除いて、この手法がどのように機能し、どのように適用するかについてよく理解しています。

double[][]具体的には、レコードペアを必要な形式にエンコードする方法が不明です

私が利用できる EM 実装は、Apache Common Math MultivariateNormalMixtureExpectationMaximizationです。

具体的な例を次に示します。会社のレコードを照合します。

会社には と の 2 つのフィールドがname (string)ありcountry (enum)、EM を使用して m と u の確率的重みを生成したいと考えています。double[][]EM にフィードする各フィールドのデータセットを作成するにはどうすればよいですか?

の場合name、それは文字列なので、いくつかの文字列類似方法 (編集距離、音声インデックスなど、詳細はここでは関係ありません) を使用して、おおよその一致/不一致があります。

の場合country、私のデータは正規化されているため、一致は完全に一致した場合にのみ発生します。ただし、特定の国は過小評価されています。したがって、過小評価されている国のレコードは、過大評価されている国のレコードよりも高い重みを持つ必要があります。

  1. double[]内側の平均/表現の値は正確には何ですか?
  2. いくつのエントリ/列が必要ですか?
  3. レコードを にエンコードするにはどうすればよいdouble[]ですか?

* EM を使用した確率的マッチング手法を説明するドキュメント

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

k-means - 一般化された EM アルゴリズムの特殊なケースとしての K-means

データセットを使用して、EM を使用して 2 つのクラスターを作成し、次に K-means を使用しています。K-means と EM Algorithm を別々に実装しました。現在、EM アルゴリズムの実装から k-means を導出して、クラスタリングを実行しようとしています。2つの質問があります。

  1. K-means は、一般化された EM アルゴリズムの特殊なケースと見なされます。しかし、EM アルゴリズムから k-means を導出するには、どのような仮定を行う必要があるでしょうか?

  2. また、コーディングの観点から、EM アルゴリズムの実装にどのような変更を加えて、k-means アルゴリズムとまったく同じように動作するようにする必要がありますか? 両方のクラスター間で同じ共分散行列を共有する必要があると思います。それは仮定する権利ですか?

これは、k-means を使用して得ているものです。

K-means のクラスタリング

EMを使ったクラスタリングです。

クラスタリング EM