2016-05-20 20 views
1

私は、scikit-learnからガウス混合モデルを使ってセグメント化している画像を持っています。一部の画像にはラベルが付けられていますので、私が使用したいと思う以前の情報があります。私はクラスターの割り当てのいくつかを事前に提供することによって、混合モデルの半監視訓練を実行したいと思います。Pythonで半監視されたガウス混合モデルクラスタリング

Matlabのドキュメントから、Matlabでは初期値を設定できることがわかりました。任意のPythonライブラリ、特にこれを可能にするscikit-learnアプローチがありますか?

答えて

1

標準GMMは半監督形式では機能しません。言及した初期値は、EMアルゴリズムによって更新されるガウス分布の平均ベクトルと共分散行列の初期値です。

簡単なハックは、ラベルに基づいてラベル付きデータをグループ化し、平均ベクトルと共分散行列を個別に見積もり、それらを初期値としてMATLAB関数に渡すことです(scikit-learnでは私は認識している)。うまくいけば、これはあなたのGaussiansを "正しい場所"に配置します。 EMアルゴリズムはそこからこれらのパラメータを調整するためにそこから取得します。

このハックの欠点は、実際のラベル割り当てを尊重することが保証されないため、データポイントに特定のクラスタラベルが割り当てられても、別のラベルに再割り当てされる可能性があります。クラスタ。また、あなたの特徴ベクトルやラベルにノイズがあると、初期のガウス関数が想定していたよりもはるかに広い領域をカバーすることになり、EMアルゴリズムの混乱を招きます。また、特定のクラスタに十分なデータポイントがない場合、推定される共分散行列は単数である可能性があるため、このトリックを完全に破棄します。

、あなたのデータをクラスタ化するGMMを使用することが(例えばのために、あなたもそのガウス分布モデルは、あなたのデータを確実に知る)必須でない限り、おそらくあなただけsemi-supervised methods in scikit-learnを試すことができます。これらは、他のデータポイントとフィーチャの類似性に基づいてラベルを伝播します。しかし、scikit-learnでこれを処理する特別な実装のトリックがない限り、グラフラプラシアン行列をサンプルのペアから構築する必要があるので、これは大きなデータセットを扱うことができるとは思えません。

+0

私が同意する分析をありがとう、これはそれほど助けにならないという考えを支持しているようです。私は基本的にあなたが記述したことをすることを期待していましたが、これは私のアプリケーションにとっては十分かもしれません。間違っている可能性のあるものについては頭をアップしてくれてありがとう。また、すでにscikit-learnで興味深い半教師付きの方法への指針もあります。私はこれをMATLABで見ていきます。あなたが大丈夫だから、これはscikit-learnには存在しないようです。 – avpenn

+0

@ Process7大歓迎です。 – lightalchemist

関連する問題