シーケンスデータのセグメンテーションのアルゴリズム


8

長さNのベクトルの大きなシーケンスがあります。これらのベクトルをMセグメントに分割するには、教師なし学習アルゴリズムが必要です。

例えば:

ここに画像の説明を入力してください

K平均法は、異なる場所からの類似した要素を単一のクラスターに入れるため、適切ではありません。

更新:

実際のデータは次のようになります。

ここに画像の説明を入力してください

ここでは、3つのクラスターが表示されます。 [0..50], [50..200], [200..250]

アップデート2:

私は修正されたk-meansを使用して、この許容できる結果を得ました:

ここに画像の説明を入力してください

クラスターの境界: [0, 38, 195, 246]


2
質問の質を改善して適切な回答を得る必要があります。たとえば、すべてのシーケンスは常に同じポイントで変化しますか(例で示したように)?
Kasra Manshaei

実際のデータはもっと複雑です。9次元ベクトルのリストです。メインセクションに画像を追加します。
generall

回答:


8

上記の私のコメントを参照してください、これは私があなたの質問から理解したことによる私の答えです:

ここに画像の説明を入力してくださいdバツ<20dバツ>20

前処理

変化点の正確な位置と正確なセグメント数の間にはトレードオフがあることに注意してください。つまり、元のデータを使用すると正確な変化点が見つかりますが、方法全体はノイズに敏感ですが、平滑化すると最初に信号を確認すると、正確な変化が見つからない場合がありますが、次の図に示すように、ノイズの影響ははるかに少なくなります。

ここに画像の説明を入力してください ここに画像の説明を入力してください

結論

私の提案は、最初に信号を平滑化し、単純なクラスタリング手法(たとえば、GMMを使用)を使用して、信号内のセグメント数の正確な推定値を見つけることです。この情報があれば、前の部分で見つけたセグメントの数によって制約された変化点を見つけることができます。

それがすべて役に立てば幸いです:)

幸運を!

更新

幸い、データは非常に単純でクリーンです。次元削減アルゴリズム(たとえば、単純なPCA)を強くお勧めします。クラスターの内部構造が明らかになると思います。PCAをデータに適用すると、k-meansをはるかに簡単かつ正確に使用できます。

深刻な(!)ソリューション

あなたのデータによると、異なるセグメントの生成分布は異なることがわかります。これは、時系列をセグメント化する大きなチャンスです。これを参照してください(オリジナルアーカイブその他のソース)。これは、おそらく問題に対する最良かつ最新のソリューションです。このホワイトペーパーの背後にある主なアイデアは、時系列の異なるセグメントが異なる基になる分布によって生成される場合、それらの分布を見つけ、クラスタリングアプローチのグラウンドトゥルースとしてthamを設定して、クラスタを見つけることです。

たとえば、誰かが最初の10分間自転車に乗っていて、2番目の10分間は彼が走っていて、3番目の男性が座っている長いビデオを想定します。このアプローチを使用して、これら3つの異なるセグメント(アクティビティ)をクラスター化できます。


詳細な対応ありがとうございます。上記のように、実際のデータシーケンスにしきい値を使用することはできません。複雑すぎると思います。私はk平均アルゴリズムを変更しようとしています、それはシーケンスの条件を考慮します(要素は2つの隣接するクラスターの1つにのみ属することができます)。ホイールを再発明しないことを願っています。:)
一般的な

1
あなたのデータはそれほど騒々しくなく(つまり複雑ではない)と思います、そしてあなたはしきい値のものに行くことができます。重要なのは、データの印象があるので、監視付きアルゴリズムを使用できるということです。つまり、しきい値を学習しようとします(そして、一般化がうまくいくことを願っています!)。私も素敵な解決策のために私の答えを更新します:)
Kasra Manshaei

興味深いリンクをありがとうございます、私はそれが私の目的に使用できると思いますが、今のところ、私は変更を加えたk平均を使用しています。
一般的な

1
とても良い結果です!スマート移動。私はあなたを誇りに思っています:Dグッドラック!
Kasra Manshaei

1

K平均クラスタリングは、クラスター中心の初期初期化に応じて、極小を与えることが知られています。

ただし、k-meansセグメンテーションは、解決策を見つける際に何も置換しないため、グローバルに解決できると思います。

あなたのコメントから、最終的にはセグメンテーションに到達できたことがわかります。フィードバックをいただけますか?あなたのソリューションは最高のソリューションですか?それとも、十分な解決策で解決しましたか?


初期のmedoids \ centroidsを選択する必要があるため、K平均セグメンテーションでも極小値が得られます。私の現在の解決策は私には十分ですが、それが最良の解決策であるとは言えません。私のソリューションに興味があれば、詳細を共有できます。
generall

実装方法によって異なります。それまでの間、セグメンテーションの場合、多項式時間でグローバルミニマムを見つけることが実行可能であることをいくつかの文献で発見しました。
Nolatar 2016年

0

ちょうど提案として:DBSCANアルゴリズムを使用してみることができます。これは、クラスタリングのK平均よりもはるかによく機能するためです。

それ以外の場合、クラスタリングのために何か新しいことを試し、いくつかの興味深いことを学びたい場合は、永続的な図を通してトポロジーデータ分析を試すことをお勧めします。私はここであなたに素敵な簡単なイントロを残します:)

https://towardsdatascience.com/persistent-homology-with-examples-1974d4b9c3d0

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.