上記の私のコメントを参照してください、これは私があなたの質問から理解したことによる私の答えです:
dx < − 20dx > 20
前処理
変化点の正確な位置と正確なセグメント数の間にはトレードオフがあることに注意してください。つまり、元のデータを使用すると正確な変化点が見つかりますが、方法全体はノイズに敏感ですが、平滑化すると最初に信号を確認すると、正確な変化が見つからない場合がありますが、次の図に示すように、ノイズの影響ははるかに少なくなります。
結論
私の提案は、最初に信号を平滑化し、単純なクラスタリング手法(たとえば、GMMを使用)を使用して、信号内のセグメント数の正確な推定値を見つけることです。この情報があれば、前の部分で見つけたセグメントの数によって制約された変化点を見つけることができます。
それがすべて役に立てば幸いです:)
幸運を!
更新
幸い、データは非常に単純でクリーンです。次元削減アルゴリズム(たとえば、単純なPCA)を強くお勧めします。クラスターの内部構造が明らかになると思います。PCAをデータに適用すると、k-meansをはるかに簡単かつ正確に使用できます。
深刻な(!)ソリューション
あなたのデータによると、異なるセグメントの生成分布は異なることがわかります。これは、時系列をセグメント化する大きなチャンスです。これを参照してください(オリジナル、アーカイブ、その他のソース)。これは、おそらく問題に対する最良かつ最新のソリューションです。このホワイトペーパーの背後にある主なアイデアは、時系列の異なるセグメントが異なる基になる分布によって生成される場合、それらの分布を見つけ、クラスタリングアプローチのグラウンドトゥルースとしてthamを設定して、クラスタを見つけることです。
たとえば、誰かが最初の10分間自転車に乗っていて、2番目の10分間は彼が走っていて、3番目の男性が座っている長いビデオを想定します。このアプローチを使用して、これら3つの異なるセグメント(アクティビティ)をクラスター化できます。