分類のためにHMMをトレーニングするにはどうすればよいですか?


12

したがって、分類のためにHMMをトレーニングするときの標準的なアプローチは次のとおりであることを理解しています。

  1. データセットを各クラスのデータセットに分けます
  2. クラスごとに1つのHMMをトレーニングする
  3. テストセットで各モデルの尤度を比較して、各ウィンドウを分類します。

しかし、各クラスでHMMをトレーニングするにはどうすればよいですか?1つのクラスに関連するデータを連結するだけですか?しかし、時系列データはシーケンシャルであることを意味していませんか?そして、そうすると、いくつかのデータポイントが連続していないときに連続していると言いますか?

より具体的には、96xTマトリックスであるEEGデータがあります。96個の特徴ベクトルは、異なるチャネルからの異なる周波数のパワースペクトル密度であり、Tは信号の時間の長さです(サンプリングレートで)

これは、実験プロトコル(データにラベルが付けられている)からわかっているウィンドウに分割できるため、クラスごとに96 * tマトリックスのセットを収集できます。ここで、tはTより小さく、各ウィンドウのサイズを示します。

このデータでHMMをトレーニングするにはどうすればよいですか?pmtk3ツールキットを使用しようとしていますが、実際には何でも使用できます-パワースペクトル密度が離散的ではなく連続的であるため、実際の値の観測を処理できなければなりません(デフォルトのMATLABツールボックスは離散観測を使用)。

目的は、EEGデータウィンドウを、ラベル付けされたデータでトレーニングした特定の精神状態に分類できるようにすることです。これは、ベルリンのBCIコンペデータを使用したブレインコンピューターインターフェイスの問題です。


1
、このページのスーツは何が必要?
fxm 14年

どうやら-確認するために試してみます。多項式ではなく、ガウスモデルとガウスモデルの混合を確実に許可します。 そして、複数の観測でモデルをグローバルにトレーニングできるようです 。とにかくPythonの方がはるかに幅広い用途があるので、Pythonを適切に学習することを意味してきました。ありがとう:)
アレックスマクマリー14年

回答:


9

分類にHMMを使用するために説明するアプローチは、実際には、分類したい独立したシーケンスがある設定にのみ適用できます。たとえば、文の感情をポジティブまたはネガティブとして分類している場合、あなたが説明したようにそれぞれに対してHMMを作成できます。私がここで与えた関連する答えを見てください。事後を比較する前に、分類する意味のあるチャンクにシーケンスを分割できるという前提に基づいていることに注意してください。あなたは事実上1つの大きな長さを持っているので、これはあなたの問題には当てはまらないようですT時系列。ここに私がしようとするものがあります。

redditで言及しましたあなたは、クラスごとに単一の状態を割り当てることを躊躇していること。これを試しましたか?あなたが思うほどうまく機能しないかもしれません。この場合、推定問題も大幅に簡単になります。遷移確率の推定は簡単で、基本的に数えるだけです。さらに、観測されたデータと対応するクラスに基づいて、時間的な側面を無視して、各状態の放出確率を適合させることができます。

これが悪い考えだと確信している場合、またはパフォーマンスが低いが生成モデルに固執したい場合は、階層型HMMのようなものを使用できます。たとえば、最上位の状態にクラスを表させ、下位レベルのHMMでクラス内の時間的変動をモデル化できます。1つの大きなHMMを使用して、同様のことを実現することもできます。あなたが持っている場合K クラス、割り当て N 各クラスの状態( N×K フォームのすべて) skk=1K=1N。トレーニング中は、HMMに強制的に、ある時点での状態への遷移に正の確率のみを割り当てる必要があります。t どこ k ラベルに一致する t。私はこれを少し不器用に言ったかもしれないので、私が意味することは明確であると思います。明らかに、これをクラスごとに異なる数の状態を持つように一般化できます。おそらく他のタイプの動的ベイジアンネットワークも使用できます。Kevin Murphyの論文は素晴らしい参考文献です。また、HHMMからHMMへの変換についても説明しています。

最後に、条件付きランダムフィールドのような判別モデルに切り替えることができます。判別モデルを使用すると、より複雑な機能を簡単に組み込むことができ、手元の問題に直接対処することができます(条件付き密度の推定)。これはおそらく私が最初に試すことです。


観測値は連続的であるため、ガウスまたはGMMに適合します。redditで説明したように、これはモデルの能力を制限します。このモデルを使用して、静的モデルと比較して、時間的側面が分類精度にどのように影響するかを確認しています。識別モデルの方が分類に適している可能性があり、マーフィーの論文の一部を読んだことがあります。これは興味深いように思えますが、HMMは私の教授(推奨されていないプロジェクトです)から勧められたので、試してみます。将来的にはEEG / MEG信号をさらに処理したいので、いつか他の方法を試します。:)
アレックスマクマリー14年

1
最後に、sklearnとそのサポートを使用して複数の観測を行いました。正しく機能しているように見えました。コードを掘り下げて、実際にどのように処理されるかを確認する必要があります。
アレックスマクマリー

1
アレックス、あなたが「sklearnとその複数の観測のサポート」と呼ぶものへのリンクまたは例を提供していただけますか?私はこの問題(および複数の観測値が単一のクラスラベルに属することをHMMに「伝える」方法に関連する問題)を長年にわたって扱ってきました。
ルーベヌリス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.